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

【系统架构设计师】第一章:操作系统(1.2.3)续:管程上节链接【系统架构设计师】第一章:操作系统(1.2.3)死锁问题这一节其实想水一章来着。。。因为书上的东西实在是太少,管程就提到了一点,我也不好写太多。不过细想一下,还是决定写点吧。1.2.3管程书上给的东西太少,而且写的很难懂,所以这里我就先不引用书上的东西了,直接写一些自己的理解了。本文参考链接:https://blog.csdn.net/zy702432103/article/details/84259683https://blog.csdn.net/qq_32534441/a.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206767.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html使用vue axios,使用 Vue和axios

    html使用vue axios,使用 Vue和axios昨天写完了博客以后,有人就在我的博客下面留言说现在不是使用了Axios了吗?我赶紧再把Axios的例程给补上,并且做一个更新。其实vue-resource并不复杂,就是不稳定。Vue官方放弃它也是对的,作者是这样子说的最近团队讨论了一下,Ajax本身跟Vue并没有什么需要特别整合的地方,使用fetchpolyfill或是axios、superagent等等都可以起到同等…

    2025年6月29日
    2
  • idea打不开,点击后无反应,多次重装无效解决办法。

    idea打不开,点击后无反应,多次重装无效解决办法。昨天更新了新版本idea,然后直接用激活码激活了,应用了旧版本的配置,当时用着没问题,后来删除掉了旧版本的安装目录,今天再打开idea时候多次点击无反应,多次重装无效,然后开始寻找解决办法。百度之后很多人反映是idea64.exe.vmoptions和idea.exe.vmoptions文件中,当时激活成功教程时候加的激活成功教程文件路径找不到报错的原因,然而检查后发现并没有激活成功教程文件的路径,最后试着在idea…

    2022年8月30日
    6
  • MySQL数据库:explain执行计划详解

    MySQL数据库:explain执行计划详解

    2021年4月9日
    138
  • 西门子plc scl语言很少人用_西门子plc的scl语言

    西门子plc scl语言很少人用_西门子plc的scl语言原标题:为什么说SCL将成为西门子PLC的主流编程语言接触S7-1200的时间不是很长,但个人感觉TIAPROTAL中的SCL编程语言还不错,下面是我写的一个传送带的启停程序:bnnyygysaid:我献丑来一个,半成品,给设备改造的,用的欧姆龙CP1L,ST语言功能块,部分节选。wenpiansaid:还是梯形图适合逻辑。ljj977said:程序写的不错。tiaprotal中可以…

    2022年9月13日
    2
  • jQuery数组反转「建议收藏」

    jQuery数组反转「建议收藏」代码很短,不过实现的时候需要原始数组的配合。并且,对数字索引数组支持还不错,索引不连续的一样支持(对于非连续索引,只取最大的索引加1作为数组的长度,不影响数组元素反转)。 $(function(){ vararr1=[23,45,77,2,5]; //数组反转。 varlen1=arr1.length; varnewarr1=$.map(

    2022年5月15日
    43
  • TaskScheduler.UnobservedTaskException「建议收藏」

    TaskScheduler.UnobservedTaskException「建议收藏」TaskScheduler.UnobservedTaskException+=(_,ev)=>PrintException(ev.Exception);

    2022年10月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号