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

发布时间 : 星期四 文章操作系统概念第七版习题答案(中文版)完整版更新完毕开始阅读9b5451d36f1aff00bed51e4b

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

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

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

8.7比较页式存储与段式存储为了从虚地址转变为物理地址,在被要求的地址转化结构的内存数量方面的有关内容。

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

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

Answer:1)当程序开始运行时,连续内存分配要求操作系统给程序分配最大限度的虚地址空间。这可能造成比进程所需要的实际内存大很多。2)纯段式分配,在程序开始运行时,给每个段分配较小的空间,而且能随着段的扩展而扩大,这就给操作系统提供了灵活性。3)纯页式分配在一个进程开始运行时,就不需要操作系统给进程分配最大的虚地址空间。当一个程序需要扩展它的堆或栈时,它需要分配一个新的页,但是相关的页表入口被提前分配了。 8.9考虑一个分页系统在内存中存储着一张页表。a.如果内存的查询需要200毫秒,那么一个分页内存的查询需要多长时间?b.如果我们加上相关联的寄存器,75%的页表查询可以在相关联的寄存器中找到,那么有效的查询时间是多少?(假设如果入口存在的话,在相关的寄存器中找到页表入口不花费时间)

Answer:a.400毫秒:200毫秒进入页表,200毫秒进入内存中的字 b.有效进入时间=0.75*200毫秒+0.25*400毫秒=250毫秒 8.10为什么有时候段式分配存储与页式分配存储可以联合成一种方案?

Answer:段式存储与页式存储经常结合在一起是为了提高它们两个中的每一个存储方式。当页表变的十分大时,段式存储是十分有用的。一大段连续的页表是不习惯被分解成为一个以0为段表地址的单一段表入口。分页的段式存储句柄有一个非常大的段的时侯,就需要很多时间来进行分配。通过把段分页,我们降低了由于外部碎片而造成的内存浪费,而且也简化了分配。

8.11解释为什么当共享一个使用段式存储的reenteant单元时比纯页式存储时这样做要来的容易?

Answer:因为段式存储是以内存的逻辑共享为基础的,而不是物理的,任何大小的段在段

表中,被每个只具有一个入口的用户所共享。而分页必须在页表中对每个被共享的页有相同的入口。

8.13问:页表分页的目的是什么?

答:在某些情况下,分页的页表可以变得足够大,可以简化内存分配问题(确保全部可以分配固定大小的网页,而不是可变大小的块),确保当前未使用的部分页表可以交换。 8.14问:考虑分层分页方案,使用VAX架构。当用户程序执行一个内存装载程序时,有多少个内存操作要执行?

答:当一个内存装载程序完成时,有三个内存操作可以完成,一个是说明能够被打到的页表

的位置。第二个是页表进入自己。第三个是现实的内存装载操作。

8.15问:比较段页式表和哈希页表在处理大量的地址空间上,在什么环境下,哪一个方案更

好?

答:当一个程序占用大的虚拟地址空间的一小部分时,哈希页表更适合小一点的。哈希页表

的缺点是在同样的哈希页表上,映射多个页面而引起的冲突。如果多个页表映射在同个

入口处,则横穿名单相应的哈希页表可能导致负担过重。这种间接最低的分割分页方案,即每一页表条目保持有关只有一页。

8.16问:假设Intel的地址转换方案如图8.22所示

A.描述Intel80836将逻辑地址转换成物理地址所采用的所有步骤。 B.使用这样复杂的地址转换硬件对硬件系统有什么好处?

C.这样的地址转换系统有没有什么缺点?如果有,有哪些?如果没有,为什么不是每个制造商都使用这种方案。 答:A。选择符是段描述符表的标志,段描述符的结果加上原先的偏移量构成页表,再加上目录、偏移量构成页表,构成线性地址。这个目录是页目录的标志。目录项选择页表,页表域是页表的索引。页表项再加上偏移量,构成物理地址。

