《操作系统原理与实践教程(第二版)》第4章:进程同步与死锁.pptVIP

《操作系统原理与实践教程(第二版)》第4章:进程同步与死锁.ppt

  1. 1、本文档共97页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《操作系统原理与实践教程(第二版)》第4章:进程同步与死锁

第4章 进程同步与死锁 4.1 进程的同步和互斥 4.2 经典同步问题 4.3 管程 4.4 进程通信 4.5 死锁 4.6 死锁的预防和避免 4.7 死锁的检测和解除 4.1.1 进程的同步 操作系统中的进程都是各自独立并以不可预知的速度向前推进,也就是一个进程相对另一个进程的执行速度是无法确定的,即它们具有异步性。但是对于需要相互合作的进程来说,其执行顺序需要在某些特定时刻进行协调,先达到条件的进程需要等待后到达的进程,此时这些进程间存在一种制约关系。 4.1.1 进程的同步 同步是进程间的直接制约关系,这种制约主要源于进程间的合作。进程同步的主要任务就是使并发执行的各进程之间能有效地共享资源和相互合作,从而在执行时间、次序上相互制约,按照一定的协议协调执行,使程序的执行具有可再现性。 4.1.2 进程互斥 当多个进程需要使用相同的资源,而此类资源在任一时刻却只能供一个进程使用,获得资源的进程可以继续执行,没有获得资源的进程必须等待。 这是进程之间的间接制约关系。这种关系与源于进程间合作的同步关系不同,它们的运行具有时间次序的特征,谁先从系统获得共享资源,谁就先运行。这种对共享资源的排它性使用所造成的进程间的间接制约关系称为进程互斥。 互斥是一种特殊的同步方式 4.1.2 进程互斥 临界资源 在同一时段只能被一个进程使用的计算机资源 ,比如打印机 。 临界资源可能是硬件,也可能是软件,如变量、数据、表格、队列等。它们虽然可以被若干个进程共享,但一次只能为一个进程使用。 临界资源的管理由操作系统完成,它通常将临界资源分配给首先提出使用申请的进程。 4.1.2 进程互斥 临界区(Critical Section) 为保证多个进程对临界资源进行正确的互斥访问,人们把每个进程中访问临界资源的那段代码使用特殊手段管理,这段代码被称为临界区 如果能保证诸进程互斥地进入自己的临界区,即可实现对临界资源的互斥访问。 进程在进入临界区之前,首先要对临界资源的使用情况进行查询,如果临界资源处于空闲状态,则该进程可以进入临界区,同时把临界资源的状态设置为正在使用状态;如果临界资源正在被使用,那么该进程不能进入临界区。 4.1.2 进程互斥 进入区(Entry Section) 位于临界区前面的一段用于检查临界区使用状态的代码被称为进入区 。 退出区(Exit Section) 在进程完成对临界区的访问之后,要把临界区访问标志恢复为未被访问标志,完成该任务的代码段被称为退出区(Exit Section) 剩余区 进程中除了进入区、临界区和退出区之外的部分被称为剩余区。 4.1.2 进程互斥 一个描述临界资源的循环进程可以描述如下: 4.1.2 进程互斥 所有的同步机制都应遵循下面的4条准则: (1)空闲让进 当无进程处于临界区时,允许进程进入临界区,并且只能在临界区运行有限的时间。 (2)忙则等待 当有一个进程在临界区时,其它欲进入临界区的进程必须等待,以保证进程互斥地访问临界资源。 4.1.2 进程互斥 (3)有限等待 对要求访问临界资源的进程,应保证进程能在有限时间内进入临界区,以免陷入“饥饿”状态。 (4)让权等待 当进程不能进入临界区时,应立即放弃占用CPU,以使其它进程有机会得到CPU的使用权,以免陷入“饥饿”状态。 4.1.3 信号量机制 信号量的发展历程 信号量(Semaphore)是荷兰学者Dijkstra在1965年提出的一种有效的进程同步和互斥工具,它负责协调各个进程,以保证它们能够正确、合理地使用公共资源,有时也被称为信号灯。 经过长期广泛的应用实践,信号量机制已经有了很大的发展,形成了整型信号量、记录型信号量、信号量集等机制 。 信号量机制已经被广泛地应用到单处理机和多处理机系统以及计算机网络中。 4.1.3 信号量机制 整型信号量与P、V操作 在整型信号量机制中,信号量S是个整型变量,通常被初始化为相应资源的初始数量。 除了初始化之外,对信号量S只能通过wait和signal这两个标准的原子操作来访问 ,这就保证了当一个进程在修改某信号量时,没有其它进程同时对它进行修改 。 因为希腊语wait的首字母为P,signal的首字母为V,所以wait和signal操作通常又称为P、V操作。 4.1.3 信号量机制 wait操作可以表示为如下形式: void wait(int S) { while (S=0) ; //当信号量S的值小于等于0时,做空操作, //否则将其值 减1 S = S-1; } signal操作可以表示为如下形

文档评论(0)

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

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

1亿VIP精品文档

相关文档