- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
算法2:双标志、先检查设立一个标志数组flag[]:描述进程是否在临界区,初值均为FALSE。表示所有进程都未进入临界区。若flag[i]=true,表示进程进入临界区执行。在每个进程进入临界区时,先查看临界资源是否被使用,若正在使用,该进程等待,否则才可进入。解决了“空闲让进”问题。在退出区修改本进程在临界区的标志;优点:不用交替进入,可连续使用;缺点:Pi和Pj可能同时进入临界区。按下面序列执行时,会同时进入。即在检查对方flag之后和切换自己flag之前有一段时间,结果都检查通过。这里的问题出在检查和修改操作不能连续进行,违背了“忙则等待”的同步原则。12算法3:双标志、后检查类似于算法2,与互斥算法2的区别在于先修改后检查。可防止两个进程同时进入临界区。缺点:Pi和Pj可能都进入不了临界区。按下面序列执行时,会都进不了临界区。即在切换自己flag之后和检查对方flag之前有一段时间,结果都切换flag,都检查不通过,最终导致并发进程在While语句上等待,违背了“空闲让进”的原则。算法4(Peterson’sAlgorithm):
先修改、后检查、后修改者等待结合算法1和算法3,是正确的算法turn=j;描述可进入的进程(同时修改标志时)在进入区先修改后检查,并检查并发修改的先后:检查对方flag,如果不在临界区则自己进入--空闲则入否则再检查turn:保存的是较晚的一次赋值,则较晚的进程等待,较早的进程进入--先到先入,后到等待表示只有进程j的标志flag[j]为进程j,并且标志turn为进程j时,才表示进程j访问临界区.完全利用软件方法,有很大局限性(如不适于多进程),导致一个进程在执行这两条(一条是看对方的标志,一条是设置自己的标志)指令时被另一个进程中断,最终产生进程对临界区的不正确访问,现在已很少采用。01可以利用某些硬件指令--其读写操作由一条指令完成,因而保证读操作与写操作不被打断;禁止中断专用机器指令TS(TestandSet)指令023.5.1.5进程互斥的硬件方法TS(TestandSet)指令●Lock有两种状态: ●当lock=false时,表示资源空闲; ●当lock=true时,表示资源正在被使用。●为了实现互斥,每个临界资源设置一个公共布尔变量lock,其初值为false,表示资源空闲。利用TS指令实现互斥。在进入区利用TS进行检查:有进程在临界区时,重复检查;直到其它进程退出时,检查通过;●缺点:没有做到:“让权等待”。whileTS(lock);lock=FALSE;criticalsectionremaindersection适用于任意数目的进程,在单处理器或多处理器上简单,容易验证其正确性可以支持进程内存在多个临界区,只需为每个临界区设立一个布尔变量硬件方法的优点1硬件方法的缺点等待要耗费CPU时间,不能实现让权等待可能饥饿:从等待进程中随机选择一个进入临界区,有的进程可能一直选不上可能死锁23.5.2信号量和P、V原语(semaphore)前面的互斥算法都存在问题,它们是平等进程间的一种协商机制,需要一个地位高于进程的管理者来解决公有资源的使用问题。OS可从进程管理者的角度来处理互斥的问题,信号量(信号量代表可用资源实体的数量)就是OS提供的管理公有资源的有效手段。进程间互斥和同步是一种通信方式,进程通过修改信号灯或其他方式通知另一进程。通信原语是实现进程间同步与互斥的一种工具。P操作和V操作是低级通信原语,消息缓冲是高级通信原语。Lock和unlock大部分同步方案采用某个物理实体实现通信,进程通信原语中关锁和开锁是最简单的原语。在这两个原语中设置一个公共变量X代表某个临界资源的状态。X=0表示资源可用。X=1表示资源正在使用。进程使用临界资源必须做以下三个不可分割的操作:检查X的值进入临界区,访问临界资源释放临界区资源,置X为0(开锁)。1965年,由荷兰学者Dijkstra提出(所以P、V分别是荷兰语的test(proberen)和increment(verhogen)),是一种卓有成效的进程同步机制。每个信号量s除一个整数值s.count(计数)外,还有一个进程等待队列s.queue,其中是阻塞在该信号量的各个进程的标识信号量只能通过初始化和两个标准的原语来访问--作为OS核心代码执行,不受进程调度的打断初始化指定一个非负整数值,表示空闲资源总数(又称为资源信号量)--若为非负值表示当前的空闲资源数,若为负值其绝对值表示当前等待临界区的进程数-s.count; //表示申请一个资源;01if
文档评论(0)