- 管程机制
虽然信号量及其P、V操作是一种既方便又有效的进程同步工具,但如果采用这种同步机制来编写并发程序,对于共享变量及信号量变量的操作将被分散与各个进程中,有如下缺点:
a.程序易读性差。因为要了解对于一组共享变量及信号量的操作是否正确,则必须通读整个系统或者并发程序。
b.不利于修改和维护。因为程序的局部性很差,所以任一组变量或一段代码的修改都可能影响全局。
c.正确性难以保证。因为操作系统或并发程序通常很大,要保证这样一个复杂的系统没有逻辑错误是很难的。
在解决上述问题的过程中,产生了一种新的进程同步工具-管程。
(1)定义:
把所有进程对某一种临界资源的同步操作都集中起来,构成一个所谓的“秘书”进程。凡要访问该临界区的进程,都需先报告“秘书”,再由“秘书”来实现各个进程对同一临界资源的互斥使用。
一个管程定义了一个数据结构和在该数据结果上能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。
管程是由若干公共变量及其说明和所有访问这些变量的过程所组成的。
管程在结构上由三部分组成:
a.管程所管理的共享数据结构(局部变量和条件变量)&#