【操作系统】Operation System-第11章-死锁
文章探讨了操作系统中的一个重要问题——死锁。死锁是一种资源分配问题,当两个或两个以上的进程无限期地等待永远不会发生的资源时,就会发生死锁。文章通过具体的例子和图示,展示了系统中的两组进程,每组都有一个进程需要另一个进程正在持有的资源。这种资源的相互需求导致了循环等待,即进程P1等待P2持有的资源,而P2反过来又等待P1持有的资源。
死锁的产生通常是由于进程的并发执行和资源的共享与竞争。文章中提到的磁带驱动器例子很好地说明了这一概念。在多个进程同时需要有限的系统资源时,如果系统没有适当的同步机制,就可能导致死锁。例如,进程P1和P2在需要彼此持有的资源时,系统无法释放任何资源,导致两个进程都无法继续执行。
为解决死锁问题,操作系统通常采用多种策略,包括预防策略、避免策略和检测与恢复策略。预防策略通过限制资源的使用来避免死锁,例如采用预分配策略减少资源的争夺。避免策略则是在资源分配时就预防死锁的发生,例如使用银行家算法来避免分配可能导致死锁的资源。检测与恢复策略则是通过检测到死锁发生时进行恢复。
总之,死锁是操作系统中的一个复杂问题,需要通过合理的资源管理和同步机制来预防和解决。通过深入了解死锁的原因和解决策略,可以提高系统的稳定性和效率。
操作系统—死锁
死锁问题
-
一组阻塞的进程持有一种资源等待获取另一个进程所占有的一个资源
-
例子
➢ 系统有 2 22 个磁带驱动器
➢ P 1 P_1P1 和 P 2 P_2P2 各有一个,都需要另外一个
为什么出现死锁?由于进程的并发执行抢占资源。
系统模型
-
资源类型 R 1 R_1R1, R 2 R_2R2, ... ...... , R m R_mRm
➢ CPU cycles CPU\ cyclesCPU cycles, memory space memory\ spacememory space, I/O devices I/O\ devicesI/O devices
-
每个资源类型 R i R_iRi 有 W i W_iWi 个实例.
-
每个进程使用资源如下:
➢ require/get<=free resource require / get <= free\ resource