第一范文网 - 专业文章范例文档资料分享平台

操作系统概念第七版习题答案(中文版)完整版 

来源:用户分享 时间:2025/6/7 8:32:34 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

在一个真实的计算机系统中,可用的资源和进程命令对资源的要求都不会持续很久是一致的长期(几个月)。资源会损坏或被替换,新的进程会进入和离开系统,新的资源会被购买和添加到系统中。如果用银行家算法控制死锁,下面哪些变化是安全的(不会导致可能的死锁) ,并且在什么情况下发生? a. 增加可用资源(新的资源被添加到系统)

b. 减少可用资源(资源被从系统中永久性地移出)

c. 增加一个进程的Max(进程需要更多的资源,超过所允许给予的资源) d. 减少一个进程的Max(进程不再需要那么多资源) e. 增加进程的数量 f. 减少进程的数量

a. 增加可用资源(新的资源被添加到系统):这个可以在没有任何问题的情况下安全地改变 b. 减少可用资源(资源被从系统中永久性地移出):这可能会影响到系统,并导致可能性死

锁因为系统的安全性假定其拥有一定数量的可用资源 c. 增加一个进程的Max(进程需要更多的资源,超过所允许给予的资源):这可能会影响到

系统,并可能导致死锁 d. 减少一个进程的Max(进程不再需要那么多资源):这个可以在没有任何问题的情况下安

全地改变 e. 增加进程的数量:如果允许分配资源给新进程,那么该系统并没有进入一个不安全的状

态。 f. 减少进程的数量:这个可以在没有任何问题的情况下安全地改变 7.6

假设系统中有四个相同类型的资源被三个进程共享。每个进程最多需要两个资源。证明这个系统不会死锁。

假设该系统陷入死锁。这意味着,每一个进程持有一个资源,并且正等待另一个资源。因为有三个进程和四个资源,一个进程就必须获取两个资源。这一进程并不需要更多的资源,因此当其完成时会返回其资源。

7.7 假设一个系统有 m 个资源被 n 个进程共享,进程每次只请求和释放一个资源。证明只要系统符合下面两个条件,就不会发生死锁:

a.每个进程需要资源的最大值在 1 到 m 之间 b.所有进程需要资源的最大值的和小于 m+n

Answer:使用 Section7.6.2 的术语,可以有: a. _n

i=1 Maxi

Maxi≥ 1 for all i

Proof: Needi= Maxi? Allocationi If there exists a deadlock state then: c. _n

i=1 Allocationi= m

Use a. to get:_ Needi+ _ Allocationi= _ Maxi

Use c. to get:_ Needi+ m

i=1 Needi

//符号打不出来,大家自己看答案

这意味着存在一个Pi的进程,其Needi=0.如果Maxi>=1,那么Pi进程至少有一个资源可以释放。从而系统就不会进入死锁状态。

7.8 假设哲学家进餐问题中,筷子被摆放在桌子的中央,它们中的任何一双都可以被哲学家使用。假如每次只能请求一根筷子,试描述一种在没有引起死锁的情况下,一个特殊的请求请求能否被满足的简单的规则,将筷子分配给哲学家。

Answer:以下规则避免了死锁:当一个哲学家发出一个需要第一根筷子的请求时,如果没有别的哲学家有两根筷子或者只留有一根筷子时,这个请求就不被允许。

7.9 与上一题目中所给的环境相同。假如现在每个哲学家请求三根筷子来吃饭,而且这种资源请求仍旧是分开发生的。试描述一种类似的在没有引起死锁的情况下,一个特殊的请求请求能否被满足的简单的规则,将筷子分配给哲学家。

Answer: 当一个哲学家发出一个需要第一根筷子的请求时,满足其情况,如果1)那个哲学家已经有2根筷子,并且还有2根筷子剩余,2) 那个哲学家已经有1根筷子,并且还有2根筷子剩余,3)最少有1根筷子剩余,并且最少有一个哲学家拥有3根筷子,4)那个哲学家没有筷子,但有2根筷子剩余,并且最少存在另外一个拥有2根筷子的哲学家放下他的筷子。

7.10 我们可以通过把数组的维度减少到 1,而从一般的银行家算法中得到一个单一资源类型的银行家算法。试通过一个例子说明对于每个资源类型,多资源类型的银行家方案不能通过单一资源类型方案的单独运用来实现。

