第6章进程同步
1. 临界区:一段可能对某个共享的数据进行修改的一段代码
2. 解决临界区必须要满足的三项要求
(1)互斥:当有一个进程在临界区内执行的时候,任何其他的进程都不可以再进入临界区执行
- 前进:空闲让进。
- 有限等待:要控制进程从做出进入临界区选择到请求被允许的过程中,其他进程被允许进入该临界区的次数(避免进程等待时间过长)
3. 信号量:信号量是一个整型值,>=0表示系统中当前某类资源的可用数目,<0表示系统中等待该资源的进程数。它的值只能由 P、V原语操作所改变。
剩下的看书
第7章死锁
1. 死锁产生的四个必要条件:(4个条件同时满足会引起死锁)
A. 互斥,B. 占有并等待,C.非抢占,D.循环等待
2. 如果分配图无环,那么系统就没有进程死锁,如果有环,那么可能存在死锁(每个资源刚好有一个实例,那么有环就意味着已经出现死锁。如果环涉及一组资源类型,而每个类型只有一个实例,那么出现死锁。环所涉及的进程就死锁。此情况下环是死锁存在的充分必要条件。
如果每个资源类型有多个实例,那么有环并不意味着已经出现死锁。此情况下环是死锁的必要不充分条件。)
3.死锁的处理方法
(1)可以用协议以预防或避免死锁
(2)可允许系统进入死锁状态,然后检测它,并加以回复
(3)可忽视这个问题,认为死锁不会发生
4. 死锁预防:
(1)对非共享资源,必须要有互斥条件
(2)当一个进程申请一个资源时,它不能沾有其他资源
(3)如果占有资源并申请另一个不能立即分配的资源,那么其现已分配的资源都可被抢占
(4)对所有资源类型进行完全排序,且要求每个进程按递增顺序来申请资源,当进程申请某个资源时,他必须释放掉所有较低序号的资源。
注:以上四条分别对应死锁的四个产生条件
副作用:低设备使用率和系统吞吐率
5. 死锁避免:
如果系统能按某个顺序为每个进程分配资源并能避免死锁,那么系统状态就是安全的,如果没有这样的顺序存在,那么系统状态就处于不安全状态。
关系:安全状态不是死锁状态,死锁状态是不安全状态,不是所有不安全状态都能导致死锁状态。
6. 银行家算法: 看书(重点)
死锁避免是根据防止系统进入不安全状态实现的
静待资源分配破坏了占有并等待条件
资资源的按序分配可以破坏循环等待条件
银行家算法是一种死锁预防算法