操作系统中的进程以以下方式使用资源。 1) 请求资源 2) 使用资源 3) 释放资源
僵局 是一种情况,其中一组进程被阻塞,因为每个进程都持有一个资源,并等待其他进程获取另一个资源。 举个例子,当两列火车在同一条轨道上向对方走来时,只有一条轨道,一旦它们在前面,就没有一条火车能移动。在操作系统中,当有两个或多个进程持有某些资源并等待其他进程持有的资源时,也会出现类似的情况。例如,在下图中,流程1持有资源1并等待流程2获取的资源2,而流程2正在等待资源1。
如果 这个 以下四个条件同时成立(必要条件) 互斥: 两个或多个资源不可共享(一次只能使用一个进程) 等待: 一个进程至少持有一个资源并等待资源。 没有先发制人权: 除非流程释放资源,否则无法从流程中获取资源。 循环等待: 一组进程以循环的形式相互等待。
处理死锁的方法 有三种方法可以处理死锁 1) 死锁预防或避免:其目的是不让系统进入死锁状态。 一个人可以单独放大每一个类别,通过否定上述死锁的必要条件之一来进行预防。 回避本质上是一种未来主义。通过使用“回避”策略,我们必须做出一个假设。我们需要确保在执行流程之前,我们了解流程所需资源的所有信息。为了避免死锁,我们使用了银行家算法(这反过来又是Dijkstra的礼物)。
2) 死锁检测和恢复:让死锁发生,然后在死锁发生后进行抢占处理。
3) 完全忽略这个问题:如果死锁非常罕见,那么就让它发生并重新启动系统。这是Windows和UNIX都采用的方法。
练习: 1) 假设n个进程,P1…。Pn共享m个相同的资源单元,可以一次保留和释放一个。过程Pi的最大资源需求为Si,其中Si>0。以下哪项是确保不发生死锁的充分条件?(门CS 2005)
(A) A. (B) B (C) C (D) D
有关解决方案,请参见本节的问题4 https://www.geeksforgeeks.org/operating-systems-set-16/
看见 死锁小测验 更多问题。
参考资料: http://www2.latech.edu/~box/os/ch07。pdf http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/7_死锁。html
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论