B.这样的页表转换系统提供了灵活性,允许大多数操作系统在硬件上执行内存工具,而不是实施部分硬件和一些软件。因为,它可以在硬件上实施,更有效率(内核更简单) C.地址转换在查找多样表时更花时间,缓存帮助,仍会导致缓存丢失。

9.1问。举一个例子,IBM360/370 的资源和目的地区重叠时说明,(MVC)重新启动移动块的问题。

答:假设页面边缘为1024,移动空间从资源区800:1200到目标区700:1100,假设当页表

在1024边缘发生故障访问错误,这时候的位置800:923已覆盖新的值,因此,重新启动区块移动指令会导致在800:923到700:823之间复制新的值,而这是不正确的。 9.2问:考虑支持请求页面调度的硬件需求。 答:对于每一个内存访问操作,页表需要检查相应的页表驻留与否和是否计划已经读取或写入权限访问页面,一个TLB可以作为高速缓存和改善业绩的查询操作。

9.3问:什么是写时拷贝功能,在什么情况下,有利于此功能?支持此功能的硬件是什么? 答:当两个进程正在访问同一套程序值(例如,代码段的二进制代码)在写保护的方式下,

映射相应的页面到虚拟地址空间是有用的,当写操作进行时,拷贝必须允许两个程序分别进行不同的拷贝而不干扰对方。硬件要求:在每个内存访问的页表需要协商,以检查是否该页表是写保护。如果确实是写保护,陷阱会出现,操作系统可以解决这个问题。 9.4问:某个计算机给它的用户提供了232的虚拟内存空间,计算机有214B的物理内存,虚拟内存使用页面大小为4094B的分页机制实现。一个用户进程产生虚拟地址11123456,现在说明一下系统怎么样建立相应的物理地址,区分一下软件操作和硬件操作。(第六版有翻译)

答:该虚拟地址的二进制形式是 0001 0001 0001 0010 0011 0100 0101 0110。由于页面大小为212,页表大小为220,因此,低12位的“0100 0101 0110 ”被用来替换页(page),而前20位“0001 0001 0001 0010 0011”被用来替换页表(page table)。

9.5假设有一个请求调页存储器,页表放在寄存器中:处理一个页错误,当有空的帧或被置换的页设有被修改过时要用8ms,当被置换的页被修改过明用20ms,存储器访问时间为100ns。

假设被置换的页中有70%被修改过,有效访问时间不超过200ns时最大可接受的页错误率是多少?(第六版有翻译)

答:0.2 _sec = (1 ? P) × 0.1 _sec + (0.3P) × 8 millisec + (0.7P) × 20 millisec

0.1 = ?0.1P + 2400 P + 14000 P

0.1 _ 16,400 P P _ 0.000006

9.6问:假设正在监测的速度指针在时钟算法(表明侯选页面更换),如果发生以下行为,系统会怎么样?

A.指针快速前进 B.指针移动缓慢

答:如果指针运行快,则该程序同时访问大量页面,当指针在对应的页面上清理与检查时,

这是最可能发生的,因此不能被取代,这样做的结果是受害页面被发现之前,扫描很多页面。如果指针运行慢,在虚拟内存找寻候选页表更换极为有效,表明许多常驻页面不会被窍取。

9.7问:讨论在哪一种情况下,LFU(最不经常使用)页置换比LRU(最近最少使用)页置换法产生较少的页面错误,什么情况下则相反? 答:考虑下面顺序存取在内存的系统的串,可容纳4页内存:1 1 2 3 4 5 1,当访问5时,

LFU算法将会替换除了1以外的其他页面,则在接下来读取1时,就不用更次替换了。反来过说,如果串为:1 2 3 4 5 2,LRU算法性能更好。

9.8问:讨论在哪一种情况下,MFU(最不经常使用)页置换比LRU(最近最少使用)页置换法产生较少的页面错误,什么情况下则相反?

答:考虑可容纳4页的内存:1 2 3 4 4 4 5 1,MFU算法会用5替换4,而LRU算法刚用5替换1,实践中不可能发生,对于串:1 2 3 4 4 4 5 1,LRU算法做得更正确。

