CoderMrWu

生活诚可期,爱情价更高!

怎么预防操作系统会死锁呢?

死锁预防是指在任何系统操作前(例如分配资源、调度进程等),事先评估系统的可能 情况,严格采取措施使得死锁的四个必要条件不成立。

―、死锁预防的概念

死锁预防的基本思想是防范于未然。

操作系统在系统设计时事先确定资源分配的算法,限制进程对资源的申请,从而保证不发生死锁。具体的做法是破坏产生死锁的四个必要条件之一。

在本章第一节第三部分中讨论了产生死锁的四个必要条件。如果设法使四个条件中的一个不能成立,那么就破坏了死锁产生的必要条件,从而可以预防死锁的发生。其中,打破四个必要条件中的2、3和4是一种保证系统不进人死锁状态的静态分配策略。这将在本章第 二节第二部分中进行介绍。

对于条件1,我们要区别对待不同的资源情况。若某些资源是由于资源数量不足而造成 的,可以通过增加资源数量的方法来进行预防。例如对于第一节第二部分中的【例5. 2】, 内存是可重用资源,进程在使用有限的内存时一般通过分时交替使用来实现资源共享。若系 统能提供足够多的内存,使得各个进程均可以独享自己的内存空间,那么也就不需要互斥使 用内存了,也就打破了死锁的四个必要条件之一。但是这种死锁预防的方法代价高昂。另一 类资源的数量有限和互斥使用是资源的固有特性,例如系统中的共享写数据,各种信号量 等,这些资源不能通过增加资源数量来解决,所以这种情况下通过破坏互斥条件来预防死锁不现实。

二、资源的静态分配策略

在预防死锁的静态分配策略中,资源分配的原则如下。

一个进程在申请新资源的要求不能立即得到满足时,便处于等待状态。而一个处于等待状态的进程的全部资源可以被剥夺。就是说,这些资源隐式地释放了,被剥夺的资源重新加 入到资源表中。仅当该进程重新获得它原有的资源以及得到新申请的资源时,才能重新启动 执行。这种方法破坏了不可剥夺条件。

具体实施方法如下。

(1)若一个进程已占用了某些资源,又要申请一个新的资源,在申请新的资源时,不能立即得到满足,在变为等待状态之前,该进程必须释放已占有的所有资源,即阻塞前释放资源

(2)若一个进程申请某些资源,首先系统应检查这些资源是否可用,如果可用,就分配给该进程。否则,系统检查这些资源是否分配给另外某个等待进程。若是,则系统将剥夺所需资源,分配给这个进程。如果资源没有被等待进程占有,那么,该进程必须等待。在其等待过程中,其资源也有可能被剥夺

破坏不可剥夺条件以预防死锁的方法适用于这样一些资源,它们的状态是容易保存和恢复的,例如处理器、内存等。

这种策略实现起来较复杂,而且代价太大。因为,一个资源在使用一段时间后被强行剥夺,会造成前阶段工作失效。而且,在极端情况下,可能出现某个进程反复申请和释放资源,使进程执行无限推迟;增加了系统开销,延长了进程的周转时间,降低系统的吞吐量和性能。

在预防死锁的静态分配策略中,还可以采用以下方法,该方法破坏了请求和保持条件。

(3)每个进程必须在开始执行前就申请它所需要的全部资源,仅当系统能满足进程的资 源申请要求且把资源一次性分配给进程后,该进程才能开始执行

采用该方法后,进程在执行过程中不再申请资源,故不可能出现占有了某些资源再等待其他资源的情况,即“请求和保持”的条件不成立,从而预防死锁的发生。

这种方法的优点是简单、安全、容易实施;但其缺点是严重浪费系统资源,会造成一些资源在很长时间内得不到使用,降低资源利用率。另外,因为当进程获得其所需全部资源后方能开始运行,但由于有些进程长期占用资源,致使进程推迟,甚至得不到运行。

实现这种静态分配资源策略还有一个问题是大部分进程在运行开始时不能确定所需要的 全部资源,那么就按以下方法处理。

(4)当进程没有占a资源时才允许它去申请资源,如果进程已经占用了某些资源而又要再申请资源,则它应先归还所占的资源后再申请新资源

这种资源分配策略仍会使进程处于等待状态,这是因为进程所申请的资源可能已被其他 进程占用,只能等占用者归还资源后才可分配给申请者,但是,申请者是在归还资源后才申请新资源的,故不会出现占有了部分资源再等待其他资源的现象。这种方法也存在着资源利用率低的缺点。

三、资源的有序分配法

釆用资源有序分配策略,其基本思想是将系统中所有资源顺序编号。一般原则是,较为紧缺、稀少的资源的编号较大。进程申请资源时,必须严格按照资源编号的顺序进行,否则 系统不予分配。即一个进程只有得到编号小的资源,才能申请编号较大的资源,释放资源 时,应按编号递减的次序进行

例如,设扫描仪(输入设备)、打印机(输出设备)、绘图机(输出设备)的编号依次 为1、2、3。这样,所有进程对资源的申请,严格地按编号递增的次序提出。这种申请方式 不会出现第一节第二部分中【例5.1】的情况,P2申请的输出设备不会先于输人设备,也 就不会出现死锁的现象。

采用资源有序分配策略,破坏了死锁四+必要条件中的循环等待条件

更多本科自考资讯请关注ww1.fzydk.com。

点赞