《现代操做系统》精读与思考笔记 第六章 死锁

  本系列博文是《现代操做系统(英文第三版)》(Modern Operating Systems,简称MOS)的阅读笔记,定位是正文精要部分的摘录理解和课后习题精解,所以不会事无巨细的全面摘抄,仅仅根据我的状况进行记录和推荐。因为是英文版,部份内容会使用英文原文。html

  课后习题的选择标准:尽可能避免单纯的概念考察(如:What is spooling?)或者简单的数值计算,而是可以引发思考加深理解的题目。为了保证解答的正确性,每道题都会附上原书解答,而中文部分会适当加入本身的看法。原书答案下载地址(需注册)算法

 

  最初在翻这本书的目录时还在想,“死锁”这个主题安排在“进程”主题下就能够了嘛,为什么要单列出一章?与动辄近百页的其余章节比,这一章只有区区三十来页而已,看似微不足道。本章开篇便告诉读者,“死锁”不只在进程并行时会出现,在数据库系统甚至是办公室的设备共用时也会出现,使用场景很普遍,也难怪成为一个独立章节。数据库

  也正因适用范围普遍,而方法是抽象的,这章特别强调,在决定使用某种避免或消除死锁的策略前,必须结合具体场景判断是否适用。性能

 

1.鸵鸟算法(P441)

  所谓的鸵鸟算法,就是对问题视若不见。虽然数学家认为根本不可接受,但考虑到一个不常发生而且发生后的解决开销很大的事件(如本章的死锁),反而是一个很好的复杂度与性能的折衷。spa

  相比之下,尽管该书后文提到的避免和解决死锁的方法比较有效,好比广为人知的银行家算法(P451~454),但实用性实在有限。操作系统

 

2.spooling的打印机仍然可能形成死锁(P454~455)

  虽然使用打印机对应的deamon进程惟一地与打印机交互、其余进程的打印任务仅仅是将须要打印的文件放入deamon进程指定的一个目录下,打印机这一设备再也不会致使死锁;然而,这些待打印的文件是须要占用空间的,若是磁盘空间不足以容纳全部待打印的文件,仍然会形成死锁。翻译

  习题2再次提到了这个情形。htm

 

课后习题选

29.Explain the differences between deadlock, livelock  and starvation.

译:进程

  解释死锁、活锁和饥饿的差异。事件

Answer:

  A deadlock occurs when a set of processes are blocked waiting for an event that only some other process in the set can cause. On the other hand, processes in a livelock are not blocked. Instead, they continue to execute checking for a condition to become true that will never become true. Thus, in addition to the resources they are holding, processes in livelock continue to consume precious CPU time. Finally, starvation of a process occurs because of the presence of other processes as well as a stream of new incoming processes that end up with higher priority that the process being starved. Unlike deadlock or livelock, starvation can terminate on its own, e.g. when existing processes with higher priority terminate and no new processes with higher priority arrive.

分析:

  一个进程的集合中,因等待这个集合的其余进程而阻塞时发生死锁。

  活锁发生时,进程并无阻塞,它们只是继续检查一个条件是否为真,而这个条件永远不会变为真。所以,处于活锁状态的进程仍然会消耗CPU时间。

  饥饿是因为一直有更高优先级的进程到来,使得早到来的低优先级进程得不到服务。与前二者不一样,饥饿状态可能会本身解除,好比当再也不有高优先级进程到来时。

 

勘误

1.P451最末一段“Sec.3.4.1”应为“Sec.6.4.1”;

2.P463习题8,此题指的是Figure.6-7中的情形,原题并未说明这一点。

 

中文版勘误

1.P260,“所以能够经过先来先服务”这句原文中并无逻辑关系,应该把所以删去,这句前面的逗号改成句号;

2.P260习题1,根据答案,“politics”应翻译成“政治”而非“策略”。

相关文章
相关标签/搜索