进程阅读笔记(李秀艳).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程阅读笔记(李秀艳)

1.进程的定义 a.进程是一个抽象实体,当它执行某个任务时,将要分配和释放各种资源 进程是可以并行执行的计算部分 进程是一个程序的一次执行的 过程。 b.它是程序执行和资源管理的最小单位。 d.进程是 Linux 系统的基本调度单位 2.进程控制块包含了进程的描述信息、控制信息以及资 源信息,它是进程的一个静态描述。 在 Linux 中,进程控制块中的每一项都是一个 task_struct 结构,它是在 include/linux/sched.h 中定义的。 3.进程的标识 a.在 Linux 中最主要的进程标识有进程号(PID,Process Idenity Number)和它的父进程号 (PPID,parent process ID)。其中 PID 惟一地标识一个进程。PID 和 PPID 都是非零的正整数。 b.在 Linux 中获得当前进程的 PID 和 PPID 的系统调用函数为 getpid 和 getppid,通常程序 获得当前进程的 PID 和 PPID 可以将其写入日志文件以做备份。 4.进程运行的状态 进程是程序的执行过程,根据它的生命期可以划分成 3 种状态。 ? 执行态:该进程正在,即进程正在占用 CPU。 ? 就绪态:进程已经具备执行的一切条件,正在等待分配 CPU 的处理时间片。 ? 等待态:进程不能使用 CPU,若等待事件发生则可将其唤醒。 5,Linux 下的进程结构 : Linux 系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。 Linux 中的进程包含 3 个段,分别为“数据段”“代码段”和“堆栈段” ? “数据段”存放的是全局变量、常数以及动态数据分配的数据空间(如 malloc 函数 取得的空间)等。 ? “代码段”存放的是程序代码的数据。 ? “堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量 Linux 下进程的模式 : 用户模式和内核模式 6.Linux 下的进程管理: a.启动进程: 手工启动:手工启动进程又可分为前台启动和后台启动。 调度启动:使用调度启动进程有几个常用的命令,如 at 命令在指定时刻执行相关进程,cron 命令可 以自动周期性地执行相关进程, b.调度进程:调度进程包括对进程的中断操作、改变优先级、查看进程状态等 7.Linux 进程控制编程: a.进程创建 1.fork() :在 Linux 中创建一个新进程的惟一方法是使用 fork 函数,它执行一次却返回两个值 说 明:fork 函数用于从已存在进程中创建一个新进程。新进程称为子进程,而原进程称为父进程 这两个分别带回它们各自的返回值,其中父进程的返回值是子进程的进程号,而子进程 则返回 0。因此,可以通过返回值来判定该进程是父进程还是子进程。 (2)fork 函数语法 #include sys/types.h // 提供类型 pid_t 的定义所需头文件 #include unistd.h 函数原型 : pid_t fork(void) 函数返回值 : 0:子进程 子进程 ID(大于 0 的整数):父进程 ?1:出错 2.exec 函数族: exec 函数族就提供了一个在进程中启动另一个程序执行的 方法。 它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据 段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执行文件既可以是二进制文件,也可以是 Linux 下任何可执行的 脚本文件。 (4)exec 函数族使用注意点 在使用 exec 函数族时,一定要加上错误判断语句。因为 exec 很容易执行失败,其中最 常见的原因有: ? 找不到文件或路径,此时 errno 被设置为 ENOENT; ? 数组 argv 和 envp 忘记用 NULL 结束,此时 errno 被设置为 EFAULT; ? 没有对应可执行文件的运行权限,此时 errno 被设置为 EACCES。 3.exit 和_exit xit 和_exit 函数都是用来终止进程的。当程序执行到 exit 或_exit 时,进程会无条件地停 止剩下的所有操作,清除包括 PCB 在内的各种数据结构,并终止本进程的运行 区别:_exit()函数的作用是:直接使进程停止运行,清除其使用的内存空间, 并清除其在内核中的各种数据结构;exit()函数则在这些基础上作了一些包装,在执行退出之 前

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档