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

学习日期:2024.7.12

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


管程

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

管程的定义和组成:

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

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

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

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

4.管程有一个名字。

管程的基本特征:

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

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

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

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

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

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

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

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

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

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

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


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

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

相关推荐
YJlio2 小时前
进程和诊断工具学习笔记(8.29):ListDLLs——一眼看清进程里加载了哪些 DLL,谁在偷偷注入
android·笔记·学习
lkbhua莱克瓦243 小时前
集合进阶8——Stream流
java·开发语言·笔记·github·stream流·学习方法·集合
爱学java的ptt3 小时前
jvm笔记
jvm·笔记
雾岛听蓝3 小时前
C++ 类和对象(一):从概念到实践,吃透类的核心基础
开发语言·c++·经验分享·笔记
一个平凡而乐于分享的小比特4 小时前
UCOSIII笔记(十四)时间戳
笔记·时间戳·ucosiii
YJlio5 小时前
ShareEnum 学习笔记(9.5):内网共享体检——开放共享、匿名访问与权限风险
大数据·笔记·学习
泽虞5 小时前
《STM32单片机开发》p7
笔记·stm32·单片机·嵌入式硬件
FakeOccupational6 小时前
电路笔记(信号):网线能传多少米?网线信号传输距离
开发语言·笔记·php
Yawesh_best15 小时前
告别系统壁垒!WSL+cpolar 让跨平台开发效率翻倍
运维·服务器·数据库·笔记·web安全
Ccjf酷儿17 小时前
操作系统 蒋炎岩 3.硬件视角的操作系统
笔记