[操作系统]管程.ppt
《[操作系统]管程.ppt》由会员分享,可在线阅读,更多相关《[操作系统]管程.ppt(29页珍藏版)》请在课桌文档上搜索。
1、管程(monitor)参看P51,OS设计中引入了信号量以后,互斥实现起来似乎很容易,果真是这样吗?答案是否定的!在生产者消费者问题中,曾提到:wait(mutex)、wait(empty)两个语句不能对调,否则系统死锁。说明系统的编制人员使用信号量时要特别小心。很小的错误将产生极大的麻烦。因为出现的错误与资源竞争、死锁、不可预测、不可再现有关。,1、问题提出,用信号量机制编制并发程序,对共享变量、信号量的操作(同步、互斥)被分散在各个进程中。缺点:易读性差:因为要了解对一组变量及信号量的操作,需要读懂全部并发的程序。难以修改和维护:对一组变量和代码的修改,必须对使用它的全部程序进行修改(因为
2、同步、互斥分散在所有相关并发程序中。正确性难以保证:OS通常很复杂,同步、互斥过于分散,很难保证逻辑上的正确性。既然分散的同步操作有缺点,人们就想到把同步机制集中到一个模块中,这就是早期(1971)的秘书进程思想。,Dijkstra(1971):提出“秘书”进程的思想。Hansen和Hoare(1973):推广为“管程”。,管程基本思想:把信号量及其操作原语封装在一个对象内部。(将共享变量以及对共享变量能够进行的所有操作集中在一个模块中)。每次只允许一个进程访问管程内的资源。,结论:用信号量实现的互斥机制,其正确性依赖于用户进程(程序员编写的程序):如果用户进程在进入临界区之前没有用 Wait
3、(mutex)申请,或退出临界区时没有用 Signal(mutex)释放临界区,互斥就不能正确的实现。OS的工作者设计了一种靠语言编译器实现互斥正确性的机制-管程机制。管程是编程的构件。管程机制确保一次只有一个进程在管程内活动,程序员不需要显式地用信号量机制编写实现互斥的代码。,2.管程的引入,管程:一种同步机制,是编程的构件。管程定义:,X状态:busy 忙、free 闲一组操作:request(X)申请、release(X)释放。,封装在一个管程中,管程外某进程申请/释放资源时,调用request(X)或release(X)即可,同步与互斥由管程完成。,管程是关于共享资源的数据结构及一组针
4、对该资源的操作过程所构成的软件模块。使互斥操作相对集中,从而增加了模块的相对独立性。,数据结构是资源的抽象描述例如:对于某临界资源用共享变量X表示,例如:对于进程阻塞队列(临界资源)用变量bq表示,数据结构:队首指针、队尾指针、队列长度一组操作:insertF(bq)、insertL(bq)、remove(bq)、insert(bq)等,执行的进程等待事件时,Block(bq),调用insert(bq)进入 阻塞 队 列,阻塞队列是一个临界资源,为各进程所共享,阻塞进队、唤醒出队要互斥进行。在使用管程后,进队由block(bq)调用管程中的insert(bq)过程,就可进入阻塞队列,block
5、(bq)设计者无须再考虑互斥、同步问题。,封装在管程中,3、管程的结构和特性,抽象数据类型:管程中不仅有数据,而且有对数据进行操作的代码。,模块化:一个管程是一个基本程序单位,可以单独编译;,信息封装:管程是半透明的,管程中的内部过程(函数)实现了某些功能,至于这些功能是怎样实现的,在其外部则是不可见的。,管程有四部分组成,名称:为每个共享资源设立一个管程 数据结构说明:一组局部管程的控制变量 操作原语:对控制变量和临界资源进行操作 的一组原语,是访问该管程的唯一途径。这些原语本身是互斥的,任一时刻只允许一个进程去调用,其余需要访问的进程就等待。初始化代码:对控制变量进行初始化的代码,教材中称
6、之过程,1)局部数据(共享变量)在管程外不可见,只能通过管程内部的过程访问。,2)管程要互斥进入,其中只能有一个活动的进程。当活动的进程 退出管程,或阻塞才允许下一个进程进入管程。,当一个进程试图进入一个被占用的管程时,在入口出等待。,3)管程是管理资源的(资源用共享数据抽象表示),因此,管程内部有进程等待(阻塞)队列,以及等待与唤醒操作,这种队列称之:条件队列。,4)管程是一个编程单位,相应的编译器能识别,入口处互斥进入代码和出口退出代码由编译器自动产生。,4、条件变量引入,当进入管程的进程因资源被占用等原因不能继续运行时,使其等待。(让出CPU称之释放管程互斥权)。为此在管程内部可以说明和
7、使用一种特殊类型的变量:条件变量。每个条件变量表示一种等待原因,并不取具体数值。每个原因对应一个等待队列。,例如,X代表某临界资源,变量busy表示X的状态:忙、或闲。定义一个条件变量nonbusy(等待条件不忙)。当进入管程的进程R/W该资源时,发现资源X的状态为忙(busy为“忙”),则该进程:进入等待该资源的阻塞队列或称之进入X的等待条件不忙队列或称之进入nonbusy条件队列。并释放管程的互斥权。当进入管程的另一进程释放与某条件变量相关的资源时,应该唤醒在该条件上等待的一个进程。,5、多个进程出现在管程中,当一个进入管程的进程执行唤醒操作时(如唤醒),管程中便存在两个同时处于活动状态的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 管程

链接地址:https://www.desk33.com/p-245825.html