【操作系统笔记7】周步与互斥

版权声明:QQ: 1063385677 Copyright ©2019 CielleeX 本文地址: https://blog.csdn.net/Ciellee/article/details/89714206

进程/线程 合作
优点: 共享资源、加速、模块化(易于扩展)

原子操作(Atomic Operation): 指一次不存在任何中断或失败的执行

临界区(Critical section)

互 区(Critical section)
方法一: 禁用硬件中断
没有中断,没有上下文切换,因此没有切换
一旦中断被禁用,线程就无法被停止,只要线程不释放,其他线程就无法获得CPU。

方法二: 基于软件的解决方法
(1): Dekker算法:第一个针对双线程的正确解决算法
Eisenberg and McGuire’s Algorithm
(2): Bakery 算法:针对N进程的临界区问题,类似银行,进入临界区前,进程接收一个数字,PID比较小的进入临界区


(3):忙等待: 浪费CPU时间
(4):Peterson算法: 没有硬件保证的情况下无真正的软件解决方案

方法三: 更高级的抽象
使用锁: 互斥、禁用中断(单处理器、软件方法(复杂)、原子操作指令)
可以选择有忙等和无忙等


临界区(Critical section)

互斥(Mutual exclusion)

死锁(Dead lock)

信号量
V: Verhoog 荷兰语 增加
P: Prolaag 荷兰语 尝试减少
在这里插入图片描述

经典问题一 ------------- 读者写者问题:

读者优先实现:
在这里插入图片描述

使用管程来实现 读者写者问题:
写者优先实现:

read实现
在这里插入图片描述

Write 实现:
在这里插入图片描述

经典问题二 ------------- 哲学家就餐问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Ciellee/article/details/89714206