【从零开始学习计算机科学】操作系统(四)进程的死锁
【从零开始学习计算机科学】操作系统(四)进程的死锁
-
- 进程的死锁
-
- 死锁的预防
- 死锁的避免
- 死锁的检测和恢复
进程的死锁
可以把死锁定义为一组进程相互竞争系统资源而形成的“永久”阻塞现象。当一组进程中的每个进程都在等待某个事件,而只有在这组进程中的其它被阻塞的进程才可以触发该事件,这时就称这组进程发生死锁。
死锁的发生必须具体以下四个条件:(发生死锁时一定满足这四个条件,但是满足这四个条件不一样发生死锁)
- 互斥条件。指进程的共享资源必须保持使用的互斥性,即任何一个时刻只能分配给一个进程使用,互斥条件是形成死锁最根本的原因,因为如果资源不要求排它性地使用,那么一定不会造成请求资源而无法满足的局面。
- 占有且等待条件。一个进程占有了某些资源之后又要申请新的资源而得不到满足时,处于等待资源的状态,且不释放已经占用的资源。
- 不可剥夺条件。任何进程不能抢夺另一个进程所占用的资源,即已经被占用的资源只能由占用进程自己来释放。
- 环路条件。存在一组进程 P 1 , P 2 , … , P n P_1,P_2,\ldots,P_n P1,P2,…,Pn,其中每个进程分别等待另一个进程所占用的资源,形成环路等待条件。
对于进程,我们可以通过资源分配图表示进程和资源之间的关系,若某系统有m个资源类,用 R i R_i Ri表示第i个资源类,则该系统的资源类集合为{ R