进程同步与通信课件.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文档。上传文档
查看更多
进程同步与通信课件

第3章 进程同步与通信;●;并发原理;并发给操作系统设计和管理带来了很多问题,为此要关注的事情有以下几个方面:;进程的交互;进程同步的基本概念;几个进程共享同一临界资源,它们必须以互相排斥的方式使用临界资源 即当一个进程正在使用临界资源且尚未使用完时,其他进程必须延迟对该资源的进一步操作,在当前的进程使用完成之前,不能从中插入使用这个临界资源,否则将会造成信息混乱和操作出错。;;例:P1,P2两线程共享变量COUNT(COUNT的初值为5) P1:{ R1=COUNT; R1=R1+1; COUNT=R1; } P2:{ R2=COUNT; R2=R2+1; COUNT=R2; };While(1){ ;互斥实现的硬件方法;禁止中断;禁止中断;专用机器指令;;硬件方法的优点:;硬件方法的缺点:;实现互斥的方法:;通过平等协商方式实现进程互斥的最初方法使软件方法。 其基本思路是在进入区检查和设置一些标志,如果已有进程在临界区,则在进入区通过循环检查进行等待;在推出区修改标志。;互斥实现的软件方法;//进程0 while (flag[1]) //什么都不做 ; flag[0]=true; 临界区; flag[0] =false; 剩余区; //进程1 while ( flag[0]) //什么都不做 ; flag[1]=true; 临界区; flag[1] =false; 剩余区;;//进程0 flag[0]=true; while (flag[1]) //什么也不做; 临界区; flag[0] =false; 剩余区;;//进程0 flag[0]=true; turn=1; while (flag[1]) (turn==1) //什么也不做; 临界区; flag[0] =false ; 剩余区;;信号量和PV操作;信号灯的PV操作;从资源的观点看信号灯的意义: ● s.value的初值表示系统中某种资源数目。 ● wait(s)表示要申请一个资源。 ● signal(s)表示要释放一个资源。 ● s.value 0时,|s.value|表示等待队列的进程数。;用信号灯解决互斥问题;用信号灯解决互斥问题;用信号灯解决同步问题;●生产者——消费者问题 ●读者——写者问题 ●哲学家进餐问题 ●打磕睡的理发师问题 ;生产者-消费者问题;用信号量解决“生产者-消费者”问题;读者-写者问题;;void reader() /*读者进程*/ {while (true) { P(Rmutex); if (Rcount == 0) P(Wmutex); Rcount = Rcount + 1; V(Rmutex); read; /* 执行读操作 */ P(Rmutex); Rcount = Rcount - 1; if (Rcount == 0) V(Wmutex); V(Rmutex); }};哲学家进餐问题;;打磕睡的理发师问题 ;用信号量解决打磕睡的理发师问题; 用信号量解决了很多同步和互斥问题,但在解决问题的过程中,我们也发现还存在一些问题,如 在生产者和消费者问题中两个P操作的位置不能颠倒; 哲学家进餐问题中的死锁现象等。 这些问题的出现促使AND信号量的产生 。; AND信号量同步机制就是要解决多个进程处于僵持状态的问题。 基本思想:将进程在整个运行期间所需要的所有临界资源,一次性地全部分配给进程,待该进程使用完后再一起释放。 只要尚有一个资源不能满足进程的要求,其他所有能分配给进程的资源也都不予以分配。为此,在P操作上增加一个AND条件。 ;Swait(s1,s2,…,sn) {if (s1 = 1 s2 = 1 … sn= 1) { /* 满足资源要求时*/ for (i = 1; i = n; i = i + 1) si = si -1; } else { /* 某些资源不能满足要求时*/ block(si.queue ) /*将进程投入第一个小于1的信号量的等待队列si.queue */ ; } } ;AND信号量定义;用AND信号量解决哲学家进餐问题;用AND信号量解决哲学家进餐问题;管程机制;●一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。 ●管程 = 数据结构+ 操作 + 对数据结构中变量的初始化 ;管程的基本思想;管程的特征:;管程结构;注意: 管程中的条件变量不是计数器,不能

文档评论(0)

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

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

1亿VIP精品文档

相关文档