第5章 進程管理及进程间通讯.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文档。上传文档
查看更多
第5章 進程管理及进程间通讯

第5章 进程管理及进程间通讯 ;5.1 Linux 进程和线程 ;Linux操作系统包括三种不同类型的进程,每种类型的进程都有自己的特点和属性。 (1) 交互进程——由shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。 (2) 批处理进程——这种进程和终端没有联系,是一个进程序列。 (3) 监控进程(也称守护进程)——Linux系统启动时启动的进程,并在后台运行。 上述三种进程各有各的作用,使用场合也有所不同。;5.1.1 Linux 进程管理的数据结构 ; 进程在运行过程中,要使用许多计算机资源,例如 CPU、内存、文件等。同时可能会有多个进程使用同一个资源,因此操作系统要跟踪所有的进程及其所使用的系统资源,以便能够管理进程和资源。 在Linux中,每个进程在创建时都会被分配一个数据结构,称为进程控制块(Process Control Block,PCB)。PCB中包含了很多重要的信息,供系统调度和进程本身执行使用,其中最重要的是进程ID(process ID,PID),进程ID也被称作进程标识符,是一个非负的整数,在Linux操作系统中唯一地标志一个进程。在最常使用的i386架构(即PC使用的架构)上,PID的变化范围是一个非负整数0-32767,这也是所有可能取到的进程ID。每个进程的进程ID各不相同。可使用ps命令看看当前系统中有多少进程在运行。除标题外,每一行都代表一个进程。在各列中,PID一列代表了各进程的进程ID,command一列代表了进程的名称或在shell中调用的命令行。 ; Linux 中的每个进程有自己的虚拟地址空间,操作系统的一个最重要的基本管理目的,就是避免进程之间的互相影响。但有时用户也希望能够利用两个或多个进程的功能完成同一任务,为此,Linux 提供许多机制,利用这些机制,进程之间可以进行通讯并共同完成某项任务,这种机制称为“进程间通讯(Interprocess Communication ,IPC)”。信号和管道是常见的两种 IPC 机制,但 Linux 也提供其他 IPC 机制。 一般来说,Linux下的进程包含以下几个关键要素:有一段可执行程序;有专用的系统堆栈空间;内核中有它的控制块(进程控制块),描述进程所占用的资源,这样,进程才能接受内核的调度;具有独立的存储空间。 ; Linux 内核利用一个数据结构task_struct来代表一个进程,代表进程的数据结构指针形成了一个 task 数组(在Linux 中,任务和进程是两个相同的术语),这种指针数组有时也成为指针向量。这个数组的大小默认为 512,表明在 Linux 系统中能够同时运行的进程最多可有 512。当建立新进程的时候,Linux 为新的进程分配一个 task_struct 结构,然后将指针保存在 task 数组中。task_struct 结构中包含了许多字段,按照字段功能,可分成如下几类: ;(1) 标识号。系统通过进程标识号唯一识别一个进程,但进程标识号并不是进程对应的 task_struct 结构指针在 task 数组中的索引号。另外,一个进程还有自己的用户和组标识号,系统通过这两个标识号判断进程对文件或设备的访问权。 (2) 状态信息。一个 Linux 进程可有如下几种状态:运行、等待、停止和僵死。 (3) 调度信息。调度程序利用该信息完成进程之间的切换。 (4) 有关进程间通讯的信息。系统利用这一信息实现进程间的通讯。 (5) 进程链信息。在 Linux 系统中,除初始化进程之外,任何一个进程都具有父进程。每个进程都是从父进程中“克隆”出来的。进程链则包含进程的父进程指针、和该进程具有相同父进程的兄弟进程指针以及进程的子进程指针。另外,Linux 利用一个双向链表记录系统中所有的进程,这个双向链表的根就是 init 进程。利用这个链表中的信息,内核可以很容易地找到某个进程。;(6) 时间和定时器。系统在这些字段中保存进程的建立时间,以及在其生命周期中所花费的 CPU 时间,这两个时间均以 jiffies 为单位。该时间由两部分组成,一是进程在用户模式下花费的时间,二是进程在系统模式下花的时间。Linux 也支持和进程相关的定时器,应用程序可通过系统调用建立定时器,当定时器到期,操作系统会向该进程发送 sigalrm信号。 (7) 文件系统信息。进程可以打开文件系统中的文件,系统需要对这些文件进行跟踪。系统使用这类字段记录进程所打开的文件描述符信息。另外,还包含指向虚拟文件系统(Virtual File Systems,VFS)两个索引节点的指针,这两个索引节点分别是进程的主目录以及进程的当前目录。

文档评论(0)

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

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

1亿VIP精品文档

相关文档