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

第二进程管理.pptVIP

  1. 1、本文档共148页,可阅读全部内容。
  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文档。上传文档
查看更多
* * * 使用信号量时要非常小心!一处很小的错误将导致很大的麻烦。这就像用汇编语言编程一样,甚至更糟,因为这里出现的错误都是竞争条件、死锁、以及其他不可预测和不可重现的行为。 为了更易于编写正确的程序,Hoare和Brinch Hansen提出了一种高级的同步原语,称为管程(monitor)。 用信号量可实现进程间的同步,但由于信号量的控制分布在整个程序中,其正确性分析很困难,使用不当还可能导致死锁。诸如在进程进入临界区之前遗漏P操作的编程错误就可能会导致程序故障。然而,只有执行特定的时间安排才能发现程序故障,这使得在测试期间发现错误很困难。即使发现了错误,但错误的不可重复性会使错误定位非常困难。管程是管理进程间同步的机制,它保证进程互斥地访问共享变量,并方便地阻塞和唤醒进程。管程可以函数库的形式实现。相比之下,管程比信号量好控制。 * 1973年,由Hoare和Hanson所提出;其基本思想是把信号量及其操作原语封装在一个对象内部。即:将共享变量以及对共享变量能够进行的所有操作集中在一个模块中。 管程可增强模块的独立性:系统按资源管理的观点分解成若干模块,用数据表示抽象系统资源,使同步操作相对集中,从而增加了模块的相对独立性 引入管程可提高代码的可读性,便于修改和维护,正确性易于保证:采用集中式同步机制。一个操作系统或并发程序由若干个这样的模块所构成,一个模块通常较短,模块之间关系清晰。 * 由于管程是一个语言成分,所以管程的互斥访问完全由编译程序在编译时自动添加,无需程序员关心,而且保证正确性. 为实现进程间的同步,管程还必须包含若干用于同步的设施.例如,一个进程调用管程内的过程而进入管程,在该过程执行的过程中,若进程要求的某共享资源目前没有,则必须将该进程阻塞,于是必须有使该进程阻塞并使它离开管程以便其他浸沉功课仪进入管程执行的设施;类似地,在以后的某个时刻,当被阻塞的进程等待的条件得到满足时,必须使阻塞进程恢复执行,允许它重新进入管程并从断点开始执行. 由于管程通常是用于管理资源的,因而在管程内部,应当存在某种等待机制。当进入管程的进程因资源被占用等原因不能继续运行时使其等待。 * 系统中的各种硬件资源和软件资源,均可用数据结构加以抽象的描述,即用少量信息和对该资源所执行的操作来表征该资源,而忽略了它们的内部结构和实现细节。我们把这样一组相关的数据结构和过程一并称为管程。 Hansan为管程所下的定义是:“一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据”。由定义可知,管程由三部分组成:(1)局部于管程的共享变量说明;(2)对该数据结构进行操作的一组过程;(3)对局部于管程的数据设置初始值的语句。此外,还需为该管程赋予一个名字。图3-2是一个管程的示意图。 * 系统中的各种硬件资源和软件资源,均可用数据结构加以抽象的描述,即用少量信息和对该资源所执行的操作来表征该资源,而忽略了它们的内部结构和实现细节。我们把这样一组相关的数据结构和过程一并称为管程。 Hansan为管程所下的定义是:“一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据”。由定义可知,管程由三部分组成:(1)局部于管程的共享变量说明;(2)对该数据结构进行操作的一组过程;(3)对局部于管程的数据设置初始值的语句。此外,还需为该管程赋予一个名字。图3-2是一个管程的示意图。 管程的主要缺点 在大多数常用的编程语言中没有实现管程,虽然大多数编程语言也没有实现信号量,但很容易将Wait、Signal操作作为一个独立的子例程或操作系统的管理程序调用加入。如果某种语言本身不支持管程,那么加入管程是很困难的。 * 对共享变量和临界资源进行操作的一组原语过程(程序代码),是访问该管程的唯一途径。这些原语本身是互斥的,任一时刻只允许一个进程去调用,其余需要访问的进程就等待。 * 发送进程利用OS所提供的发送命令,直接把消息发送给目标进程。此时,发送进程和接收进程都以显式方式提供对方的标识符。 * 进程之间的通信,需要通过作为共享数据结构的实体,该实体用来暂存发送进程发送给目标进程的消息;接收进程则从该实体中,取出对方发送给自己的消息。通常把这种实体称为信箱。 * 从单任务到多任务、从单线程到多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,再优秀的程序员一次也只能做一件事情,而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。 进程(Process)是具有一定独立功能的程序在某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运

文档评论(0)

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

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

1亿VIP精品文档

相关文档