5.3 管程

管程概述

虽然信号量是一种既方便、又有效的进程同步机制,但每个进程都要访问wait和signal操作,使得大量同步操作分布在不同进程中,给程序员编程提出较高的要求,给系统的管理也带来了麻烦。信号量的不当使用还可能导致系统死锁。为解决上述问题,引出管程。

系统中的各种硬件资源和软件资源,均可用数据结构抽象地描述其资源特性,即用少量信息和对资源所执行的操作来表征该资源,而忽略了它们的内部结构和实现细节。

管程由代表代表资源的数据结构、以及由对该共享数据结构实施操作的一组过程共同组成的管理程序。

管程的组成

1.管程名称

2.局部于管程的共享结构数据说明。

3.对该数据结构进行操作的一组过程。

4.对局部于管程的共享数据设置初始值的语句。

管程的基本特性

管程是一种程序设计语言结构成分,它和信号量具有同等的表达能力,从语言角度来看,主要有以下特征:

1.模块化
管程是一个基本程序单元,可以单独编译。

2.抽象数据结构类型
管程中不仅有数据,还有对这些数据的操作。

3.信息掩蔽
管程中的数据结构只能被管程中的过程访问。管程的数据以及过程(函数) 的具体实现在外部不可见。

4.一个进程只有通过调用管程内的过程才能进入管程访问共享数据。

5.每次仅允许一个进程在管程内执行某个内部过程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容