【CO003】操作系统笔记4 —— IPC 问题

笔者:YY同学

生命不息,代码不止。好玩的项目尽在GitHub


文章目录


什么是 IPC 问题?

IPC(Inter Process Communication)问题是进程或线程之间相互通信时可能会发生的一系列问题,一般是共享数据的读写冲突问题。通常情况下,对于共享数据,我们希望在某个时刻只有一个进程(线程)在操作(增、删、查、改)它,这就意味着此时其他进程(线程)无法进入该数据域,这种性质就是互斥性(Mutual Exclusion),而该数据域又称冲突域(Critical Section),IPC 问题大多数是解决冲突域的问题,解决方案需要具备良好的互斥性。


冲突域(Critical Section)

【CO003】操作系统笔记4 —— IPC 问题

冲突域是指代码中可能存在读写冲突且含有共享变量的区域。上图表示的是 IPC 问题的一般解决思路,由进入冲突、冲突部分和退出冲突三个部分的代码块组成。其中,在冲突部分中实现单进程(线程)的读写会比较安全,这意味着这一过程将没有其他进程(线程)参与。


IPC 问题解决方案必须满足的四大准则

内容 现实生活中的例子
准则一 没有两个进程(线程)可以同时进入冲突域 公共厕所单人隔间不可能同时进去两个人
准则二 冲突域中的进程(线程)不能决定 CPU 处理速度以及限定 CPU 的 个数 你无法预计你上厕所需要多久,而且你也不知道自己的排放量是多少
准则三 当进程(线程)离开冲突域后不能将冲突域锁住,换言之此时其他进程(线程)要能够进入冲突域 当你上完厕所后你不能把厕所门锁上然后*出去,这样虽然厕所里并没有人在使用它,但其他人也无法进入
准则四 没有进程(线程)可以永久占用冲突域,没有进程(线程)需要在进入冲突域前永久等待 你不可能一直呆在厕所里,在外面等你的人也不能一直在外面等你

五种 IPC 问题解决方案

【CO003】操作系统笔记4 —— IPC 问题
解决方案一:禁用中断

  • 描述:在冲突域内部禁止使用上下文切换。
  • 优点:可以杜绝其他进程(线程)对进入冲突域的执行进程(线程)的干扰。
  • 缺点:当有进程(线程)进入冲突域之后,会对所有进程进行强制中断。
  • 评价:该解决方案虽然能达到目的,但是缺乏限制,太过随意。

【CO003】操作系统笔记4 —— IPC 问题
解决方案二:添加

上一篇:如何使用 “自定义镜像” 创建容器服务 Kubernetes 集群


下一篇:*三角形-简单也不简单