我相信很多小白对于操作系统内的这三个概念并不陌生,然而理解并不一定明白,很多都是一知半解,今天我就彻底给将明白。
先用一句话理解三者关系
进程= 工厂,资源单位,通俗点就是提供干活的场地和设施,工人来干活你要提供干活场地
和工具,例如:扳手、钳子等之类,对于术语来说就是内存、文件、独立的空间等,
也就是干活的必备资源。
线程= 工人(执行者,这个好理解)
管程= 安全的“车间管理制度”(同步机制),这个也好理解,就是这么多工人在一起干活,得
有人监督管理,否则消极怠工、互相串岗,那不是乱套了,所以它是管理这些执行者的。
| 项目 | 进程 | 线程 |
|---|---|---|
| 资源 | 独立 | 共享 |
| 开销 | 大 | 小 |
| 稳定性 | 高(崩一个不影响其他) | 低(崩一个可能影响整个进程) |
管程,这个最容易抽象,但其实很简单,管程是一种**“保证线程安全访问共享资源的机制”**。防止多个线程同时乱改数据;
管程做什么?
管程 = “排队 + 锁 + 规则”
线程A ─┐
线程B ─┼──> 管程(一次只允许一个线程进入)
线程C ─┘
它们3者关系可以图标解释:
线程A
线程B
线程C
│
▼
┌──────────┐
管程 ← 同一时刻只允许一个线程进入
(锁机制)
└──────────┘
│
▼
共享资源(如:余额、文件)
管程解决什么问题?
没有管程有管程
线程A:余额 = 100 线程A:进入 → 修改 → 离开
线程B:余额 = 100 线程B:等待A结束
A改成120 线程C:等待
B也改成120(覆盖错误)
我相信我这样的解释能让你理解透彻了吧?