进程同步和信号量概述
生产者-消费者示例
从信号的到信号量
用信号量解生产者-消费者问题
信号量临界区的保护
共同修改信号量引发的问题
竞争条件
解决竞争条件的直观想法
临界区
临界区代码保护的原则
软件实现方法
进入临界区的一个尝试-轮转法
进入临界区另一个条件-标记法
进入临界区的再一次尝试-非对称标记
进入临界区的Peterson算法
多进程怎么办?面包店算法
硬件实现方法
开关中断指令
使用开关中断实现,CPU上面有一个中断寄存器INTR
,每次中断的时候在该寄存器的某个标志位打上1, CPU每次执行完一条指令,每执行完一条指令都要检查标志位,如果为1,就要中断,这时如果用cli
命令,则不看该标志位,CPU无法执行中断,但对于多核CPU无效
硬件原子指令
锁可以看作只有0,1值的信号量