0%

HIT-OS 线程同步和信号量

进程同步和信号量概述

生产者-消费者示例

从信号的到信号量

用信号量解生产者-消费者问题

信号量临界区的保护

共同修改信号量引发的问题

竞争条件

解决竞争条件的直观想法

临界区

临界区代码保护的原则

软件实现方法

进入临界区的一个尝试-轮转法

进入临界区另一个条件-标记法

进入临界区的再一次尝试-非对称标记

进入临界区的Peterson算法

多进程怎么办?面包店算法

硬件实现方法

开关中断指令

使用开关中断实现,CPU上面有一个中断寄存器INTR,每次中断的时候在该寄存器的某个标志位打上1, CPU每次执行完一条指令,每执行完一条指令都要检查标志位,如果为1,就要中断,这时如果用cli命令,则不看该标志位,CPU无法执行中断,但对于多核CPU无效

硬件原子指令

锁可以看作只有0,1值的信号量

信号量的代码实现

可以操刀了,从纸上到实际

从Linux 0.11那里学点东西

Linux 0.11 sleep_on形成的队列

如何从Linux 0.11的这个队列中唤醒

死锁处理

死锁的成因

死锁的四个必要条件

死锁处理方法概述

死锁预防的方法例子

死锁避免:判断此次请求是否会引起死锁

死锁检测+恢复:发现问题后再处理

死锁忽略的引出

求大佬赏个饭