清华 操作系统原理 (课程笔记)——同步、临界区


背景

在这里插入图片描述在这里插入图片描述

在这里插入图片描述


临界区

在这里插入图片描述
例子
在这里插入图片描述

错误原因:上下文切换,恢复Reg1 的值是100.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
冰箱里还有其他东西,所以不能直接把冰箱锁起来,用字条来“锁”
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

临界区的属性

在这里插入图片描述

临界区实现:硬件中断发

加粗样式
在这里插入图片描述
并且在多cpu的处理器中没有起到作用

临界区实现:软件方法

在这里插入图片描述
在这里插入图片描述
满足互斥,不满足前进
在这里插入图片描述
不满足互斥
在这里插入图片描述
正确解法:
p算法
在这里插入图片描述
在这里插入图片描述
d算法
在这里插入图片描述
N个进程的算法
在这里插入图片描述
对于当前进程 ,前面有进程的时候,要等着前面的执行完了才能执行。

在这里插入图片描述

临界区实现:基于硬件的原子操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这两个指令被做成了机器指令, 执行函数不会被任何中断打断。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进程2等待的时候,进入阻塞-睡眠。进程1 退出临界区,value=0, 唤醒其他进程。
临界区时间短:采用忙等待。
临界区时间长:采用无忙等待。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

临界区有三种方法:硬件中断、软件模拟、硬件的原子操作。
显然硬件的原子操作更加轻便和有效。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值