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

学习日期:2024.7.12

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


管程

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

管程的定义和组成:

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

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

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

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

4.管程有一个名字。

管程的基本特征:

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

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

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

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

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

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

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

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

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

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

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


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

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

相关推荐
东京老树根2 小时前
SAP学习笔记 - BTP CAP开发06 - Customize Criticality,Map Page,Value help
笔记·学习
AM越.3 小时前
助睿:!!零代码解决!!订单利润分流数据加工o(* ̄▽ ̄*)ブ
数据仓库·笔记·etl·助睿
魔都大虾4 小时前
旧时光里面有那些情话句子 什么比较热门
笔记
Java成神之路-4 小时前
【算法刷题笔记】全题型导航目录
笔记·算法
zhangrelay4 小时前
云课实践速通系列-基础篇汇总-必修-通识基础和专业基础-2026--工科--自动化、电气、机器人、测控等
linux·笔记·单片机·学习·ubuntu·机器人·自动化
05候补工程师5 小时前
【编译原理】自顶向下语法分析深度解析:从 LL(1) 文法判定、改写到预测分析表
经验分享·笔记·考研·自然语言处理
ErizJ6 小时前
Linux|学习笔记
linux·笔记·学习
wanghanjiett7 小时前
笔记:ESP32驱动SimpleFOC成功(基于Espressif-IDE)
笔记·esp32·foc
大邳草民7 小时前
Python 爬虫:从 HTTP 请求到接口分析
笔记·爬虫·python
南湖渔歌7 小时前
【成功实践版】workbuddy_把多张图片转成完整Markdown笔记
人工智能·笔记·workbuddy