NOTE
2.5 同步
1. 同步和互斥 1.1. 同步 多个进程按一定顺序执行 1.2. 互斥 多个进程在同一时刻只有一个进程能进入临界区 1.2.1. 临界区 访问同一个资源的代码叫做临界区 2. 同步的方式 2.1. 信号量 一个整形变量,可以执行down和up操作 - down:如果信号量大于 0 ,执行 -1 操
这是历史学习笔记,可能存在过时或不完整的理解。
1. 同步和互斥
1.1. 同步
多个进程按一定顺序执行
1.2. 互斥
多个进程在同一时刻只有一个进程能进入临界区
1.2.1. 临界区
访问同一个资源的代码叫做临界区
2. 同步的方式
2.1. 信号量
一个整形变量,可以执行down和up操作
- down:如果信号量大于 0 ,执行 -1 操作;如果信号量等于 0,进程睡眠,等待信号量大于 0;
- up:对信号量执行 +1 操作,唤醒睡眠的进程让其完成 down 操作。
2.1.1. 互斥量
如果信号量的取值只能为 0 或者 1,那么就成为了 互斥量(Mutex) ,0 表示临界区已经加锁,1 表示临界区解锁。
2.2. 管程
信号量需要处理很多细节问题,引入了管程。 管程引入了Condition的操作:wait()和signal
3. 经典同步问题
3.1. 生产者/消费者问题
- 信号量
- 互斥量
- 管程