- 1、本文档共131页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[高等教育]第 5 章 进程管理及进程间通讯
第5章 进程管理及进程间通讯 本章介绍了Linux 进程的管理、调度以及 Linux 系统支持的进程间通讯机制,并对某些通信手段的内部实现机制进行了分析。本章还讨论了 Linux 核心的一些基本任务和机制,将Linux内核中为使内核其他部分能有效工作的用于同步的几种机制集中起来分析,强调了它们之间在实现和使用上的不同。 5.1 Linux 进程和线程 一个大型的应用系统,往往需要众多进程协作。进程是操作系统理论的核心与基础,许多概念都和进程相关。进程的标准定义是:进程是可并发执行的程序在一个数据集合上的运行过程。换句话说,在自身的虚拟地址空间运行的一个单独的程序称作一个进程。在Linux系统中,当一个程序开始执行后,在开始执行到执行完毕退出这段时间里,它在内存中的部分就被称作一个进程。进程与程序是有区别的,程序只是一些预先设定好的代码和数据,进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。程序是静态的,而进程是动态的。一个程序可以启动多个进程。和进程联系在一起的不仅有进程的指令和数据,而且还有当前的指令指针、所有的 CPU 寄存器以及用来保存临时数据的堆栈等,所有这些都随着程序指令的执行在变化。 Linux操作系统包括三种不同类型的进程,每种类型的进程都有自己的特点和属性。 (1) 交互进程——由shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。 (2) 批处理进程——这种进程和终端没有联系,是一个进程序列。 (3) 监控进程(也称守护进程)——Linux系统启动时启动的进程,并在后台运行。 上述三种进程各有各的作用,使用场合也有所不同。 5.1.1 Linux 进程管理的数据结构 Linux是一个多任务的操作系统,在同一个时间内,可以有多个进程同时执行。由于单CPU计算机实际上在一个时间片断内只能执行一条指令,Linux使用了一种称为“进程调度(process scheduling)”的机制。首先为每个进程指派一定的运行时间,然后依照某种规则,从众多进程中挑选一个投入运行,其他的进程暂时等待,当正在运行的那个进程时间耗尽,或执行完毕退出,或因某种原因暂停,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 数组中。ta
您可能关注的文档
- [高等教育]我的家乡盘县.ppt
- [高等教育]报关精品课件第二章.ppt
- [高等教育]抽样设计1-抽样方案、总体和样本.ppt
- [高等教育]抗精神病药物的遗传药理学.ppt
- [高等教育]接口第6章-串行通信接口8251.ppt
- [高等教育]推销技巧深化.ppt
- [高等教育]插值.ppt
- [高等教育]政务学院就业指导课第四讲:就业权益与维护.ppt
- [高等教育]教案书写指引.doc
- [高等教育]教育学教育学概论 第四章 教育目的与教育内容.ppt
- 中国行业标准 DB/T 100-2024区域性地震安全性评价.pdf
- 《GM/T 0138-2024C-V2X车联网证书策略与认证业务声明框架》.pdf
- GM/T 0138-2024C-V2X车联网证书策略与认证业务声明框架.pdf
- DB/T 100-2024区域性地震安全性评价.pdf
- 中国行业标准 GM/T 0138-2024C-V2X车联网证书策略与认证业务声明框架.pdf
- 校园周边书店阅读氛围对初中生阅读素养提升的影响研究教学研究课题报告.docx
- 初中校园餐饮卫生监管与食品安全教育创新模式研究教学研究课题报告.docx
- 《文化遗产保护与旅游开发平衡机制的法律法规完善研究》教学研究课题报告.docx
- 《农作物病虫害生物防治技术的经济效益与社会影响分析》教学研究课题报告.docx
- 1 剖宫产术后子宫瘢痕憩室治疗中的并发症预防与护理措施教学研究课题报告.docx
文档评论(0)