第12章 进程操作.pptVIP

  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文档。上传文档
查看更多
第12章 进程操作

第12章 进程操作 进程的概念 Linux进程 进程创建与控制 守护进程 12.1 进程的概念 进程(Process)是指操作系统中被加载到内存中的、正在运行的应用程序实例。它最初是随着批处理系统和分时系统的出现而引入的,因为在这些系统中,有多个并发执行的程序,仍然使用程序这个静态的概念已经无法描述系统中程序动态变化的过程了。 12.1.1 进程的组成 进程主要由程序、数据以及进程控制块(PCB)3个部分组成,下面分别介绍。 1.程序 2.数据 3.进程控制块 12.1.2 进程的状态 在多任务系统中,进程在CPU上交替运行,状态不断改变,如图12-1所示。 12.2 Linux进程 Linux系统中,每个进程由一个task_struct数据结构来描述,即前面提到的进程控制块PCB。task_struct包含了进程管理和控制的所有信息,它的定义在头文件linux/sched.h之中。 12.2.1 进程的状态 Linux系统中的进程主要有如下几种状态: 1.运行状态 2.等待状态 3.暂停状态 4.僵死状态 12.2.2 进程调度信息 task_struct结构中包含了进程调度相关的信息,调度程序利用这些信息来判定系统中哪个进程最迫切需要运行,并结合进程的状态等信息以保证系统运转的公平和高效。这部分信息主要包括进程的类别、进程的优先级以及进程的调度策略等。 12.2.3 进程的标识符 进程的标识符 用户标识符(UID)和组标识符(GID) 有效用户标识符(EUID)和有效组标识符(EGID) 文件系统用户标识符(FSUID)和文件系统组标识符(FSGID) 备份用户标识符(SUID)和备份组标识符(SGID) 12.2.4 进程间通信相关信息 多个进程之间要协调进行以完成一项任务时,必须通过进程间的通信来实现数据的交换。Linux支持多种不同形式的通信机制,既支持典型的Unix通信机制,例如信号(Signals)、管道(Pipes),也支持System V通信机制,如共享内存(Shared Memory)、信号量和消息队列(Message Queues)。这部分内容我们将在下一章中进行详细讨论。 12.2.5 进程链接信息 Linux系统中,所有进程都是相互关联的,没有哪个进程是独立运行的。除了系统的初始化进程外,所有进程都有一个父进程。从某种意义上讲,Linux系统中的新进程并不是被创建的,而是被复制的,即新进行是其父进程的一个克隆版本。每个进程的task_struct结构都包含有指向其父进程、兄弟进程以及子进程的指针。 12.2.6 时间和定时器信息 一个进程从创建到终止称为该进程的生存期。进程的创建时间以及在其生存期内消耗的CPU时间,内核都需要进行跟踪记录。进程耗费的CPU时间由两部分组成:一是在用户模式(或称为用户态)下耗费的时间,二是在系统模式(或称为系统态)下耗费的时间。 实时定时器(ITIMER_REAL) 虚拟定时器(ITIMER_VIRTUAL) Profile定时器(ITIMER_PROF) 12.2.7 文件系统信息 进程可以打开或关闭文件,文件属于系统资源,Linux内核需要对进程使用文件的情况进行记录。task_struct结构中使用了两个成员来描述进程所使用的文件系统相关信息,即fs_struct和files_struct。 12.2.8 其他信息 task_struct结构是进程存在的惟一标志,系统内核通过该结构来实现进程的各种操作。除了上面介绍的内容外,task_struct结构中还包含虚拟内存信息、页面管理信息、对称多处理器(SMP)信息以及上下文信息等,这里就不再逐一介绍。 12.3 进程创建与控制 Linux系统下用于新进程创建的函数主要有4个:fork函数、vfork函数、system函数以及popen函数。进程终止有多种方式,这里主要介绍exit函数和_exit函数。本小节的最后将介绍如果获取进程的相关信息。 12.3.1 fork函数 pid_t fork(void); fork函数复制当前进程的内容,产生一个新的进程,调用fork函数的进程称为父进程,所产生的新进程称为子进程。子进程会继承父进程的一切特性,但是它拥有自己的数据段。也就是说,尽管子进程改变了所属的变量,但不会影响到父进程的变量值。 12.3.1 fork函数 pid_t wait (int *status); pid_t waitpid(pid_t pid, int * status, int options); WNOHANG、WUNTRACED 子进程的结束状态值是一个整数,特定的位表示特定的信息。系统在sys/wait.h中定义了几个宏,用于对该值进行判别 WIFEXIT

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档