管程概述
虽然信号量是一种既方便、又有效的进程同步机制,但每个进程都要访问wait和signal操作,使得大量同步操作分布在不同进程中,给程序员编程提出较高的要求,给系统的管理也带来了麻烦。信号量的不当使用还可能导致系统死锁。为解决上述问题,引出管程。
系统中的各种硬件资源和软件资源,均可用数据结构抽象地描述其资源特性,即用少量信息和对资源所执行的操作来表征该资源,而忽略了它们的内部结构和实现细节。
管程由代表代表资源的数据结构、以及由对该共享数据结构实施操作的一组过程共同组成的管理程序。
管程的组成
1.管程名称
2.局部于管程的共享结构数据说明。
3.对该数据结构进行操作的一组过程。
4.对局部于管程的共享数据设置初始值的语句。
管程的基本特性
管程是一种程序设计语言结构成分,它和信号量具有同等的表达能力,从语言角度来看,主要有以下特征:
1.模块化
管程是一个基本程序单元,可以单独编译。
2.抽象数据结构类型
管程中不仅有数据,还有对这些数据的操作。
3.信息掩蔽
管程中的数据结构只能被管程中的过程访问。管程的数据以及过程(函数) 的具体实现在外部不可见。
4.一个进程只有通过调用管程内的过程才能进入管程访问共享数据。
5.每次仅允许一个进程在管程内执行某个内部过程。