第2章 进程管理部分.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一般信号量集的几种特定情况: Swait(S, d, d)表示每次申请d个资源,当少于d个时,便不分配; Swait(S, 1, 1)表示互斥信号量; Swait(S, 1, 0)作为一个可控开关 当S=1时,允许多个进程进入临界区; 当S=0时,禁止任何进程进入临界区; 一般信号量集未必成对使用Swait和Ssignal:如:一起申请,但不一起释放; 【思考题】 司机进程: while(1) { 启动车辆 正常驾驶 到站停车 }… 售票员进程: while(1) { 关门 售票 开门 }… 用P.V操作解决司机与售票员的问题 设有两个信号量S1,S2,初值均为0。 2011-2012(第二学期) 10软工1班 解 设有两个信号量S1,S2,初值均为0。 司机进程: while(1) { P(S1) 启动车辆 正常驾驶 到站停车 V(S2) }… 售票员进程: while(1) { 关门 V(S1) 售票 P(S2) 开门 }… 共享缓冲区的进程的同步 设某计算进程CP和打印进程IOP共用一个单缓冲区,CP进程负责不断地计算数据并送入缓冲区T中,IOP进程负责不断地从缓冲区T中取出数据去打印。 分析 通过分析可知,CP、IOP必须遵守以下同步规则: 当CP进程把计算结果送入缓冲区时,IOP进程才 能从缓冲区中取出结果去打印; 当IOP进程把缓冲区中的数据取出打印后,CP进程才能把下一个计算结果送入缓冲区 2011-2012(第二学期) 10软工1班 解 为此设有两个信号量Sa=0,Sb=1,Sa表示缓冲区中有无数据,Sb表示缓冲区中有无空位置。 两个进程的同步可以描述如下: 总结 进程互斥:在OS中,当某一进程正在访问cs时,就不允许其它进程来读写(访问),否则就会发生后果无法估计的错误,进程之间的这种相互制约关系为进程互斥。 进程同步:并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通消息,称为进程同步。 进程同步与互斥关系:都反映了在异步环境下并发进程间的相互制约关系。可归于同步范畴,但互斥是同步问题的一个特例,互斥解决临界区的使用,同步是并发进程在一些关键点上需互相等待互发消息。 管程(monitor) 用信号量可实现进程间的同步,但由于信号量的控制分布在整个程序中,其正确性分析很困难。管程是管理进程间同步的机制,它保证进程互斥地访问共享变量,并方便地阻塞和唤醒进程。管程可以函数库的形式实现。相比之下,管程比信号量好控制。 信号量同步的缺点 同步操作分散:信号量机制中,同步操作分散在各个进程中,使用不当就可能导致各进程死锁(如P、V操作的次序错误、重复或遗漏) 易读性差:要了解对于一组共享变量及信号量的操作是否正确,必须通读整个系统或者并发程序; 不利于修改和维护:各模块的独立性差,任一组变量或一段代码的修改都可能影响全局; 正确性难以保证:操作系统或并发程序通常很大,很难保证这样一个复杂的系统没有逻辑错误; 管程的引入 1973年,Hoare和Hanson所提出;其基本思想是把信号量及其操作原语封装在一个对象内部。即:将共享变量以及对共享变量能够进行的所有操作集中在一个模块中。 管程的定义:管程是关于共享资源的数据结构及一组针对该资源的操作过程所构成的软件模块。 管程可增强模块的独立性:系统按资源管理的观点分解成若干模块,用数据表示抽象系统资源,同时分析了共享资源和专用资源在管理上的差别,按不同的管理方式定义模块的类型和结构,使同步操作相对集中,从而增加了模块的相对独立性 引入管程可提高代码的可读性,便于修改和维护,正确性易于保证:采用集中式同步机制。一个操作系统或并发程序由若干个这样的模块所构成,一个模块通常较短,模块之间关系清晰。 管程的主要特性 模块化:一个管程是一个基本程序单位,可以单独编译; 抽象数据类型:管程是一种特殊的数据类型,其中不仅有数据,而且有对数据进行操作的代码 信息封装:管程是半透明的,管程中的外部过程(函数)实现了某些功能,至于这些功能是怎样实现的,在其外部则是不可见的; 管程的实现要素 管程中的共享变量在管程外部是不可见的,外部只能通过调用管程中所说明的外部过程(函数)来间接地访问管程中的共享变量; 为了保证管程共享变量的数据完整性,规定管程互斥进入; 管程通常是用来管理资源的,因而在管程中应当设有进程等待队列以及相应的等待及唤醒操作; 管程中的多个进程进入 当一个进入管程的进程执行等待操作时,它应当释放管程的互斥权;当一个进入管程的进程执行唤醒操作时(如P唤醒Q),管程中便存在两个同时处于活动状态的进程。 管程中的唤醒切换方法: P等待Q继续,直到Q

文档评论(0)

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

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

1亿VIP精品文档

相关文档