【操作系统】进程管理——管程(个人笔记)

学习日期:2024.7.12

内容摘要:管程的定义和基本特征


管程

管程存在的意义 :在上一章节中,我们学习了利用信号量机制解决进程同步互斥问题的方法,信号量机制编写程序较为复杂困难,易出错。为了让程序员写程序时不再需要关注PV操作,让写代码更加轻松,引入了管程成分,一种高级同步机制。

管程的定义和组成:

管程是一种特殊的软件模块,由以下部分组成:

1.局部于管程的共享数据结构说明;

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

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

4.管程有一个名字。

管程的基本特征:

1.局部于管程的数据只能被局部于管程的过程(其实就是"函数")所访问;

2.一个进程只有允许通过调用管城内的过程才能进入管程访问共享数据;

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

以上是逻辑代码,管程好比一个类,生产者和消费者都是其中的函数,而互斥使用共享部分数据的功能则由编译器负责。这样,程序员就不需要再考虑PV操作的顺序等等,而是靠编译器和管程解决这些问题。

引入管程的目的就是要更方便的实现进程的同步与互斥

1.需要在管程中定义共享数据(如生产者消费者问题的缓冲区)

2.需要在管程中定义用于访问这些共享数据的"入口"------其实就是一些函数

3.只有通过这些特定的"入口"才能访问数据

4.管程中可以有很多入口,但每次只能开放其中一个,并且只能让一个进程或线程进入,这种互斥特性是由编译器负责实现的,程序员不用关心

5.可在管程中设置条件变量及等待/唤醒操作以解决同步问题。可以让一个进程或线程在条件变量上等待(此时,该进程应该先释放管程的使用权,也就是让出"入口");可以通过唤醒操作将等待在条件变量上的进程或线程唤醒。

程序员可以用某种特殊的语法定义一个管程,之后其它程序员就可以使用这个管程提供的特定"入口"很方便的实现进程同步/互斥了。这其实就是"封装"的思想


感谢您看到这里,如果满意的话麻烦您点个赞支持一下,个人主页还有更多内容分享。

内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》

相关推荐
龙鸣丿38 分钟前
Linux基础学习笔记
linux·笔记·学习
Nu11PointerException3 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
亦枫Leonlew4 小时前
三维测量与建模笔记 - 3.3 张正友标定法
笔记·相机标定·三维重建·张正友标定法
考试宝4 小时前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
黑叶白树6 小时前
简单的签到程序 python笔记
笔记·python
幸运超级加倍~7 小时前
软件设计师-上午题-15 计算机网络(5分)
笔记·计算机网络
芊寻(嵌入式)8 小时前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
准橙考典8 小时前
怎么能更好的通过驾考呢?
人工智能·笔记·自动驾驶·汽车·学习方法
密码小丑10 小时前
11月4日(内网横向移动(一))
笔记
鸭鸭梨吖11 小时前
产品经理笔记
笔记·产品经理