文章目录
IPC(inter process communication进程间通信)
竞争条件(Race conditions)
进程共享某些共用存储区
临界区(Critical Region)
互斥访问,避免临界区的竞争
临界区: 对共享内存进行访问的程序片段
- 条件:
1)任何两个进程不能同时处于其临界区
2)不应对CPU的速度和数量做任何假设
3)临界区外运行的进程不得阻塞其他进程
4)不得使进程无限期等待进入临界区
互斥方案
屏蔽中断
单处理器系统中,每个进程刚进入临界区后立即屏蔽所有中断(包括时钟中断),CPU就不会切换到其他进程,离开时打开中断
- 缺点:
把屏蔽中断的权力交给用户进程
对CPU数量作了假设 - 优点:
对内核来说很方便频闭终端对操作系统而言实用,对用户进程不实用
锁变量
定义一个共享的锁变量
进程在进入时测试锁,为0可进入则将其置1进入,退出置0.为1则等待直至0
- 缺点:
需要将锁变量存在共享内存
读取,修改为多部操作,容易出现冲突
严格轮换法
锁变量记录轮到哪个进程进入临界区,轮流进入
忙等待: 连续测试一个变量直到某个值出现(浪费CPU时间)
- 缺点:
规定了进程执行的顺序
无法完全利用临界区,块的进程需等待慢进程先使用临界区
Peterson解法
依旧是两个进程竞争,但不需严格轮换
- 只有一个进程进入时(如0):