死锁是进程僵持的一种状态。
是因为进程推进不当,导致多个进程竞争有限的资源;在无外力的作用下,各个进程永远无法分配到所需要的资源,进而导致进程无限期地等待。
如下图:
进程 p1 获得文件 F 占用权,然后请求磁带机 T 占用权;但由于磁带机 T 已经分配给进程 p2,所以 p1 只能阻塞并等待进程 p2 释放磁带机 T。
此时进程 p2 请求文件 F 的占用权,可是文件 F 已经分配给进程 p1,而进程 p1 又因为请求磁带机 T 而阻塞;因此,进程 p2 无法获得文件 F 的占用权而阻塞。
这样进程 p1 和 p2 都同时阻塞,都无法继续执行下去了,而这种无法继续执行下去导致僵持的状态就是死锁。