《操作系统原理》第三章进程间的并发控制和死锁.pptVIP

《操作系统原理》第三章进程间的并发控制和死锁.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文档。上传文档
查看更多
第三章进程之间的并发控制和死锁;进程通信;1、各并发进程对资源的共享 互斥关系:通过共享资源而使进程之间产生的关系叫间接制约关系,又叫互斥关系。可用“进程—资源—进程”来描述。 例:进程P1和P2在运行中都要使用打印机,为了使各进程输出的完整性,打印机的使用必须独占。一旦系统将打印机分配给进程P1,那么进程P2必须等待,等待P1使用完打印机并释放后,才能使用。;2、系统中存在若干协作进程 同步关系:通常,一个用户作业涉及一组并发进程(输入、计算和输出进程),这些进程须相互协作完成这项任务。 在运行过程中,这些进程可能要在某些同步点上等待协作者发来信息后才能继续运行。进程之间的这种制约关系叫直接制约关系。又叫同步关系。可用“进程—进程”来描述 ;;一、进程之间的互斥;程序1 Y=Y+1 output ; 为了正确而有效地使用临界资源,系统中的并发进程需要遵循如下四个准则: 空闲让进-无进程在临界区就允许进入 忙则等待-有进程在临界区,则等待 有限等待-多进程要求进入临界区是,应该让某一个进入,而不能无限等待都不让进 让权等待-等待的进程必须释放CPU;1、关中断;2、lock, unlock 在原语里设置一个公共变量代表临界资源的状态。 x= 使用临界资源必须做如下三步: 1、检查锁的设置 2、进入临界区,访问临界区 3、释放临界资源,开锁;锁机制框图;三、进程之间的同步;四、信号量;对信号量S的操作只允许执行P、V操作。其中P/V操作由原语组成,执行过程中不可分割。;;1、利用信号量实现进程之间的互斥;P/V操作实现进程间互斥;;2、利用信号量实现进程之间的同步;P/V操作实现进程间同步; 在打印进程尚未把缓冲区的计算结果打印完之前,计算进程也不能把下一次的计算结果送入缓冲区。只有在打印进程打印完缓冲区中的内容,给计算进程发出一个信号后,计算进程才能将下一次的计算结果送入缓冲区。 因此,计算进程和打印进程也是同步的。 ;为此,引入两个同步信号量s1和s2。 S1:表示缓冲区是否空,s1的初值为1; S2:表示缓冲区中是否有可供打印的计算结果,其初始值为0。 计算进程(Pc)和打印进程(Pp)之间的同步算法如下: ;int s1,s2; s1=1;s2=0; void Pc( ){ /*计算进程*/ while(TRUE){ computer next number p(s1); add the number to buffer v(s2); … } } ;void Pp( ){ /* 打印进程 */ while(TRUE){ p(s2) ; take next number from buffer v(s1); print the number …} } void main( ){ parbegin(Pc,Pp); };两个经典的同步/互斥问题--生产者和消费者问题;; 设有界缓冲区的容量为n。 为了正确地存取缓冲区,要求各生产者与消费者进程互斥地使用缓冲区。为此,要设两个同步信号量分别标识生产者进程和消费者进程能否正确前进的标志。 用empty表示空缓冲个数,初值为n; 用full表示装满产品的缓冲个数,初值为0。 再设置一个互斥使用临界区的信号量mutex,初值为1。 两者的同步算法如下:;生产者-消费者算法-1;生产者-消费者算法-2;生产者-消费者算法-3;P、V操作的次序问题;;两个经典的同步/互斥问题;解决读者/写者问题,需设置两个信号量: (1)读互斥信号量rmutex,用于使读者互斥地访问共享变量count,这里count是记录有多少读者正在读; (2)写互斥信号量wmutex,用于实现读写互斥和写写互斥地访问共享文件。; 读者、写者问题算法-1; 读者、写者问题算法-2; 读者、写者问题算法-3;五、管程(monitor);信号量同步的缺点;管程的引入;管程的主要特征;管程的实现要素;管程中的多个进程进入;管程的操作;monitor ringbuffer; var rbuffer:array[0..n-1] of item; 环形缓冲区 goods, k, nextempty,nextfull:integer; k是缓冲区中的元素个数 empty,full:condition; 条件变量 procedure entry put(var product:item); 向缓冲区送元素的过程 begin if k=n then wait(empty);

文档评论(0)

178****9325 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档