互斥和同步的解决方法.docVIP

  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文档。上传文档
查看更多
互斥与同步的解决方法 =硬件方法 ---采用软件方法实现进程互斥使用临界资源是很困难的,他们通常能实现两个进程的互斥,很难控制多个进程的互斥。 ---算法设计需要非常小心,否则可能出现死锁,或互斥失败等严重问题。 ---软件方法始终不能解决忙等现象,降低系统效率, ---硬件发放包括屏蔽中断和专用机器指令。 +屏蔽中断 ---由于进程切换需要依赖中断来实现,如果屏蔽中断则不会出现进程切换。 ---因此,为了实现对临界资源的互斥使用,可以在进程进入临界区之前,屏蔽中断,当进程退出临界区时,打开系统中断。 ---中断被屏蔽以后,系统时钟中断也被屏蔽。处理机将不会被切换到其它进程。 ---于是,一旦屏蔽中断,进程就可以检查和修改共享内存区中的数据,而不必担心其他进程介入,其伪代码如下: Repeat <屏蔽中断>; <临界区>; <打开中断>; <其余部分>; Forever。 ---这种方法约束条件太强,付出的代价太大。 ---因为中断被屏蔽以后,系统将无法响应任何外部请求,也不会响应当前执行进程的任何异常及系统故障,严重的降低了处理机性能。 ---这种方法仅对单处理机系统有效,如果系统有两个或多个共享内存的处理机,屏蔽中断仅仅对执行本指令的处理机有效,其他处理机仍将继续运行,并可以访问共享内存空间。 =专用机器指令 ---利用一些专用机器指令也能实现互斥,机器指令在一个指令周期内执行,不会受到其他指令的干扰,也不会被中断。 ---Test and Set指令就是较长用的一种机器指令,其定义如下: ·testset指令 Function testset(var i:integer):Boolean; Begin If i =0 then Begin i:=1; testset:=true; end else testest:=false; end. Program mutualexclusion; Constn n=…;/*进程数*/ Var bolt:integer; Procedure P(i:integer); Begin Repeat Repeat {nothing}until testset(bolt); <临界区>; Bolt:=0; <其余部分> Forever End; Begin/*主程序*/ Bolt:=0; parbegain P(1); P(2); … P(n) Parend End. ·exchange指令 Procedure exchange(var r:register;var m:memory); Var temp; Begin Temp:=m m:=r; r:=temp; end. Program mutualexclusion; Constn n=…;/*进程数*/ Var bolt:integer; Procedure P(i:integer); Var key:integer; Begin Repeat Key:=1 Repeat exchange(key,bolt)until key=0; <临界区>; exchange(key,bolt); <其余部分> Forever End; Begin/*主程序*/ Bolt:=0; parbegain P(1); P(2); … P(n) Parend End. +机器指令优点 ---非常简单,易于证明; ---同时适用于单处理机系统和共享内存的多处理机系统中多个进程互斥; ---可以分别为临界区设置属于他自己的变量,以实现对多个临界区的互斥访问。 +机器指令缺点 ---忙等现象仍然存在,进程都需要循环检测,等待时机进入临界区。但是,由于采用了机器指令,这种忙等消耗的机器时间比软件方法小,属于“可接受的忙等”。 ---可能出现饥饿现象。当临界区空闲时,执行循环检测的若干个等待进程能进入临界区的几率是相等的,有的进程可能运气非常不好,很难有机会进入临界区,而饥饿。 ---还有可能导致死锁 ---例如,进程P1的优先级低于P2的优先级,若P1通过执行专

文档评论(0)

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

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

1亿VIP精品文档

相关文档