网站大量收购闲置独家精品文档,联系QQ:2885784924

ch3进程管理2(3.4-3.7).ppt

  1. 1、本文档共190页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.4 进程的同步与互斥 并发执行的多个进程,不采取措施,可能导致结果的不可再现性。 为此,现代操作系统都在内核中设有进程的互斥同步机制,以控制并发执行的诸进程能有效的共享资源和相互合作,同时使并发程序的执行仍具有可再现性。 3.4 进程的同步与互斥 3.4.1 进程间的制约关系 3.4.2 进程互斥 3.4.3 进程同步 3.4.4 信号量机制 3.4.5 经典同步互斥问题 3.4.6 管程机制 3.4.1 进程间的制约关系 系统中存在的这些进程之间存在两种关系: 资源共享关系(间接制约):例如共享CPU和I/O设备、共享数据内存等 相互合作关系(直接制约):例如在输入进程、计算进程和打印进程三者之间 1.间接制约关系 多个进程之间彼此无关,它们并不知道其他进程的存在,但这些进程既然是同处于一个系统中,也就必然存在着资源共享的关系,如共享CPU和I/O设备等。此时,系统的主要任务是保证各个进程能互斥地访问临界资源。为此,系统中的资源应不允许用户进程直接使用,而应由系统统一分配。例如,在仅有一台打印机的系统中,有两个进程A和B,如果在A进程提出打印请求时,系统已将打印机分配给进程B,则系统让A进程等待,直至B将打印机用完并释放后,系统才将打印机分配给进程A。如果不采取任何控制措施,则会出现打印机输出结果错误。 1.间接制约关系 由于各进程要求共享资源,而有些资源需要互斥使用,因此各个进程间竞争使用这些资源,进程间的这种关系称为间接制约,操作系统必须采用某种方法来保证存在间接制约关系的进程间并发执行的正确性,这就是互斥机制。 2.直接制约关系 多个进程间知道对方的存在,表现出来的是一种相互合作的关系。此时要保证相互合作的各个进程在执行次序上的协调,不会出现与时间有关的差错。例如,有一计算进程A将计算结果通过单缓冲向打印进程B提供数据打印。当该缓冲区空时,打印进程B因不能获得所需数据而等待。当计算机进程A把数据送入缓冲区时,便应向进程B发送一信号,将它唤醒;反之,当缓冲区满时,计算进程A因无法再向缓冲中投放数据而等待,只有当进程B将缓冲内数据取走时,再向A发信号将A唤醒。如果不控制进程间的执行顺序则会出现错误,例如在B没有取走数据时A向缓冲区中放数据,就会造成数据丢失。 2.直接制约关系 系统中多个进程中发生的事件存在某种时序关系,各自的执行结果互为对方的执行条件,需要相互合作,共同完成一项任务。进程间的这种关系称为直接制约,操作系统也应该采用某种方法保证存在直接制约关系的进程间并发执行的正确性,这就是同步机制。 3.4.1 进程间的制约关系 虽然互斥与同步在概念上有差别,解决问题的方法也不相同。但从某种意义上讲,互斥也是一种同步,因为它也是进程之间如何使用共享资源的一种协调。 3.4.2 进程互斥 1 临界资源与临界区 2 互斥 3 互斥的软件实现 4 互斥的硬件指令实现 1.临界资源(Critical Resource) 系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源或共享变量 如:进程AB共享一台打印机,若让它们交替使用则得到的结果肯定不是我们希望的。 临界资源可能是硬件,也可能是软件:变量,数据,表格,队列等。 并发进程对临界资源的访问必须作某种限制,否则就可能出与时间有关的错误。 临界区(Critical Section) 不允许多个并发进程交叉执行的一段程序 在每个进程中访问临界资源的那段代码 注意:临界区是对某一临界资源而言的,对于不同临界资源的临界区,它们之间不存在互斥 如有程序段A、B是关于变量X的临界区,而C、D是关于变量Y的临界区,那么,A、B之间需要互斥执行,C、D之间也要互斥执行,而A与C、B与D之间不用互斥执行 显然,若能保证各个进程互斥地进入自己的临界区,便可实现它们对临界资源的互斥访问。为此,每个进程在进入临界区之前应先对欲访问的临界资源进行检查,看它是否正被访问。如果此刻临界资源未被访问,该进程便可进入临界区,对该资源进行访问,并设置它正被访问的标志;如果此刻该临界资源正被某进程访问,则进程不能进入临界区。因此,必须在临界区前面增加一段用于进行上述检查的代码,把这段代码称为进入区(entry section)。相应地,在临界区后面也要加上一段称为退出区(exit section)的代码,用于将临界区正被访问的标志恢复为未被访问标志。 2.什么是互斥 定义:一组并发过程中的一个或多个程序段,因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行 不允许两个以上的共享该资源的并发进程同时进入临界区称为互斥 互斥的原则: 有空让进 让权等待 忙则等待 有限等待 互斥的原则: 有空让进:当无进程在互斥区时,任何有权使用互斥区的

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档