我相信很多小白对于操作系统内的这三个概念并不陌生,然而理解并不一定明白,很多都是一知半解,今天我就彻底给将明白。

先用一句话理解三者关系

        进程 = 工厂,资源单位,通俗点就是提供干活的场地和设施,工人来干活你要提供干活场地

                   和工具,例如:扳手、钳子等之类,对于术语来说就是内存、文件、独立的空间等,

                   也就是干活的必备资源。
        线程 = 工人(执行者,这个好理解)
        管程 = 安全的“车间管理制度”(同步机制),这个也好理解,就是这么多工人在一起干活,得

             有人监督管理,否则消极怠工、互相串岗,那不是乱套了,所以它是管理这些执行者的。

项目 进程 线程
资源 独立 共享
开销
稳定性 高(崩一个不影响其他) 低(崩一个可能影响整个进程)

管程,这个最容易抽象,但其实很简单,管程是一种**“保证线程安全访问共享资源的机制”**。防止多个线程同时乱改数据;

管程做什么?

管程 = “排队 + 锁 + 规则”

线程A ─┐
线程B ─┼──> 管程(一次只允许一个线程进入)
线程C ─┘

它们3者关系可以图标解释:

       线程A
       线程B
       线程C
         │
        ▼
┌──────────┐
   管程    ← 同一时刻只允许一个线程进入
   (锁机制)  
└──────────┘
       │
      ▼
共享资源(如:余额、文件)

管程解决什么问题?

没有管程                                                 有管程

线程A:余额 = 100                                线程A:进入 → 修改 → 离开
线程B:余额 = 100                                线程B:等待A结束
A改成120                                               线程C:等待
B也改成120(覆盖错误)
 

我相信我这样的解释能让你理解透彻了吧?

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