电子科枚大学 软件技术基础 2.7死锁及解除 主讲教师:刘民岷 ■ 航空航天学院 软件技术基础课程组
软件技术基础 2.7 死锁及解除 主讲教师:刘民岷 航空航天学院 软件技术基础课程组
死锁及产生原因 死锁一多个进程因竞争资源而造成的一种僵局(Deadly Embrace)), 若无外力作用,这些进程将永远不能再向前推进。 产生死锁的原因 >争夺资源 >进程推进顺序不当 电子科技大学刘民岷 死锁及解除 2
电子科技大学 刘民岷 2 1、死锁及产生原因 死锁及解除 • 死锁——多个进程因竞争资源而造成的一种僵局(Deadly Embrace), 若无外力作用,这些进程将永远不能再向前推进。 • 产生死锁的原因 争夺资源 进程推进顺序不当
2、争夺资源引起的死锁 R 己分配 打印机 申请 P2 申请 磁带机 己分配 R2 共享1/O设备产生的死锁 电子科技大学刘民岷 死锁及解除 3
电子科技大学 刘民岷 3 2、争夺资源引起的死锁 死锁及解除 打印机 磁带机 P1 P2 R1 R2 已分配 申请 申请 已分配 共享I/O设备产生的死锁
3、进程推进顺序不当引起的死锁 进程执行时操作顺序不当,也可能造成死锁。如生产者一消费 者问题中,若颠倒两个P操作的顺序就可能造成死锁。 生产者进程: 消费者进程: P(mutex);申请使用缓冲区 P(mutex):申请使用缓冲区; P(empty);检查是否有空缓冲区; P(fu);检查缓冲区是否有信息; 生产者进程: 消费者进程: P(empty)检查是否有空缓冲区; P(fulD;检查缓冲区是否有信息; P(mutex);申请使用缓冲区 P(mutex);申请使用缓冲区; 电子科技大学刘民岷 死锁及解除 4
电子科技大学 刘民岷 4 3、进程推进顺序不当引起的死锁 死锁及解除 • 进程执行时操作顺序不当,也可能造成死锁。如生产者-消费 者问题中,若颠倒两个P操作的顺序就可能造成死锁。 生产者进程: … P (mutex);申请使用缓冲区 P (empty);检查是否有空缓冲区; 消费者进程: … P (mutex);申请使用缓冲区; … P (full);检查缓冲区是否有信息; … 生产者进程: … P (mutex);申请使用缓冲区 P (empty);检查是否有空缓冲区; 消费者进程: … P (mutex);申请使用缓冲区; … P (full);检查缓冲区是否有信息; …
4、死锁产生的必要条件 (1)互斥条件 进程互斥使用资源,任一时刻一个资源只为一个进程独占,其他进 程若请求一个已被占用的资源,只能等占用者释放后才能使用。 (2)不剥夺条件 进程所获得的资源在未使用完毕前,不能被其他进程强行剥夺,只 能由获得该资源的进程自己释放。 (3)部分分配条件 进程每次申请它所需要的一部分新资源的同时,继续占用它已分配 到的资源。 (4)环路条件 存在一个循环等待链,链中每一个进程都在等待它的前一个进程所 持有的资源。 电子科技大学刘民岷 死锁及解除 5
电子科技大学 刘民岷 5 4、死锁产生的必要条件 死锁及解除 (1)互斥条件 进程互斥使用资源,任一时刻一个资源只为一个进程独占,其他进 程若请求一个已被占用的资源,只能等占用者释放后才能使用。 (2)不剥夺条件 进程所获得的资源在未使用完毕前,不能被其他进程强行剥夺,只 能由获得该资源的进程自己释放。 (3)部分分配条件 进程每次申请它所需要的一部分新资源的同时,继续占用它已分配 到的资源。 (4)环路条件 存在一个循环等待链,链中每一个进程都在等待它的前一个进程所 持有的资源