内容体系
- 操作系统概述(?)
- 进程管理(???)
- 存储管理(?)
- 文件管理(??)
- 设备管理(??)
2 进程管理
死锁问题
进程管理是操作系统的核心,如果设计不当,就会出现死锁问题。
如果一个进程在等待一个不可能发生的事,则进程就死锁了,而如果一个或多个进程产生死锁,就会造成系统死锁。
解决死锁
- 死锁预防
设置某些限制条件, 破坏产生死锁的四个必要条件中的一个或几个, 以预防发生死锁。
- 死锁避免
对资源进行分段展开。
- 死锁检测
死锁检测是一种依靠算法机制来实现的死锁预防机制,它主要是针对那些不可能实现按序加锁,也不能使用定时锁的场景的。
- 死锁解除
银行家算法
分配资源的原则
通过一个例题说明:
例: 5个线程,4种资源,已经将线程池种的部分资源分配。
线程名 | 已拥有 | 还需 | 可利用 |
P0 | 0032 | 0012 | 1622 |
P1 | 1000 | 1750 | |
P2 | 1354 | 2356 | |
P3 | 0332 | 0652 | |
P4 | 0014 | 0656 |
分析:
可利用资源1622
- P0已拥有0 0 3 2,需要0 0 1 2,将可利用分配给P0,则资源池中剩下1 6 1 0,但P0拥有0 0 4 4开始运行,结束后释放,则此时总资源为1 6 5 4。
- P1拥有1 0 0 0,需要1 7 5 0,资源池中不够,P1搁置。
- P2拥有1 3 5 4,需要2 3 5 6,资源池中不够,P2搁置。
- P3已拥有0 3 3 2,需要0 6 5 2,将可利用分配给P3,则资源池中剩下1 0 0 2,但P3拥有09 8 4开始运行,结束后释放,则此时总资源为1 9 8 6。
- P4已拥有0 0 1 4,需要0 6 5 6,将可利用分配给P4,则资源池中剩下1 3 3 0,但P0拥有0 6 6 10开始运行,结束后释放,则此时总资源为1 9 9 10。
然后回搁置,重新试分配。
- P1拥有1 0 0 0,需要1 7 5 0,将可利用分配给P1,则资源池中剩下0 2 4 10,但P1拥有2 7 5 0开始运行,结束后释放,则此时总资源为2 9 9 10。
- P2拥有1 3 5 4,需要2 3 5 6,将可利用分配给P2,则资源池中剩下0 6 4 4,但P1拥有3 7 1 0开始运行,结束后释放,则此时总资源为3 12 14 14。
进程的互斥和同步
互斥:如千军万马过独木桥。
同步:速度有差异,在一定情况下停下等待。
PV操作
PV操作就是为了解决互斥和同步问题。PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。
信号量:是一种特殊的变量,可以理解为计数器。
P操作:使S=S-1,若S>=0,则该进程继续执行,否则该进程进入等待队列。
V操作:使S=S+1,若S<=0,唤醒等待队列中的一个进程。