进程互斥.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文档。上传文档
查看更多
进程互斥

第三章 进程互斥与同步 主要内容 进程的同步和互斥机制的主要任务:控制并发执行的诸进程之间能有效地共享和相互协作,同时使并发执行的程序仍具有可再现性。 进程互斥 进程同步 利用信号量机制解决具体问题 进程间的关系 并发系统中诸进程由于资源共享、进程合作,而产生进程之间的相互制约;又因共享资源的方式不同,而导致两种不同的制约关系: 1 间接制约关系(进程互斥) 由于共享资源而引起的临界区内不允许并发进程交叉执行的现象。由共享公有资源而造成的对并发进程执行速度的间接制约 2 直接制约关系(进程同步) 由于并发进程互相共享对方的私有资源所引起的直接制约。 临界资源 象打印机这类资源一次只允许一个进程使用的资源称为临界资源。属于临界资源有硬件打印机、磁带机等,软件有消息缓冲队列、变量、数组、缓冲区等。当然还有一类象磁盘等资源,它允许进程间共享,即可交替使用,所以它称为共享资源,而临界资源又称独享资源。 举例:临界资源 临界区Critical sections 多个进程共享临界资源时必须互斥使用,例如A和B两个进程都需要使用打印机,它们必须互斥使用。如果为了保证结果的正确性限制A、B二进程推进序列,规定进程A执行好再执行进程B,这样的限制就显得过死,因为它已不能保证进程A、B能并发执行,所以必须把限制减少到最少,以尽可能支持并发执行。为此把各进程分解,把访问临界资源的那段代码(称为临界区)与其它段代码分割开来,只对各种进程进入自己的临界区加以限制,即各进程互斥地进入自己的临界区。 举例:临界区 While ( 1 ) { …… entry_section; //申请进入 critical_section; //临界区 exit_section; //声明退出 ……… } 进程同步机制 进程在并发执行时为了保证结果的可再现性,各进程执行序列必须加以限制以保证互斥地使用临界资源,相互合作完成任务。 多个相关进程在执行次序上的协调称为进程同步。用于保证多个进程在执行次序上的协调关系的相应机制称为进程同步机制。 准则 空闲让进 忙则等待 阻塞等待 有限等待 一个由临界区和剩余区1和剩余区2程序段组成的进程采用进程同步机制后的描述如下: { remainder section 1; 剩余区1 进入区; critical section ; 临界区 退出区; remainder section 2 ; 剩余区2 } 进程同步机制在临界区前加上进入区,它负责对欲访问的临界资源状态进行检查,以决定是允许该进程进入临界区还是等待。同时在临界区后加上退出区,它负责释放临界资源以便其它等待该临界资源的进程使用。 实现进程互斥和同步的信号量机制有软件方法、硬件指令方法、信号量机制和管程等。 互斥-软件的忙等待方法-1 算法1 int flag[2]={ 0, 0 } Cobegin void P0(void) { while( 1 ) { while ( flag[1] == 1) ; flag[0] = 1; ……; //P0的临界区代码 flag[0] = 0; …….; // P0的非临界区代码 } } void P1(void) { while( 1 ) { while ( flag[0] == 1) ; flag[1] = 1; ……; // P1的临界区代码 flag[1] = 0; …….; // P1的非临界区代码 } } Coend 互斥-软件的忙等待方法-2 算法2 int turn = 0; Cobegin void P0(void) { while( 1 ) { while ( turn != 0 ) ; ……; //P0的临界区代码 turn = 1; …….; // P0的非临界区代码 } } void P1(void) { while( 1 ) { while ( turn != 1 ) ; ……; // P1的临界区代码 turn = 0; …….; // P1的非临界区代码 } } Coend 互斥-软件的忙等待方法-3 Peterson 1981 为了防止二进程为进入临界区而无限期等待,又设置变量turn,表示不允许进入临界区的编号,每个进程在先设置自己标志后再设

文档评论(0)

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

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

1亿VIP精品文档

相关文档