📜  操作系统死锁介绍

📅  最后修改于: 2022-05-13 01:56:11.365000             🧑  作者: Mango

操作系统死锁介绍

操作系统中的进程以下列方式使用资源。
1) 请求资源
2)使用资源
3) 释放资源

死锁是一组进程被阻塞的情况,因为每个进程都持有一个资源并等待其他进程获取另一个资源。
考虑一个例子,当两列火车在同一条轨道上相向而行,而只有一条轨道时,一旦它们在彼此的前面,没有一列火车可以移动。当有两个或多个进程持有一些资源并等待其他人持有的资源时,操作系统中会发生类似的情况。例如,在下图中,进程 1 持有资源 1 并等待进程 2 获取的资源 2,进程 2 正在等待资源 1。

僵局

如果以下四个条件同时成立,就会出现死锁(必要条件)
互斥:一种或多种资源不可共享(一次只能使用一个进程)
持有并等待:一个进程持有至少一个资源并等待资源。
无抢占:除非进程释放资源,否则不能从进程中获取资源。
循环等待:一组进程以循环形式相互等待。



处理死锁的方法
处理死锁的三种方式
1)死锁预防或避免:思想是不让系统进入死锁状态。
可以单独放大每个类别,通过否定上述死锁的必要条件之一来进行预防。
回避本质上是一种未来主义。通过使用“回避”策略,我们必须做出假设。我们需要确保在执行流程之前,我们知道有关流程所需资源的所有信息。我们使用银行家的算法(这反过来又是 Dijkstra 的礼物)以避免死锁。

2)死锁检测和恢复:让死锁发生,一旦发生就做抢占处理。

3)完全忽略问题:如果死锁非常罕见,那就让它发生并重新启动系统。这是 Windows 和 UNIX 都采用的方法。

锻炼:
1)假设有 n 个进程,P1,……。 Pn 共享 m 个相同的资源单元,可以一次保留和释放一个。进程Pi的最大资源需求为Si,其中Si>0。下列哪一项是保证不发生死锁的充分条件? (GATE CS 2005)

(一) A
(乙)
(C)
(四)

解决方法见https://www.geeksforgeeks.org/operating-systems-set-16/的问题4

有关更多问题,请参阅死锁测验。

参考:
http://www2.latech.edu/~box/os/ch07.pdf
http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/7_Deadlocks.html