操作系统--精髓与设计原理(第八版)第六章复习题答案
6.1 给出可重用资源和可消耗资源的例子。
- 可重用资源是指一次仅供-一个进程安全使用且不因使用而耗尽的资源。进程得到资源单元并使用后,会释放这些单元供其他进程再次使用。可重用资源的例子包括处理器、I/O 通道、内存和外存、设备,以及诸如文件、数据库和信号量之类的数据结构。
- 可消耗资源是指可被创建(生产)和销毁(消耗)的资源。某种类型可消耗资源的数量通常没有限制,无阻塞生产进程可以创建任意数量的这类资源。消费进程得到-一个资源时,该资源就不再存在。可消耗资源的例子有中断、信号、消息和I/O缓冲区中的信息。
6.2 产生死锁的三个必要条件是什么?
- 互斥。一次只有一个进程可以使用一个资源。其他进程不能访问已分配给其他进程的资源。
- 占有且等待。当一个进程等待其他进程时,继续占有已分配的资源。
- 不可抢占。不能强行抢占进程已占有的资源。
6.3 产生死锁的 4个条件是什么?
循环等待。存在一个闭合的进程链,每个进程至少占有此链中下一个进程所需的一个资源。
6.4 如何防止占有且等待条件?
为预防占有且等待的条件,可以要求进程一次性地请求所有 需要的资源,并阻塞这个进程直到所有请求都同时满足。这种方法有两个方面的低效性。首先,一个进程可能被阻塞很长时间,以等待满足其所有的资源请求。而实际上,只要有一部分资源, 它就可以继续执行。其次,分配给一个进程的资源可能会在相当长的一段时间不会被该进程使用,且不能被其他进程使用。另一个问题是一个进程可能事先并不知道它所需要的所有资源。
6.5 给出防止不可抢占条件的两种方法。
- 占有某些资源的一个进程进一步申请资源时若被拒绝,则该进程必须释放其最初占有的资源,必要时可再次申请这些资源和其他资源。
- 一个进程请求当前被另一个进程占有的一个资源时,操作系统可以抢占另一个进程,要求它释放资源。(只有在任意两个进程的优先级都不同时,这种方案才能预防死锁)。
6.6 如何防止循环等待条件?
循环等待条件可通过定义资源类型的线性顺序来预防。若一 个进程已分配了R类型的资源,则其接下来请求的资源只能是那些排在R类型之后的资源。为证明这种策略的正确性,我们给每种资源类型指定一个下标。 当i<j时,资源R排在资源R,前面。现在假设两个进程A和B死锁,原因是A获得R并请求R,而B获得R,并请求R,那么这个条件不可能,因为这意味着i<j且j<i。
6.7 死锁避免、 检测和预防之间的区别是什么?
处理死锁通常有三种方法:预防、检测和避免。死锁预防通过确保不满足死锁的一个必要条件来避免发生死锁。操作系统总是同意资源请求时,需要进行死锁检测。操作系统必须周期性地检查死锁,并采取行动打破死锁。死锁避免涉及分析新的资源请求,以确定它是否会导致死锁,且仅当不可能发生死锁时才同意该请求。