操作系统管程机制课件.pptx
《操作系统管程机制课件.pptx》由会员分享,可在线阅读,更多相关《操作系统管程机制课件.pptx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.管程的定义 Hansen为管程下的定义是:“一个管程(monitor)定义了一种数据结构和并发进程在该数据结构上执行的一组操作,这组操作用来实现进程间的同步和改变管程中的数据”。用管程管理循环缓冲区时,要给出管程名称,给出与所管理的共享资源(缓冲区)有关的数据结构,给出在数据结构上执行的一组操作,以及数据结构的初始化代码。如图示。局部数据、条件变量、一组操作都属于定义性质的,初始化代码才是真正的管程体。8.4 管程机制 第1页/共28页用管程管理循环缓冲区时管程的定义。8.4 管程机制 第2页/共28页局部数据和条件变量(2)条件变量是一种特殊变量,当进程在管程定义的操作中使用共享资源时,
2、若无法继续运行,就在某个条件变量上执行 wait()操作等待,将管程让给等候在管程外的进程使用,直等到有进程在该条件变量上做signal()操作才被唤醒。(1)局部数据是管程管理的共享资源的数据结构,是对共享资源的抽象。(3)条件变量不是计数器,也不像信号量那样对信号进行累计。若向有关条件变量发送信号(即调用signal()操作),而在该条件变量上没有等待的进程,那么信号就丢失。8.4 管程机制 第3页/共28页(2)管程中定义的函数分两类:外部函数是那些进程可从外部调用的函数,是进程进入管程的入口;内部函数是只能由管程内的函数调用的函数,进程不知道它们的存在,不能调用它们。建立在局部数据和条
3、件变量上的一组操作(1)管程管理的数据结构只能由在管程内部定义的函数访问,管程外部的函数不能作用在它们上面。(3)管程犹如一堵“围墙”,把共享变量代表的资源及对资源的操作围圈在管程内。进程要使用共享资源,只有通过管程提供的入口(即外部函数)才能够进入管程。另外管程一次只允许一个进程进入,以此保证对资源互斥地访问。8.4 管程机制 第4页/共28页 管程管理的共享资源在使用前需要初始化,管程中的初始化代码部分完成这样的功能。由于前面两个部分给出的都是相关的定义,因此初始化代码是管程的管程体。管程数据结构的初始化代码8.4 管程机制 第5页/共28页 右侧是组成管程的三个部分,入口处的外面有请求进
4、入管程的进程队列。左侧的管程等待区是各种等待队列。管程内部针对不同的条件变量,设置各种等待队列,以区分不同的等待原因。这些等待队列都在该管程的等待区里。条件c1队列cwait(c1)条件cn队列cwait(cn)紧急队列csignal局部数据(共享资源或数据结构)条件变量操作1:操作k:初始化代码请求进入管程队列入口退出管程等待区:管程:管程的结构8.4 管程机制 第6页/共28页 在执行管程中定义的操作时,会因执行signal(ci)而将某个进程从条件变量ci的等待队列里唤醒。由于这些被唤醒的进程已经在管程中执行了部分任务,它们理应有比那些还没有进入管程的进程(即管程入口处请求进入的进程)优
5、先得到执行的权利。因此,常把这些进程排成“紧急队列”。条件c1队列cwait(c1)条件cn队列cwait(cn)紧急队列csignal局部数据(共享资源或数据结构)条件变量操作1:操作k:初始化代码请求进入管程队列入口退出管程等待区:管程:8.4 管程机制 第7页/共28页例8-7:利用例8-6管理缓冲区的管程,解决“生产者-消费者”问题。在生产者进程里,由函数produce(x)生产一个产品,暂时放在变量x中。然后调用管程提供的入口函数append(x),试图把x里的产品存放到缓冲区去,控制进入到管程buffer。8.4 管程机制 第8页/共28页 append(x)检查缓冲区计数器,在i
6、n的指示下,把产品放到缓冲区指定位置。执行signal(empty)时,由于没有等待的消费者,故什么也不做就结束生产者进程的执行。若在append(x)还未执行signal(empty)时,有生产者或消费者进程到来,那么这些进程只能在管程外的等待进入队列里排队,等到执行signal(empty)后,才一个个地进入管程,从而保证使用管程管理资源的互斥性。利用管程,解决“生产者-消费者”问题。8.4 管程机制 第9页/共28页 若用完了n个缓冲区的位置。假定生产了第n+1个产品,并通过函数append(x)进入管程。这时,由于“count=N”成立,因此做操作“wait(full)”,该生产者进程
7、就在有关full的条件变量队列里等待唤醒。利用管程,解决“生产者-消费者”问题。8.4 管程机制 第10页/共28页 进入管程的消费者进程首先调用管程的take(x)操作,以便从缓冲区里取出产品。8.4 管程机制 第11页/共28页8.2.1 实现互斥的硬件方法 1.中断禁止 所谓“中断禁止”,是指进程以禁止中断的方法,构成临界区的进入区;以开中断的方法,构成临界区的退出区。8.2 实现互斥的方法讨论 由于禁止中断后,时钟中断和其他中断都遭封杀,就不会发生CPU进行进程切换的事情。所以,通过中断禁止的办法,完全不必担心别的进程会进入临界区。这时程序的结构如图所示。禁止中断对于操作系统来说是实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 管程 机制 课件
限制150内