15章进程控制.pptVIP

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

第15章 进程控制 Linux系统是多任务操作系统,可同时进行多个程序完成多项工作。进程是处于活动状态的程序,在操作系统的管理下,所有进程共享计算机中的硬件资源。进程作为系统运行时的基本逻辑成员,不仅作为独立个体运行在系统上,而且还将相互竞争系统资源。了解进程的本质对于理解、描述和设计系统软件有着极为重要的意义,了解进程的活动状态也有利于设计复杂的程序。 15.1 进程的基本概念 在讨论进程的基本概念之前,我们首先介绍两种查看Linux系统中进程信息的方法。 15.1.1 进程状态和状态转换 进程在生存周期中呈现出各种状态及状态的转换,这些信息反映了进程的获取系统资源的情况。Linux系统的进程状态模型见表15.1所示。 15.1.1 进程状态和状态转换 1.子进程被Linux内核调入CPU执行的过程 15.1.1 进程状态和状态转换 2.子进程进入睡眠状态 15.1.1 进程状态和状态转换 3.子进程结束 15.1.2 进程控制 ?在Linux系统中,用户创建子进程的惟一方法就是使用fork系统调用。fork系统调用的流程如图15.5所示。 15.1.3 进程调度 Linux系统进程调度包括两个概念,分别是调度时机和调度算法。调度时机指进程何时被调度上CPU执行。例如,转变为睡眠状态的进程将获得较高的优先级,一但所需要的资源被释放,该进程可以立即被调度上CPU执行。被抢占的进程也将获得一个较高的优先级,抢占其CPU时钟周期的进程一旦转为用户状态,被抢占的进程立即转为内核状态。调度算法所关心的内容就是如何为进程分配优先级。 15.2 进程基本操作 本节将通过介绍关于进程操作的系统调用函数来讲解进程的基本操作方法,其中包括fork调用、exec调用、exit调用、wait调用和sleep调用,相关函数被定义在系统调用库“unistd.h”中。通过本节,我们将了解如何产生子进程,进程如何改变它的执行映像,父子进程的同步等操作。由此也了解到一些并行程序的基本概念与如何设计简单的并行程序。 15.2.1 fork系统调用 fork系统调用有两个函数,分别是fork()函数和vfork()函数。fork系统调用可创建一个子进程,该调用的一般形式是: pid_t fork(void); pid_t vfork(void); 15.2.2 exec系统调用 系统调用exec以新进程替代原有进程,但是PID保持不变。因此可以认为,exec系统调用实际上没有创建新进程,只是替换了原有进程上下文的内容。 15.2.3 exit系统调用 系统调用exit的功能是终止发出调用的进程,它包含两个函数,分别是_exit()函数和exit函数。它们的一般形式如下: void _exit(int status); void exit(int status); 系统调用_exit()立即终止发出调用的进程。所有属于该进程的文件描述符都关闭。如果该进程拥有子进程,那么父子进程关系被转到init进程上。被结束的进程将收到来自子进程的僵死信号SIGCHLD。如果被结束的进程在控制台或终端上运行,shell程序将收到SIGHUP信号。 15.2.4 wait系统调用 系统调用wait用于父进程与子进程同步。父进程调用后,将进入睡眠状态,直到子进程结束或者父进程在被其他进程终止。使用wait系统调用需要包含头文件“sys/types.h”和“sys/wait.h”。 15.2.5 sleep函数调用 系统调用sleep用来使进程主动进入睡眠状态,该函数的一般形式是: sleep(秒数); 执行该系统调用后,进程将进入睡眠状态,直到指定的秒数已到。正常情况下,该调用的返回值为0,若是因为被信号所唤醒,则返回值为原始秒数减去已睡眠秒数的差。 15.3 进程的特殊操作 上一节介绍了有关进程的一些基本操作,如进程的产生、进程的终止、进程执行映像的改变、等待子进程终止等。本节要介绍一些有关进程的特殊操作。有了这些操作,就使得进程的编程更加完善,能编制更为实用的程序。主要的内容有得到关于进程的各种ID、对进程的设置用户ID、改变进程的工作目录、根交换和改变进程的优先级等操作。 15. 3.1 获得进程ID 获得运行进程的GID可使用getgid()函数,获得运行进程的EGID可使用getegid()函数。标识GID与EGID的不同是由于执行文件设置set-gid位引起的。 注意:GID和PGID的区别是,一般执行该进程的用户的组ID就是该进程的GID,如果该执行文件设置了set_gid位,则文件所群组ID就是该进程的GID。一个进程在shell下执行,shell程序就将该进程的PID作为该进程组PGID,从该进程派生的子进程都拥有父进程

文档评论(0)

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

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

1亿VIP精品文档

相关文档