【操作系统】2.4 死锁

这一节也非常重要

2.4.1 死锁的概念

2.4.1 死锁的概念_StudyWinter的博客-CSDN博客

【操作系统】2.4 死锁_第1张图片在并发环境下,各种进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象。这就是死锁,死锁发生后,如果没有外力干干涉,这些进程将都无法向前推进。

死锁、饥饿、死循环的区别

【操作系统】2.4 死锁_第2张图片

产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生。

(1)互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁;

(2)不剥夺条件:进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放

(3)请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占有,此时请求进程被阻塞,但又对自己己有的资源保持不放。

(4)循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个进程所请求。

发生死锁的条件:对不可剥夺资源的不合理分配,可能会导致死锁。

死锁的处理策略:

(1)预防死锁:破坏死锁产生的四个必要条件之一;

(2)避免死锁:用某种方法防止系统进入不按全的状态,从而避免死锁(银行家算法);

(3)死锁的检测和解除:允许死锁的发生,不过操作系统会负责检测死锁的发生,然后采取某种措施解除死锁。

2.4.2 死锁的处理策略-预防死锁

2.4.2 死锁的处理策略-预防死锁_StudyWinter的博客-CSDN博客

【操作系统】2.4 死锁_第3张图片

互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁。

该策略的缺点:并不是所有资源的可以改造成可共享使用的资源。并且为了系统安全,很多地方还必须保护这种互斥性。因此,很多时候都无法破坏互斥条件。

将互斥使用的资源改为允许共享使用

不可剥夺条件:进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。

【操作系统】2.4 死锁_第4张图片

请求和保持条件:进程已经保持了至少一个资源,但是由提出新的资源请求,而该资源又被其他进程占有,此时请求进程被阻塞,但又对自己已有的资源保持不放。

循环等待条件:存在一种进程资源的循环等待,链中每一个进程已经获得资源的同时又被下一个进程所请求。

2.4.3 死锁的处理策略-避免死锁

2.4.3 死锁的处理策略-避免死锁_StudyWinter的博客-CSDN博客

安全序列:就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。

核心思想:在进程提出资源申请时,先预判此次分配是否会导致系统进入不安全状态。如果会进入不安全状态,就暂时不答应这次请求,让进程先阻塞等待。

2.4.4 死锁的处理策略-检测和解除

2.4.4 死锁的处理策略-检测和解除_StudyWinter的博客-CSDN博客

【操作系统】2.4 死锁_第5张图片

【操作系统】2.4 死锁_第6张图片

你可能感兴趣的:(计算机基础,操作系统,死锁,银行家算法,死锁产生的四个条件,死锁的检测和解除,预防死锁)