🌈个人主页:godspeed_lucip
🔥 系列专栏:OS从基础到进阶
- 1 进程同步(上)
- 1.1 进程同步与互斥
- 1.1.1 进程同步
- 1.1.1.1 必要性
- 1.1.1.2 什么是进程同步
- 1.1.2 进程互斥
- 1.1.2.1 必要性
- 1.1.2.2 什么是进程互斥
- 1.1.2.3 进程互斥的逻辑过程
- 1.1.2.4 实现进程互斥的原则
- 1.1.3 总结
- 1.2 进程互斥的软件实现方法
- 1.2.1 总览
- 1.2.2 单标志法
- 1.2.2.1 算法思想
- 1.2.2.2 实例
- 1.2.2.3 缺点
- 1.2.3 双标志先检查法
- 1.2.3.1 算法思想
- 1.2.3.2 实例
- 1.2.3.3 缺点
- 1.2.4 双标志后检查法
- 1.2.4.1 算法思想
- 1.2.4.2 实例
- 1.2.4.3 缺点
- 1.2.5 Peterson算法
- 1.2.5.1 算法思想
- 1.2.5.2 实例
- 1.2.5.3 缺点
- 1.2.6 总结
- 1.3 进程互斥的硬件实现方法
- 1.3.1 总览
- 1.3.2 中断屏蔽方法
- 1.3.2.1 算法思想
- 1.3.2.2 实例
- 1.3.2.3 缺点
- 1.3.3 Test and Set指令(TSL)
- 1.3.3.1 算法思想
- 1.3.3.2 解释
- 1.3.3.3 优缺点
- 1.3.4 Swap指令(或称为exchange、XCHG)
- 1.3.4.1 算法逻辑
- 1.3.4.2 解释
- 1.3.4.3 优缺点
- 1.3.5 总结
- 1.4 互斥锁
- 1.4.1 解释
- 1.4.2 注意
- 1.4.3 缺点
- 1.4.4 特性
- 🕮 2 总结
1 进程同步(上)
1.1 进程同步与互斥
1.1.1 进程同步
1.1.1.1 必要性
进程具有异步性的特征,异步性是指各并发执行的进程以各自独立的、不可预知的速度向前推进,可能导致我们的程序不按期望的顺序前进,进而产生错误的结果。由此,操作系统引入了进程同步
1.1.1.2 什么是进程同步
可以理解为进程之间必须按照一定的先后顺序执行
1.1.2 进程互斥
1.1.2.1 必要性
1.1.2.2 什么是进程互斥
1.1.2.3 进程互斥的逻辑过程
注意:
1.1.2.4 实现进程互斥的原则
1.1.3 总结
1.2 进程互斥的软件实现方法
1.2.1 总览
1.2.2 单标志法
1.2.2.1 算法思想
背后的逻辑是谦让
1.2.2.2 实例
对于P0、P1进程,假设有这样一对执行代码
则它们的执行过程为
1.2.2.3 缺点
1.2.3 双标志先检查法
1.2.3.1 算法思想
它背后逻辑是表达意愿
1.2.3.2 实例
则进程P1、P2在访问临界资源之前,会首先检查其他进程是否在使用(表达自己想使用的意愿),只有没有人在访问的时候才进行访问。
1.2.3.3 缺点
试想,当P0在执行到②时,P0的时间片被用完,P1执行⑤,发现此时没有进程在访问,于是继续执行。这样,就会造成同时访问临界资源的情况。
1.2.4 双标志后检查法
1.2.4.1 算法思想
1.2.4.2 实例
P0、P1在使用进程时,首先表达自己想使用的意愿(将自己赋为true),即首先进行上锁,接着再检查是否有别的进程希望使用,如果没有那么自己就可以使用了,如果有那么就等待其他进程结束。
1.2.4.3 缺点
试想,假如按照①⑤②⑥的顺序执行,则P0、P1都想访问资源,造成的结果就是全部都在等对方访问结束,于是发生死锁,谁都访问不了。
1.2.5 Peterson算法
1.2.5.1 算法思想
进程在使用资源前,先表达自己想要使用的意思,接着再表示可以优先让其他进程使用
1.2.5.2 实例
重在理解算法的思想。
根据Turn的值就可以判断出到底是哪个进程最后表达了谦让的意思
1.2.5.3 缺点
试想,P0始终没有去访问资源,但是在该算法中,P0始终占用着处理机,使处理机处于”忙等待“的状态。
1.2.6 总结
1.3 进程互斥的硬件实现方法
1.3.1 总览
1.3.2 中断屏蔽方法
1.3.2.1 算法思想
1.3.2.2 实例
1.3.2.3 缺点
事实上,中断屏蔽只可以屏蔽一个处理机,而并不能影响其他处理机,所以如果其他处理机上有进程在访问临界资源就会出错。
1.3.3 Test and Set指令(TSL)
1.3.3.1 算法思想
1.3.3.2 解释
假设P0要进行访问操作。当Lock原来为False时,则说明没有进程在访问,此时P0可以访问。而当Lock为True时,说明此时有其他进程在访问,P0一直执行while代码段,且Lock一直被置为True,直到其他进程访问完毕并将Lock置为False,P0才可以跳出while循环进行访问。
1.3.3.3 优缺点
1.3.4 Swap指令(或称为exchange、XCHG)
1.3.4.1 算法逻辑
1.3.4.2 解释
基本上与TSL算法的逻辑是一样的
1.3.4.3 优缺点
与TSL一致。
1.3.5 总结
1.4 互斥锁
1.4.1 解释
1.4.2 注意
例如我们之前学习的使用一个while循环来实现加锁功能的代码就是自旋锁
1.4.3 缺点
1.4.4 特性
🕮 2 总结
操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。
它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。
操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。
在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。
渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