Answer:假设一个系统有资源A,B,C和进程P0, P1, P2, P3, P4,并按照下图来分配 P0, P1, P2 P3 P4 A 0 3 3 2 0 ALLOCATION B 1 0 0 1 0 C 0 2 2 1 2 还需要下列资源的数量 P0 P1 P2 P3 P4 A 7 0 6 0 4 Need B 4 2 0 1 3 C 3 0 0 1 1 如果可利用的资源是(2 3 0),我们可以看到,进程P0请求(0,2,0)是不能被满足的,因为它比Availiable少(2 1 0),从而导致没有一个进程可以被完成。 然而,如果我们把三种资源看做是三个独立资源类型的银行家算法,可以得到以下各表:对于资源A

P0, P1 P2 P3 P4 Allocated 0 3 3 2 0 Need 7 0 6 0 4 在次序P1, P3, P4,P2, P0下,各进程可以被满足。 对于资源B

P0, P1 P2 P3 P4 对于资源C

Allocated 3 0 0 1 0 Need 2 2 0 1 3 在次序P2, P3, P1 , P0,P4下,各进程可以被满足。 P0, P1 P2 P3 P4 Allocated 0 2 2 1 2 Need 3 0 0 1 1 在次序P1, P2, P0,P3, P4下,各进程可以被满足。 我们可以看出,如果我们使用多重资源类型的银行家算法,对于进程P0的请求(0 2 0)是无法满足的,因为它使系统处于一个不安全的状态,然而,如果我们使用单一资源类型的银行家算法,把它们看做是三个分开的资源,这个请求是允许的。同时,如果我们有多重资源类型,我们则必须使用多重资源类型的银行家算法。 7.11考虑下面的一个系统在某一时刻的状态:

Allocation Max Available A B C D A B C D A B C D P0 0 0 1 2 0 0 1 2

1 5 2 0

P1 1 0 0 0 1 7 5 0 P2 P3 0 6 3 2 0 6 5 2 P4 1 3 5 4 2 3 5 6 0 0 1 4 0 6 5 6

使用银行家算法回答下面问题: a.Need 矩阵的内容是怎样的? b.系统是否处于安全状态?

c.如果从进程 P1 发出一个请求(0 4 2 0),这个请求能否被满足?

Answer:a.Need矩阵的内容是P0(0 0 0 0) P1(0 7 5 0) P2(1 0 0 2) P3(0 0 2 0)

P4(0 6 4 0)。

b. .系统处于安全状态,因为Available矩阵等于(1 5 2 0),进程P0和P3都可以运

行,当进程P3运行完时,它释放它的资源,而允许其它进程运行。

c.可以被满足,满足以后,Available矩阵等于(1 1 0 0),当以次序P0,P2, P3, P1 ,P4 运行时候,可以完成运行。

7.12 在死锁检测算法中,乐观假设是什么?这种假设怎样可以被违反?

Answer:乐观假设是在资源分配方面和进程请求资源的过程中,不存在任何形式的循环等待。如果在实际过程中,一个循环等待确实发生,这种假设可以被违反。 8.1 解释内部碎片和外部碎片的区别?

Answer:内部碎片是某一区域或某一页中,未被占据其位置的作业所使用的区域。直到作业完成,释放页或区域,这个空间才能被系统所利用。

8.2 考虑下面产生二进制的过程。编译器是用来为每个独立单元产生目标代码,连接编辑器是用来联合各个部分的目标单元组成一个单一的程序二进制。连接编辑器是怎样对内存地址改变指令和数据的捆绑?从编译器到连接编辑器,什么信息需要被通过,而使内存绑定连接编辑器作业比较容易?

Answer:连接编辑器不得不将分解的符号地址替换为在最终的程序二进制中,与变量相联系的实际地址。为了完成这个,单元必须追踪那些查阅到的未分解的符号指令。在连接期间,全部程序二进制中的每个单元会被分配到一序列的地址空间,当它完成时,对于未分解的符号关系,可以通过这个二进制输出,当每个另外单元包含一系列需要修复的指令时,这个二进制可以在另外单元被修复。

8.3 按顺序给出 5 个部分的内存,分别是 100KB,500KB,200KB,300KB 和 600KB,用

