第五章并发性:互斥和同步浙江工业大学详解.ppt

第五章并发性:互斥和同步浙江工业大学详解.ppt

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
并发性:互斥和同步;并发 (Concurrency);并发进程间的制约关系; 进程之间竞争资源面临三个控制问题: 互斥( mutual exclusion )指多个进程不能同时使用同一个资源; 死锁( deadlock )指多个进程互不相让,都得不到足够的资源; 饥饿( starvation )指一个进程一直得不到资源(其他进程可能轮流占用资源) 2.相互合作关系 在某些进程之间还存在合作关系,例如一个程序的输入、计算、打印三个程序段作为三个进程并发执行,由于这三个进程间存在着相互合作的关系,即先输入再计算、最后再打印的关系,所以这三个进程在并发执行时推进序列受到限制,要保证其合作关系正确,进程间这种关系称为同步关系。;一个简单的例子; Process P1 Process P2 . . chin = getchar(); . . chin = getchar(); . chout = chin; . putchar(chout); chout = chin; putchar(chout);;解决办法;和并发相关的术语;临界资源 ;临界区(critical sections);竞争条件;操作系统关注的问题;多个进程的交互;进程同步机制;所有的进程同步机制应遵循下述四条准则: 空闲让进 当无进程进入临界区时,相应的临界资源处于空闲状态,因而允许一个请求进入临界区的进程立即进入自己的临界区。 忙则等待 当已有进程进入自己的临界区时,即相应的临界资源正被访问,其它试图进入临界区的进程必须等待,以保证进程互斥地访问临界资源。 有限等待 对要求访问临界资源的进程,应保证进程能在有限时间进入临界区,以免陷入“饥饿”状态。 让权等待 当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入忙等。;临界区的互斥操作; 一个由临界区和剩余区1和剩余区2程序段组成的进程采用进程同步机制后的描述如下: begin remainder section 1; 剩余区1 进入区 critical section ; 临界区 退出区 remainder section 2 ; 剩余区2 end 进程同步机制在临界区前加上进入区,它负责对欲访问的临界资源状态进行检查,以决定是否允许该进程进入临界区还是等待。同时在临界区后加上退出区,它负责释放临界资源以便其它等待该临界资源的进程使用。;Const int n=/*进程的数目*/ Void p(int i) { while(true) { entercritical(Ra);//进入临界区 /*critical section*/ exitcritical(Ra);//退出临界区 /*remainder*/ } } Void main() { parbegin(p(1),p(2),…p(n));};互斥的三种实现方法 ;互斥:软件支持;第二次尝试:每个进程都有自己可进入临界区的钥匙。 enum boolean{false=0;true=1}; boolean flag[2]={false,false} Process 0 Process 1 .. .. While(flag[1]) While(flag[0]) {do nothing} {do nothing} flag[0]=true; flag[1]=true; /*critical section*/ /*critical section*/ flag[0]=false; flag[1]=false; ;第三次尝试:可能导致死锁 enum boolean{false=0;true=1}; boolean flag[2]={false,false} Process

文档评论(0)

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

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

1亿VIP精品文档

相关文档