大家好,又见面了,我是你们的朋友全栈君。
上节链接 【系统架构设计师】第一章:操作系统(1.2.3)死锁问题 这一节其实想水一章来着。。。 因为书上的东西实在是太少,管程就提到了一点,我也不好写太多。 不过细想一下,还是决定写点吧。
1.2.3 管程
书上给的东西太少,而且写的很难懂,所以这里我就先不引用书上的东西了,直接写一些自己的理解了。 本文参考链接: https://blog.csdn.net/zy702432103/article/details/84259683 https://blog.csdn.net/qq_32534441/article/details/95231632 https://www.zhihu.com/question/30641734 http://c.biancheng.net/view/1234.html
概念引入
管程也是用于进程之中的,和信号量以及pv操作起到类似的作用。然而,我们之前提到过,pv操作需要成对出现,因为进程使用完资源以后需要告诉系统。 这种操作其实是不安全的,因为一旦我们的pv操作没有成对出现,系统就会出现问题。因此,为了解决这些问题,就产生了管程的概念。
我们可以很形象的将使用管程的进程这样想:
- 当一个进程使用管程的时候,那么,它会将一些用到的变量和操作进行封装,像管道一样。这样,我们就可以保证,整个操作是完整的,不会像pv操作中忘记p或v就会使系统产生问题。
- 由于使用管程的进程是被封装的,所以其他进程不能进行使用,必须等待管程使用完毕才能进行使用。
细节的一些东西
我们使用管程是为了更安全,而不是彻底的封闭,因此,在一些编程语言中提供了几个方法来控制管程中进程的状态。这个我就直接截图了,书上是没有详细讲这个的。
这几个方法实现了我们之前使用pv操作中挂起,同步等。由于管程的特殊性,所以引入了enter,leave等操作。 剩下的就没什么好介绍的了,本来书上说的也不深,就当我水了一贴。
操作系统五大功能之一的处理器管理的内容已经写完了。后面会继续写其他4个。 下章链接 【系统架构设计师】第一章:操作系统(1.2.4)文件管理
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/206767.html原文链接:https://javaforall.cn