死锁(Deadlock)是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力作用,它们都将无法推进下去。 根据 Coffman 在 1971 年的总结,死锁的产生必须同时满足以下四个必要条件。只要破坏其中任何一个条件,死锁就不会发生。 这四个条件分别是: 1. 互斥条件 (Mutual Exclusion) 含义:资源是独占的,即在一段时间内,某资源只能被一个进程占用。 解释:如果此时还有其他进程请求该资源,则请求者只能等待,直到占有该资源的进程用毕释放。 例子:打印机、磁带机等独占设备。 2. 请求与保持条件 (Hold and Wait) 含义:进程已经保持(占有)了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有。 解释:此时请求进程被阻塞,但对自己已获得的资源保持不放。 通俗理解:“吃着碗里的,看着锅里的,而且碗里的绝不放下。” 3. 不剥夺条件 (No Preemption) 含义:进程已获得的资源,在未使用完之前,不能被其他进程强行夺走(剥夺),只能由该进程自己释放。 解释:操作系统不能强行把资源从进程手中抢过来分配给别人...