第7章进程控制与进程间通信演示文稿.PPTVIP

第7章进程控制与进程间通信演示文稿.PPT

  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文档。上传文档
查看更多
第7章进程控制与进程间通信演示文稿.PPT

本章小节 7.1 进程控制 7.2 信号 7.3 进程与文件描述符 7.4 消息队列 7.5 信号量 7.6 共享内存 7.7 信号量与共享内存使用举例 7.8 内存映射文件I/O 7.9 文件和记录的锁定 7.1 进程控制 7.1.1 进程的基本概念 7.1.2 fork:创建新进程 7.1.3 exec:重新初始化进程 7.1.4 wait:等待子进程运行结束 7.1.5 xsh0.c:最简单的shell 7.1.6 vfork和_exit 7.1.7 system:在程序中运行一个命令 7.1.8 ps:列出进程的状态 7.1.1 进程的基本概念 进程与程序 程序与进程 程序是指令和数据的集合,存放在磁盘上的一个普通文件里,有执行权限,内容符合系统要求的格式 进程是程序的一次执行。进程在内存中有相对独立的空间和存贮结构。多个进程可以同时运行,内核的进程管理模块负责进程的调度与维护 程序用于初始化进程的指令段和用户数据段,进程运行时磁盘上的程序文件不可修改或删除。 尽管多个进程可由同一程序初始化得到,甚至可以共享指令段以节省内存,但逻辑上它们是相互独立的。 进程的组成部分 进程由四部分组成:即指令段,数据段,堆栈段和系统数据段,前3者位于进程独立私有的逻辑地址空间中,后者在内核空间中。 指令段(Text):程序的指令代码,包括主/子程序编译后的指令代码,以及调用的库函数代码。函数调用可采用静态和动态连接模式。指令段是只读的且大小固定不变 用户数据段:包括全局变量,静态变量和字符串常数。数据段允许增大和缩小,通过系统调用和内存管理库函数可实现内存的动态分配 进程的组成部分 用户堆栈段 程序执行时为实现函数的调用所需要的堆栈空间。内容包括(1) 子程序返回地址;(2)传递给被调函数的参数(3)函数体内部定义的变量(静态变量除外);(4)main函数得到的命令行参数以及环境参数,存放在堆栈的最底部。 系统数据段 系统数据段是内核维护的进程数据,每个进程对应一套,包括页表和进程控制块PCB。 进程的组成部分 页表和进程控制块PCB 页表:内存管理单元MMU所需要的数据结构,实现进程逻辑地址到物理内存地址转换,页表中也含有内存保护和实现虚拟内存所需要的信息。 PCB:中记录了进程调度需要的一些重要信息以及进程占用的资源状况。PCB中含有进程的许多属性 [图7-1] 进程逻辑地址空间的布局 进程的系统数据 在UNIX内核中,含有进程的若干数据,包括: 页表 进程状态,优先级信息 核心堆栈 当前目录(记录了当前目录的i-节点),根目录 打开的文件描述符表 umask值 进程PID,PPID 进程主的实际UID/GID,有效UID/GID 进程组组号 user结构和proc结构 进程PCB由user结构和proc结构两部分组成 user结构(约5000字节):在sys/user.h中定义,是进程运行时才需要的数据,其中核心态堆栈占用了较多空间 proc结构(约300字节):在sys/proc.h中定义,存放进程不运行时也需要的管理信息 注意:进程不能直接存取和修改它的系统数据,必须通过系统调用来访问或修改。例如:chdir,umask,open,close,setpgrp, getpid, getppid 【例7-1】 使用size命令观察可执行程序文件的指令段和数据段大小 进程的状态和调度 进程状态 进程创建之后,有运行态和睡眠态(也叫阻塞态/等待态/挂起态等)。内核总是在分时处理运行态的进程,进程在睡眠时,不占用CPU时间 调度优先级和进程状态的转换 内核将可运行进程按优先级调度。进程的优先级和进程状态总在不停地发生变化。睡眠进程会被叫醒,被赋以高优先级后加入调度队列,而运行态的进程在进入某些系统调用后会睡眠等待。 进程状态的转换示例 进程转换 【例7-2】函数scanf执行期间进程状态的变化和系统的活动步骤 忙等待问题 【例7-5】监视一个文件,如果文件被其他进程追加了内容,就把追加的内容打印出来 time:进程执行的时间 进程执行时间:time command 包括实际时间和CPU时间(用户时间和系统时间),用time或vstat命令可获取进程的执行时间 注意:用户时间与系统时间之和一般不等于实际时间,因进程可能睡眠,或等待调度运行。 【例7-3】 使用time命令统计执行一个命令所占用的CPU时间 【例7-4】 使用vmstat命令监视整个系统对CPU的占用情况 系统调用times() 系统调用times() 可以使用这个系统调用获取当前进程的用户CPU时间,系统CPU时间。还可以得到已经运行结束的子进程占用过的CPU时间,返回值是系统年龄。 clock_t times(struct tms

文档评论(0)

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

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

1亿VIP精品文档

相关文档