os3进程同步与死锁.pptVIP

  1. 1、本文档共89页,可阅读全部内容。
  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文档。上传文档
查看更多
os3进程同步与死锁

第3章 进程同步与死锁 内容提要 本章主要阐述了进程的同步与互斥及其相关的算法,介绍了进程通信,并分析了死锁产生的原因以及处理死锁的相关策略。本章是操作系统课程的核心内容。 教学目标 1.理解并掌握临界资源和临界区、进程同步和互斥的概念。 2.掌握进程同步与互斥的解决方法。 3.了解管程的概念和实现。 4.了解进程通信的方式。 5.理解死锁的概念、死锁产生原因和必要条件。 6.了解预防和避免死锁的方法,了解死锁的检测和解除方法。 第3章 进程同步与死锁 3.1 进程的互斥与同步 进程的状态是基于一定的原因和条件而变化的,而这些原因和条件又常常是由于进程之间的相互制约关系引起的。系统中诸进程之所以有这种关系,是由两方面原因引起的: 1) 各并发进程对资源的共享 由于共享资源,使得系统中本来没有逻辑关系的进程因相互竞争资源而产生了制约关系。例如,进程P1和P2在运行中都要使用打印机,为了使各进程输出的完整性,打印机的使用必须独占。这种通过共享资源而使进程之间产生的关系叫做间接制约关系,又叫做互斥关系。这种关系可用“进程-资源-进程”来描述。 第3章 进程同步与死锁 3.1 进程的互斥与同步 2)系统中存在若干协作进程 通常,一个用户作业涉及一组并发进程(输入、计算和输出进程),这些进程须相互协作共同完成这项任务。这样,在运行过程中,这些进程可能要在某些同步点上等待协作者发来信息后才能继续运行。进程之间的这种制约关系叫做直接制约关系,又叫同步关系。这种关系可用“进程-进程”来描述。 进程之间的这种相互依赖又相互制约、相互合作又相互竞争的关系,也即进程的同步与互斥关系。又叫进程的低级通信。 3.1 进程的互斥与同步 3.1.1 临界资源和临界区 例如:有两个进程P1和P2,它们共享一个变量n。 int n=0; P1( ) { while(1) { while (没有产品生产出来); n=n+1; /* 产品生产出来,进行统计 */ } } P2( ) { while (1) { delay(time); /* 延迟一段时间,再输出结果 */ printf(“%d\n”,n); /* 输出统计结果 */ n=0; /* 清0 */ } } 3.1 进程的互斥与同步 3.1.1 临界资源和临界区 进程的互斥是由于共享资源而引起的。这些资源既包括慢速的硬设备,如打印机等资源,也包括软件资源,如共享变量、共享文件等。 为了描述这类情况,我们引入临界资源和临界区的概念。所谓临界资源,就是一次仅允许一个进程使用的资源。如:进程A、B共享一台打印机,若让它们交替使用则得到的结果肯定不是我们希望的。 临界资源可能是硬件,也可能是软件:变量,数据,表格,队列等。 3.1 进程的互斥与同步 3.1.1 临界资源和临界区 临界区(critical section):临界段,在每个程序中,访问临界资源的那段程序。 注意:临界区是对某一临界资源而言的,对于不同临界资源的临界区,它们之间不存在互斥。 如有程序段A、B是关于变量X的临界区,而C、D是关于变量Y的临界区,那么,A、B之间需要互斥执行,C、D之间也要互斥执行,而A与C、B与D之间不用互斥执行。 3.1 进程的互斥与同步 3.1.1 临界资源和临界区 解决互斥的准则 为了禁止两个进程同时进入临界区内,可以采用软件办法或系统提供的同步机构来协调它们的关系。但是,不论用什么办法都要遵循下述准则: 1) 当有若干进程欲进入它的临界区时,应在有限时间内使进程进入临界区。即,它们不应相互阻塞而致使彼此都不能进入临界区 2) 每次至多有一个进程处于临界区。 3) 进程在临界区内仅逗留有限的时间。 3.1 进程的互斥与同步 3.1.2 进程互斥的实现 1. 禁止中断 2.用锁机制实现互斥 LOCK(W) { while (W==1); W=1; } UNLOCK(W) { W=0; } 3.1 进程的互斥与同步 3.1.2 进程互斥的实现 2.用锁机制实现互斥 int n=0; lock W=0; main( ) P1( ) { while(1) while(没有产品生产出来); LOCK(W); n=n+1; UNLOCK(W); } 3.1 进程的互斥与同步 3.1.2 进程互斥的实现

文档评论(0)

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

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

1亿VIP精品文档

相关文档