前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【系统架构设计师】第一章:操作系统(1.2.3)续:管程

【系统架构设计师】第一章:操作系统(1.2.3)续:管程

作者头像
全栈程序员站长
发布2022-11-19 17:45:24
2K0
发布2022-11-19 17:45:24
举报

大家好,又见面了,我是你们的朋友全栈君。

上节链接 【系统架构设计师】第一章:操作系统(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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年10月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.2.3 管程
    • 概念引入
      • 细节的一些东西
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档