英语考试完毕、英语老师怒气攻心,一怒之下大吼一声:你知不知道18分是什么概念?我来告诉你丫的!于是做出了一个惊天地泣鬼神前无古人后无来者至今为我们津津乐道的举动!!她抽出了一张空白答题卡,放在地板上在正面踩了一脚,反面踩了一脚,放到读卡机器里面,然后读卡器读完这张答题卡....36分。。。。
在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统的处理能力,但是会出现死锁现象。
1、 死锁的定义
a) 是指多个进程因竞争资源或相互通信而处于永久阻塞状态,若无外力作用,这些进程都将无法向前推进。
2、 死锁产生的原因
a) 竞争资源
b) 进程的推进顺序不当
3、 相关术语
a) 可剥夺资源和不可剥夺资源
i. 可剥夺资源:占有资源的进程中的资源,如果其他进程要使用的话,可以强行剥夺过来使用。
ii. 不可剥夺资源:除占有资源的进程不再需要该资源主动释放外,其他进程不得在占有进程使用资源的过程中强行剥夺。
b) 永久资源和临时资源
i. 永久资源:可以被进程反复使用的资源,比如硬盘,打印机。
ii. 临时资源:临时使用的资源,进程消息后,资源就消失了,比如计算的中间数据。
c) 安全状态和不安全状态
i. 安全状态:如果在某一时刻,系统能按某种顺序<p1,p2…pn>来为每个进程分配其所需的资源,直至最大需求,使每个进程都可以顺利完成,称此时的状态为安全状态,<p1,p2…pn>为安全序列
ii. 不安全状态:若在某一时刻系统中不存在一个安全序列,则称此时为不安全状态。
4、 死锁产生的必要条件
a) 互斥条件:进程要求对所分配的资源进程排他性控制,即在一段时间内某资源仅为一个进程所占有。
b) 不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走。
c) 请求和保持条件:进程至少已占有一个资源,同时又提出新的资源申请,而新资源的申请却得不到满足。
d) 循环等待条件:存在一种进程资源的循环等待连,链中的每一个进程己获得资源同时被链中下一个进程所请求。
5、 死锁的解决办法
a) 忽略死锁:对死锁视而不见,有些系统的死锁是五年或者十年才出现一次,没必要消除这种死锁;
b) 预防死锁:通过设置某些限制条件,去破坏产生死锁的4个必要条件中的一个或几个来防止死锁<缺点是损害了系统的性能>
i. 破坏互斥条件:为了破坏该条件,就要允许多个进程同时访问资源,由于资源的固有属性,这个方法基本上不可行。
ii. 破坏不剥夺条件:为了破坏该条件,可以让进程获得的资源能被其他进程剥夺。
iii. 破坏请求和保持条件:为了破坏该条件,可以考虑使用静态资源分配法。
iv. 破坏循环等待条件:为了破坏该条件,可以考虑采用有序资源分配法
c) 避免死锁:在资源的动态分配中,用某种方法防止系统进入不安全状态<系统进入不安全状态后可能会出现死锁>,从而避免死锁,只要系统处于安全状态,就可以避免死锁的发生;
i. 在死锁的避免方法中,不对进程申请资源加限制条件,而是检查进程的资源申请是否会导致系统进入不安全状态,只要能使系统处于安全状态,便可以避免死锁的方法。代表性的算法是银行家算法。
d) 检测及解除死锁:在分配资源时不采取任何方法,可以通过系统的检测机构及时地检测出死锁,然后采取某种措施解除死锁。
i. 检测死锁:考察某一时刻系统是否存在一组可以实现的系统状态,能使所有进程都得到它们所申请的资源而运行结束。
ii. 解除死锁:一旦检测到系统中出现了死锁,就应该将陷入死锁的进程从死锁状态中解脱出来
1. 资源剥夺法
2. 撤销进程法
零测试