清华 操作系统原理 (课程笔记)——同步、临界区
背景
临界区
例子
错误原因:上下文切换,恢复Reg1 的值是100.
冰箱里还有其他东西,所以不能直接把冰箱锁起来,用字条来“锁”
临界区的属性
临界区实现:硬件中断发
并且在多cpu的处理器中没有起到作用
临界区实现:软件方法
满足互斥,不满足前进
不满足互斥
正确解法:
p算法
d算法
N个进程的算法
对于当前进程 ,前面有进程的时候,要等着前面的执行完了才能执行。
临界区实现:基于硬件的原子操作
这两个指令被做成了机器指令, 执行函数不会被任何中断打断。
进程2等待的时候,进入阻塞-睡眠。进程1 退出临界区,value=0, 唤醒其他进程。
临界区时间短:采用忙等待。
临界区时间长:采用无忙等待。
总结
临界区有三种方法:硬件中断、软件模拟、硬件的原子操作。
显然硬件的原子操作更加轻便和有效。