操统期末总结
3
–当为互斥操作时,它们同处于同一进程
–当为同步操作时,则不在同一进程中出现
–如果 P(s1)和 P(s2)两个操作在一起,那么 P 操作的顺序至关重要,一个同步 P 操作
与一个互斥 P 操作在一起时同步 P 操作在互斥 P 操作前
–两个 V 操作无关紧要
3)P、V 操作的优缺点
优点:简单,而且表达能力强(用 P.V 操作可解决任何同步互斥问题)
缺点:不够安全;P、V 操作使用不当会出现死锁;遇到复杂同步互斥问题时实现
复杂
管程
一种同步机制
是关于共享资源的数据及在其上操作的一组过程(或共享数据结构及其规定的所有操
作)
管程的四个组成部分:
•名称
•数据结构说明
•对该数据结构进行操作的一组过程/函数
•初始化语句
管程的三个主要的特性
(1)模块化,一个管程是一个基本程序单位,可以单独编译
(2)抽象数据类型,管程是一种特殊的数据类型,其中不仅有数据,而且有对数据进
行操作的代码
(3)信息掩蔽,管程是半透明的,管程中的外部过程(函数)实现了某些功能,至于
这些功能是怎样实现的,在其外部则是不可见的
管程有如下几个要素:
(1)管程中的共享变量在管程外部是不可见的,外部只能通过调用管程中所说明的外
部过程(函数)来间接地访问管程中的共享变量
(2)为了保证管程共享变量的数据完整性,规定管程互斥进入
(3)管程通常是用来管理资源的,因而在管程中应当设置进程等待队列以及相应的等
待/唤醒操作
因为管程是互斥进入的,所以当一个进程试图进入一个已被占用的管程时,应当在管程
的入口处等待,所以在管程的入口处应当有一个进程等待队列,称作
入口等待队列
如果进程P唤醒进程Q,则P等待Q继续,如果进程Q在执行又唤醒进程R,则Q等待
R继续,……,如此,在管程内部,由于执行唤醒操作,可能会出现多个等待进程,因
而还需要有一个进程等待队列,这个等待队列被称为紧急等待队列。它的优先级应当高
于入口等待队列的优先级
此在管程内部可以说明和使用一种特殊类型的变量,称作条件变量:
var c:condition;
对于条件型变量,可以执行 cwait 和 csignal 操作
cwait(c):
如果紧急等待队列非空,则唤醒第一个等待者;否则释放管程的互斥权,执行此操作的
进程进入 c 链尾部
csignal(c):
评论0
最新资源