firstfit,best-fit 和 worst-fit 算法,能够怎样按顺序分配进程 212KB,417KB,112KB,426KB 和 426KB?哪个算法充分利用了内存空间?

Answer: a. First-fit:

b. 212K is put in 500K partition c. 417K is put in 600K partition

d. 112K is put in 288K partition (new partition 288K = 500K ? 212K) e. 426K must wait f. Best-fit:

g. 212K is put in 300K partition h. 417K is put in 500K partition i. 112K is put in 200K partition j. 426K is put in 600K partition k. Worst-fit:

l. 212K is put in 600K partition

m. 417K is put in 500K partition

n. 112K is put in 388K partition o. 426K must wait Best-fit: 算法充分利用了内存空间。

8.4 在运行过程中,许多系统允许程序分配更多的内存给它的地址空间。在程序堆中的数据分配是这种分配方式的一个实例。在下面的方案中,为了支持动态内存分配的要求是什么? a.连续内存分配 b.纯段式分配 c.纯页式分配

Answer:a. 连续内存分配:当没有足够的空间给程序去扩大它已分配的内存空间时,将要求重新分配整个程序。

b. 纯段式分配:当没有足够的空间给段去扩大它的已分配内存空间时,将要求重新分配整个段。 c. 纯页式分配:在没有要求程序地址空间再分配的方案下,新页增加的分配是可能的。 8.5 比较在主存组织方案中,连续内存分配,纯段式分配和纯页式分配在下面问题中的关

系。 a.外部碎片 b.内部碎片 c.通过进程分享代码的能力

Answer:连续内存分配会产生外部碎片,因为地址空间是被连续分配的,当旧进程结束,新进程初始化的时候,洞会扩大。连续内存分配也不允许进程共享代码,因为一个进程的虚拟内存段是不被允许闯入不连续的段的。纯段式分配也会产生外部碎片,因为在物理内存中,一个进程的段是被连续放置的,以及当死进程的段被新进程的段所替代时,碎片也将会产生。然而,段式分配可以使进程共享代码;比如,两个不同的进程可以共享一个代码段,但是有不同的数据段。纯页式分配不会产生外部碎片,但会产生内部碎片。进程可以在页granularity 中被分配,以及如果一页没有被完全利用,它就会产生内部碎片并且会产生一个

相当的空间浪费。在页granularity,页式分配也允许进程共享代码。

8.6 在一个页式分配系统中,为什么一个进程不被允许进入它所不拥有的内存?操作系统怎

么能被允许进入其它内存?它为什么应当可以或不可以进入? Answer:地址在页式分配系统上是一个逻辑页号和一个偏移量。在逻辑页号的基础上产生一个物理页号,物理页通过搜索表被找到。因为操作系统控制这张表的内容,只有在这些物理页被分配到进程中时,它可以限制一个进程的进入。一个进程想要分配一个它所不拥有的页是不可能的,因为这一页在页表中不存在。为了允许这样的进入,操作系统只简单的需要准许入口给无进程内存被加到进程页表中。当两个或多个进程需要交换数据时,这是十分有用的。------它们只是读和写相同的物理地址(可能在多样的物理地址中)。在进程内通信时,这是十分高效的。

8.7 比较页式存储与段式存储为了从虚地址转变为物理地址,在被要求的地址转化结构的内

存数量方面的有关内容。 c页式存储需要更多的内存来保持转化结构,段式存储的每个段只需要两个寄存器,一个保存段的基地址,另一个保存段的长度。另一方面,页式存储每一页都需要一个入口,这个入口提供了那页所在的物理地址。

8.8 在许多系统中的程序二进制的一般构造如下:代码被存储在较小的固定的地址中,比例 0。代码段后紧跟着被用来存储程序变量的数据段。当这个程序开始运行,栈被分配到虚地址空间的另一个端末尾,并被允许向较低的虚地址扩张。上述结构在下列方案中具有什么意义: a.连续内存分配 b.纯段式分配 c.纯页式分配

Answer:1)当程序开始运行时,连续内存分配要求操作系统给程序分配最大限度的虚地址空间。这可能造成比进程所需要的实际内存大很多。2)纯段式分配,在程序开始运行时,给每个段分配较小的空间,而且能随着段的扩展而扩大,这就给操作系统提供了灵活性。

操作系统概念第七版习题答案(中文版)完整版 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0p72c1oe807g2499hhsu_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top