9.9问:在VAX/VMS系统对驻留页采用先进先出算法,在空闲帧给最近最少使用页面,假设在空闲帧使用LRU算法,回答下列问题

A.如果页表出错和页面不存在空闲帧如何产生新空间给亲要求页面

B.如果页面出错和页面存在空闲帧,如何驻留页面,空闲帧怎么样分配给新要求页表。 C.如果驻留页面只有一个,系统如何决定 D.如果没有空闲帧,系统如果决定

答:A.在这种情况下,空闲帧中的一个页面被替换到磁盘上,为驻留页面创建一个空间,再

转移到空闲帧里,浏览页面时,又被称动到驻留页面上。

B.引进一套驻留页面,并将页面搬进空闲帧 C.系统在空闲帧里使用页置换法通常是LRU算法 D.系统进行FIFO算法

9.10问:假设一个具有下面时间度量利用率的请求调页系统:

CPU利用率20%,分页磁盘 97.7%,其他I/O设备,5%

说明下面哪一个(可)能提高CPU的利用率,为什么? A安装一个更快的CPU B安装一个更大的分页磁盘

C提高多道程序设计程序

D降低多道程序设计程度 E安装更多内存

F安装一个更快的硬盘,或对多个硬盘使用多个控制器 G对页面调度算法添加预取页

H增加页面大小。

答:该系统显然花费了许多时间进行分页,显示过度分配的内存,如果多级程序水平减少驻

地进程,将页面错误变少和提高CPU利用率。另一种方式来提高利用率是获得更多的物理内存或更快的分页鼓。 ABC都不行,D可以

E.可能提高CPU利用率为更多页面保持驻地,而不需要分页或磁盘。

F.另一个改进,因为磁盘的瓶颈是删除更快的响应,和更多的磁盘容量,CPU将会获得更多的数据传输速度

G.CPU将获得更快的数据传输率,所以更多地被使用。如果分页服从预调(即一些访问顺序)这只是一个方面。

H.增加页面大小将导致减少页面错误,如果数据进行是随机的,则分页可以随之,因为较少页面可保存在内存上,更多的数据转移到页面错误 上,这种 变化可以减少CPU利用率或者增加CPU利用率。

9.11 假设一台机器使用一级间接引用方法提供可以访问内存位置的指令。当一个程序的所有页未驻留,程序的第一条指令是一个间接内存load操作时,将会出现什么页错误?当操作系统正在使用一个单进程帧分配技术,只有两个页被分配至此进程时,将会发生什么? Answer:

出现以下页错误:访问指令的页错误,访问包含一个指向目标内存位置指针的内存位置的页的错误,访问目标内存位置的页错误。第三页置换包含指令的页,操作系统将产生三个页错误。如果需要再次取出指令,重复被陷指令,那么,页错误将无限期地继续下去。如果指令在寄存器中缓存,那么将能在第三页错误后完全执行。

9.12 假设你的置换策略(在分页系统中)是有规律地检查每个页并将最近一次检测后没有再被引用的页丢弃。与LRU或二次机会置换算法相比,使用这种策略有哪些好处和坏处? Answer:

这种算法可以靠引用位的使用来实现。每次检查过后,置位为0;如果页被引用,置位为1。然后,该算法将从自上次检查后未使用过的页中选择任意页来置换。

这种算法的优点是算法比较简单——只需保持一个引用位。这种算法的缺点是,只能使用很短的时间帧来决定是否置换一页,从而忽略了局部性。例如,一个页可能是一个进程工作集合的一部分,但因为自上次检查后未被引用而被置换。(即不是所有工作集合中的页可以在检查之间被引用)

9.13 一个页面置换算法应使发生页错误的次数最小化。怎样才能通过将使用频率高的页平均分配到整个内存而不只是竞争少数几个页帧页来达到这种最小化。可以对每个页帧设置一个计数器来记录与此帧相关的页数。那么当置换一