操作系统4.2临界区管理.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文档。上传文档
查看更多
操作系统4.2临界区管理.ppt

3.2 临界区管理 3.2 临界区管理 回顾订票问题和主存管理问题 订票问题:多个售票进程交叉访问了共享变量Aj 主存管理问题:borrow和returrn共享了表示主存物理资源的变量x 临界区的基本概念 临界区(Critical Section) :并发进程中与共享变量有关的程序段 临界资源(Critical Resource) :共享变量代表的资源,如独占型硬件,被共享的数据结构和文件 临界区管理的问题 主要问题:与同一变量有关的临界区分散在各进程的程序段中,而各进程的执行速度不可预知。 必须加以管理和限制:保证进程在临界区执行时,不让另一个进程进入临界区,就不会造成与时间有关的错误。(实现对共享变量的互斥访问) 临界区调度的原则 (1)一次至多有一个进程 进入临界区执行; (2)如果已经有进程在临界区中,试图进入此临界区的其他进程应等待 (3)进入临界区内的进程应在有限时间内退出,以便让等待队列中的一个进程进入 3.2 临界区管理 临界区管理的尝试 引入进程标志,分别指示进程进入临界区的情况 第一种尝试,先测试,后置位 不能保证同一时间只有一个进程进入临界区 第二种尝试,先置位,后测试 会出现死循环的情况,永远等待 临界区管理的尝试一 inside1,inside2:Boolean inside1 := false; /* P1不在其临界区内 */ inside2 := false; /* P2不在其临界区内 */ cobegin process P1 Begin ①while inside2 do begin end; ②inside1 := true; ③临界区; ④inside1 := false; end; process P2 Begin ①while inside1 do begin end; ②inside2 = true; ③临界区; ④inside2 := false; end; coend inside1,inside2:Boolean inside1 := false; /* P1不在其临界区内 */ inside2 := false; /* P2不在其临界区内 */ cobegin process P1 Begin ①inside1 := true; ②while inside2 do begin end; ③临界区; ④inside1 := false; end; process P2 Begin ①inside2 = true; ②while inside1 do begin end; ③临界区; ④inside2 := false; end; coend 3.2 临界区管理 实现临界区管理的软件算法 (1)Dekker算法 算法复杂难以理解 (2)Peterson算法: Peterson算法的具体实现 // 变量定义及初始化 bool inside[2] inside[0]=false;inside[1]=false; enum{0,1} turn; cobegin 基本思想: 用对turn的置值和while语句来限制每次只有一个进程进入临界区; 进程执行完临界区程序后,修改insidei状态使等待进入临界区的进程可在有限时间内进入。 算法满足临界区管理的三个条件。 软件解法的缺点 1. 忙等待(busy waiting) 2. 实现过于复杂,需要高的编程技巧 回顾: 顺序程序设计有哪些特征? 什么是并发程序设计? 进程之间有哪些关系?什么是同步与互斥? 有关的进程如果不加控制,会出现哪些错误? 什么是临界区和临界资源? 临界区管理有哪些原则? 3.2 临界区管理 临界区管理的前两个尝试之所以不能正确管理临界区,问题在于: 测试和上锁这两个动作分开了,因为执行过程中可能被中断 硬件方法 1. 关中断 2. 测试并建立指令 3. 对换指令 1. 关中断 基本方法: 在进程进入临界区时关中断,进程退出临界区时开中断(阻止进程交替执行) 特点: 简单,有效; 不通用,关中断时间过长会影响系统性能; 不适用于多处理器; 2. 测试并建立指令 基本方法:借助于机器指令TS,TS指令能使测试和上琐不分离 3. 对换指令 基本方法 :借助于对换指令SWAP 总结 众多进程对于临界资源的访问必须互斥进行 软件方法和硬件方法的共同缺点: “忙等待”,不能实现“让权

文档评论(0)

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

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档