XuSenfeng

个人站

复读了,更新随缘,有的文件不全或者图片缺失具体看我的笔记库(https://github.com/XuSenfeng/note)


目录

互斥锁

解决临界问题最简单的工具就是互斥锁, 一个进程在进入临界区的时候获得锁, 退出的时候释放

image-20230628135608374

两个操作必须是原子操作, 缺点是盲等, 其他进程进入临界区的时候必须连续循环调用acquire(), 有多个进程共享一个CPU的时候浪费时钟周期, 所以常用于多处理器系统

自旋锁: 需要连续循环忙等的互斥锁, 比如TSL和swap指令

违反让权等待, 优点: 等待期间不用切换进程上下文, 多处理机系统中上锁的时间短等待的代价比较低(其他进程在其他处理器处理完成之会释放锁)

不太适用于单处理机系统, 忙等的时候不能解锁