linux 临界区保护方法,操作系统-信号量临界区保护,

操作系统-信号量临界区保护,

什么是信号量?通过对这个量的访问和修改,让大家有序推进

1. 共同修改信号量引出的问题

d1e2d283d3c51a14ae660abaa8a2dd6b.png

2. 竞争条件

dc2b564a36bb5b63c74a04e0e7ad3aa3.png

3. 解决竞争条件的直观想法

e2d2165cf3e70b5a493d34fa6e25d943.png

4. 临界区

临界区:临界区是指进程中的一段需要访问共享资源并且另一个进程处于相应代码区域时便不会被执行的代码区域

互斥:当一个进程处于临界区并访问共享资源时,没有其他进程会处于临界区并且访问任何相同的共享资源

216cae1136e8638da00dd6101abfac71.png

临界区代码的保护原则

f02ad1ee4f286284096ad41b0a821979.png

5. 临界区尝试一:轮换法

如果turn=0,那就进入执行,turn!=0,那就空转

10f1b388faa63eda451e86015a0bdb92.png

6. 临界区的尝试二:标记法

2a41e9ad8193f9f02733ee7fa9f41a6a.png

代码实现:

p0进入先打标记,如果发现p1也打标记了,那么就空转,等p1执行完flag[1] = false , p0再进入执行,

e81e1164920a2ad659e35585b809c6d8.png

标记法引发的问题:

1d20cbdb9f70555cb26964233a07c597.png

7. 临界区的尝试三:非对称标记

9ebc19c102e6154586dbdeac55504834.png

Peterson算法

758d707737ccc4ee05020cfa0d25a5ba.png

Peterson算法的正确性

3eba0a4932e082e39023ae34147f2ad1.png

8. 保护临界区方法一

面包店算法

f97cb8733220759fdc25c5305f819fd1.png

面包店算法的正确性:

4db1764dddf5e43279668874580f6f8a.png

9. 保护临界区方法二

硬件实现:开关中断

仅限用于但处理器

cli(); 关中断

sti(); 开中断

但多cpu不好使:因为当前的cpu只能控制当前的进程

edb3db74798955c97293fd3b85fe2d7c.png

10. 保护临界区方法三

硬件原子指令法

单处理器和多处理器均可

就是类似于锁的那种,但是这个是一次执行完毕,上锁过程不会被打断

de786fdb78e28fa9c7a552492374a5a5.png

http://www.dengb.com/Linuxjc/1397632.htmlwww.dengb.comtruehttp://www.dengb.com/Linuxjc/1397632.htmlTechArticle操作系统-信号量临界区保护, 什么是信号量?通过对这个量的访问和修改,让大家有序推进 1. 共同修改信号量引出的问题 2. 竞争条件 3...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值