第三章进程管理4.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章进程管理4

复习 进程间的制约关系有哪两种? 什么是临界区 什么是互斥? 信号量的含义? P原语用于何时?V原语用于何时? 第三章 进程管理 *进程同步 进程间的制约关系 1)间接制约:进行竞争--独占分配到的部分或全部共享资源,“互斥”。进程间要通过某种中介发生联系,是无意识安排的,可发生在相关进程之间,也可发生在无关进程之间 2)直接制约:进行协作--等待来自其他进程的信息,“同步”。进程间的相互联系是有意识的安排的,直接作用只发生在相关进程间 进程同步 指系统中一些进程需要相互合作,共同完成一项任务。 具体说,一个进程运行到某一点时要求另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态 进程同步 例1:计算进程Pc 和打印进程 Pp 合作完成计算和打印任务。两个进程共同使用同一个缓冲区Buf, Pc反复把数据放入Buf, Pp反复将Buf中的数据打印输出。 进程同步 不采取任何制约措施: 进程同步 缺点: 由于反复测试语句的存在,造成CPU时间的极大浪费,这是操作系统设计要求不允许的 解决: 直接制约的进程互相给对方进程发送信号,告之执行条件已具备 进程同步 例1:进程Pc 和 Pp 合作完成计算和打印任务 计算进程Pc将计算结果放入Buf后,给打印进程Pp发送“非空”信号 打印进程Pp将Buf中数据清除后,给计算进程Pc发送“空”信号 进程同步 进程同步 同步:在异步环境(执行起始时间随机,速度独立)下的一组并发进程,因直接制约互相发送消息而进行合作、互相等待,使得各进程按一定的速度执行的过程 合作进程:具有同步关系的一组并发进程 消息(事件):合作进程间互相发送的信号 用P、V原语实现进程同步 可把各进程之前发送的消息作为信号量看待 私用信号量:只与制约进程及被制约进程有关,用于同步 公用信号量:与整组并发进程有关,用于互斥 用P、V原语实现进程同步 例1:进程Pc 和 Pp 合作完成计算和打印任务 解:1)设私用信号量Bufempty表示buf 空,Buffull表示buf满 2)设初始值Bufempty=1, Buffull=0,表示当前缓冲区空 用P、V原语实现进程同步 3)描述: Pc: A: P(Bufempty); 计算 buf ? 计算结果 V(Buffull); Goto A; 用P、V原语实现进程同步 例2:设公共汽车上,司机和售票员的活动如下。在汽车不断到站停车、行驶过程中,这两个活动有什么同步关系?用P、V原语实现他们的同步。 用P、V原语实现进程同步 解:1)设私用信号量close表示售票员是否关门,stop表示车辆是否停止到站 2)设初始值close=1,stop=0,表示车在运行 3)描述: 用P、V原语实现进程同步 例3:两个同步进程共同使用多个缓冲区的情况 用P、V原语实现进程同步 解:1)设私有信号量Bufempty表示空缓冲区的个数,Buffull表示满缓冲区的个数 2)设初始值Bufempty=n, Buffull=0 用P、V原语实现进程同步 3)描述: Pa:deposit(data): Pb:remove(data) A: local x B:local x P(Bufempty); P(Buffull); 选择一个空Buf(x); 选择一个满Buf(x) Buf (x)? data data ? Buf(x) Buf(x)置满标记 Buf(x)置空标记 V(Buffull); V(Bufempty); Goto A; Goto B; 用P、V原语实现进程同步 注意: 1)Bufempty初始值为n,表示初始时n个缓冲区均为空 2)x是缓冲区号 3)Pa中的Buf(x)置满标记是为了按FIFO方式选择缓冲区时可知Buf(x)是满的,Pb中的Buf(x)置空标记的作用类似。都是便于搜索和区别空缓冲区和非空缓冲区 用P、V原语实现进程同步 例4:两个进程PA和PB通过两个FIFO缓冲区队列连接(设缓冲区队列的缓冲区个数都为n个),每个缓冲区长度等于传送消息长度。进程PA和PB之间的通信满足如下条

文档评论(0)

***** + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档