ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:25.95KB ,
资源ID:11287275      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11287275.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《现代操作系统第四版》第三章答案.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《现代操作系统第四版》第三章答案.docx

1、现代操作系统第四版第三章答案第三章 内存管理 习题1.IBM360 有一个设计,为了对 2KB 大小的块进行加锁,会对每个块分配一个4bit 的密钥,这个密钥存在 PSW(程序状态字)中,每次内存引用时, CPU 都 会进行密钥比较。 但该设计有诸多缺陷, 除了描述中所言, 请另外提出至少两条 缺点。A:密钥只有四位,故内存只能同时容纳最多十六个进程;需要用特殊硬件进行 比较,同时保证操作迅速。2.在图 3-3 中基址和界限寄存器含有相同的值 16384 ,这是巧合,还是它们总是 相等?如果这只是巧合,为什么在这个例子里它们是相等的? A:巧合。基地址寄存器的值是进程在内存上加载的地址;界限寄

2、存器指示存储 区的长度。3.交换系统通过紧缩来消除空闲区。假设有很多空闲区和数据段随机分布,并且 读或写 32 位长的字需要 10ns 的时间,紧缩 128MB 大概需要多长时间?为了简 单起见,假设空闲区中含有字 0,内存中最高地址处含有有效数据。A:32bit=4Byte= 每字节 10/4=2.5ns 128MB=128220=227Byte 对每个字节既要读又要写, 22.5*227=671ms4.在一个交换系统中,按内存地址排列的空闲区大小是 10MB ,4MB,20MB , 18MB,7MB,9MB,12MB,和 15MB 。对于连续的段请求:(a)12MB(b)10MB(c)9M

3、B 使用首次适配算法, 将找出哪个空闲区?使用最佳适配、 最差适配、 下次适配算 法呢?A: 首次适配算法: 20MB ,10MB ,18MB ; 最佳适配算法: 12MB ,10MB ,9MB; 最差适配算法: 20MB ;18MB ;15MB ; 下次适配算法: 20MB ;18MB ; 9MB;5.物理地址和虚拟地址有什么区别?A:实际内存使用物理地址。这些是存储器芯片在总线上反应的数字。虚拟地址 是指一个进程的地址空间的逻辑地址。因此,具有 32 位字的机器可以生成高达 4GB 的虚拟地址,而不管机器的内存是否多于或少于 4GB。6.对下面的每个十进制虚拟地址,分別使用 4KB 页面和

4、 8KB 页面计算虚拟页号 和偏移量: 20000 ,32768 , 60000 。A:转换为二进制分别为 : 0100111000100000 虚拟地址应该是 16 位 1000000000000000 1110101001100000 4KB 页面偏移量范围 04027 ,需要 12 位来存储偏移量,剩下 4 位作为页号; 同理 8KB 页面需要 13 位来存储偏移 量,剩下 3 位作为页号; 所以, 4KB | 8KB 页号 | 偏移量 | 页号 | 偏移量 20000 | 0100 111000100000 | 010 0111000100000 32768 | 1000 000000

5、000000 | 100 0000000000000 60000 | 1110 101001100000 | 111 01010011000007.使用图 3-9 的页表,给出下面每个虚拟地址对应的物理地址:(a)20(b)4100(c)8300A: (a)20+40962=8212 (b) 4100=4096+ (4100-4096 ) =4100 (c)8300=64096+ (8300-4096*2 )=246848.Inlel 8086 处理器不支持虚拟内存,然而一些公司曾经设计过包含未作任何改 动的 8086 CPU 的分页系统。猜想一下,他们是如何做到这一点的。 (提示:考 虑 M

6、MU 的逻辑位置。)A:他们制作了 MMU ,并连接在 CPU与地址总线之间, 这样从处理器进入 MMU 的地址全部被视为虚拟地址, 并被转换为物理地址, 然后被送到地址总线, 映射 到内存中。9.为了让分页虚拟内存工作,需要怎样的硬件支持?A:需要一个 MMU 能够将虚拟页面重新映射到物理页面。 此外,当缺页中断时, 需要对操作系统设置陷阱,以便可以获取页面。10.写时复制是使用在服务器系统上的好方法,它能否在手机上起作用。A: “写时复制 “技术,也就是只有进程空间的各段的内容要发生变化时, 才会将 父进程的内容复制一份给子进程。 如果智能手机支持多重编程, iPhone 、 Androi

7、d 和 Windows 手机都支持多重编程,那么支持多个进程。如果进程发出fork() 系统调用和页面在父进程和子进程之间共享,则复制对写是有意义的。智能手机比服务器小,但从逻辑上讲,它并没有什么不同11.考虑下面的 C 程序:int XN;int step = M; /M 是某个预定义的常量for (int i = 0; i N; i += step) Xi = Xi + 1;a)如果这个程序运行在一个页面大小为 4KB 且有 64 个 TLB 表项的机器上时, M 和 N 取什么值会使得内层循环的每次执行都会引起 TLB 失效 ?b)如果循环重复很多遍,结果会和 a)的答案相同吗?请解释。

8、A: a)M 必须至少为 1024 ,以确保对 X元素的每一次访问都有一个 TLB 缺失。因 为 N 只影响 X 访问多少次, N 取大于 M 的任何值都可以。 b)M 应该至少是 1024 ,以确保对 X元素的每次访问都遗漏 TLB。但是现在 N 应该大于 64K,以 便处理 TLB,也就是说, X 应该超过 256KB。12.存储页面必须可用的磁盘空间和下列因素有关: 最大进程数 n ,虚拟地址空间 的字节数 v,RAM 的字节数 r,给出最坏情况下磁盘空间需求的表达式。这个数 量的真实性如何?A:所有进程的整个虚拟地址空间为 nv ,这就是页面存储所需的。不过,可以在 RAM 中存储量为

9、 r,因此需要的磁盘存储量仅为 nv-r 。该量比实际所需的要大 得多,因为极少有 n 个进程实际运行, 而且这些进程也极少需要其最大允许的虚拟内存13.如果一条指令执行 1ns,缺页中断执行额外的 Nns ,且每条 k 指令产生一个 缺页,请给出一个公式,计算有效指令时间。A: (1*(k-1)+(1+N)/k = 1+N/k ns14.一个机器有 32 位地址空间和 8KB 页面,页表完全用硬件实现,页表的每一 表项为一个 32 位字。进程启动时,以每个字 100ns 的速度将页表从内存复制到 硬件中。如果每个进程运行 100ms(包含装入页表的时间) 用来装人页表的 CPU 时间的比例是

10、多少?A: 32 位地址空间构成 4GB 内存空间, 4GB/8KB=512 个页面,页表项 512 项, 页表大小 512 32=214 bit复, 制页表的时间 =214/25*10ns = 5120 ns, 时间比例5120ns/100ms=5120 -190) (/ 100 -31)0 =(51.2% 8KB 页面大小,需要13 位偏移量,故页号有 19 位,页面有 219 个,页表项也是 219 个,每项 32 位字。 219 100ns/100ms=52.4288%15.假设一个机器有 48 位的虚拟地址和 32 位的物理地址。a)假设页面大小是 4KB,如果只有一级页表,那么在页

11、表里有多少页表项? 请解释。b)假设同一系统有 32 个 TLB表项,并且假设一个程序的指令正好能放入一个页, 并且该程序顺序地从有数千个页的数组中读取长整型元素。 在这种情况下 TLB 的 效果如何?A:a)页面大小 4KB,偏移量有 12 位,则页号有 36 位,有 236 项页表项;b)TLB 访问的命中率达 100%。在指令访问下一个页面之前读取数据的命中率是 100%,一个 4KB 大小的页面包含 1024 个长整型数据, 每访问 1024 个数据就会 有一次 TLB 失效。16.给定一个虚拟内存系统的如下数据:(a)TLB有1024 项,可以在 1个时钟周期( 1ns)内访问。(b

12、)页表项可以在 100 时钟周期( 100ns )内访问。( c)平均页面替换时间是 6ms。如果 TLB 处理的页面访问占 99%,并且 0.01%的页面访问会发生缺页中断,那么 有效地址转换时间是多少?A : 99%1ns+1%99.99%100ns+1%0.01%6ms=7.998%99 1ns+0.99%100ns+0 .01%6ms6=01.98ns17.假设一个机器有 38 位的虚拟地址和 32 位的物理地址。 a)与一级页表比较,多级页表的主要优点是什么? b)若采用二级页表,页面大小为 16KB,每个页表项为 4 字节,应该对第一级页 表域分配多少位 ,对第二级页表域分配多少位

13、?请解释原因A: a)避免把全部页表一直保存在内存中。 b) ”16KB个页 “估计是指这个二 级页表的大小是 16KB,故页表项有 16KB/4B=4K 个,二级页表域需要 12 位, 四字节表项说明页面大小是 12 页面大小 16KB,则偏移量需要 14 位,每个条目4 字节18.在 3.3.4 节的陈述中,奔腾 Pro 将多级页表中的每个页表项扩展到 64 位,但 仍只能对 4GB的内存进行寻址。请解释页表项为 64 位时,为何这个陈述正确。 A:虽然页表项扩展了,但是虚拟内存地址依然只有 32 位。19.个 32 位地址的计算机使用两级页表。 虚拟地址被分成 9 位的顶级页表域、11

14、位的二级页表域和一个偏移量,页面大小是多少?在地址空间中一共有多少 个页面?A: 页面大小与偏移量位数有关 =212Byte=4KB, 每个地址对应内存一个字节, 地址空间的页面数量 =220 个。20.一个计算机使用 32位的虚拟地址, 4KB 大小的页面。程序和数据都位于最低 的页面( 04095 ),栈位于最高的页面。如果使用传统(一级)分页,页表中需 要多少个表项?如果使用两级分页,每部分有 10 位,需要多少个页表项? A:32 位地址对应 4GB 内存,有 4GB/4KB=220 个页面 ,如果使用传统(一级) 分页:需要 220 个页表项;如果使用两级分页,顶级页表有 210 个

15、页表项, 其中三项指向二级页表 (程序段、 数据段、堆栈段),二级页表每个也有有 210 个页表项,总共 212 个页表项。21.如下是在页大小为 512 字节的计算机上,一个程序片段的执行轨迹。这个程 序在 1020 地址,其栈指针在 8192 (栈向 0 生长)。请给出该程序产生的页面访 问串。每个指令(包括立即常数)占 4 个字节( 1 个字)。指令和数据的访问都要在访问串中计数 将字 6144 载入寄存器 0寄存器 0 压栈调用 5120 处的程序,将返回地址压栈栈指针减去立即数 16 比较实参和立即数 4 如果相等,跳转到 5152 处A:程序地址范围 10201532 。页面访问串

16、: 6144-8191 5120 8190 8184 5152. A :每个页面 512B,1020 地址属于 512 1023 ,即页面 1;栈指针 8192 属于 8192 8704 ,即页面 16,但是栈向 0 生长,故寄存器压 栈到 8191 8188,属于页面 15;5152 地址属于 5120 5631 ,即页面 10. 每 条指令 4 个字节,故第一条指令在地址范围 1020 1023 ,属于页面 1;第二条 指令在地址范围 1024 1027 ,属于页面 2;第三条指令地址也在页面 2,但是 将数据压栈到页面 15 了。 LOAD 6144,R0 1(I), 12(D) PUS

17、H R0 2(I), 15(D) CALL 5120 2(I), 15(D) JEQ 5152 10(I) 代码( I )指示指令引用,而( D)指示数据引 用。22.一台计算机的进程在其地址空间有 1024 个页面,页表保存在内存中。 从页表 中读取一个字的开销是 5n 。为了减小这一开销,该计算机使用了 TLB,它有 32 个(虚拟页面,物理页框)对,能在 1ns 内完成查找。请问把平均开销降到 2ns 需要的命中率是多少?23.TLB 需要的相联存储设备如何用硬件实现,这种设计对扩展性意味着什么?A:相联存储器本质上将 key 与多个寄存器的内容同时进行比较。对于每个寄存 器,必须有一组

18、比较器, 将寄存器内容中的每个位与正在搜索的键进行比较。 实 现这种设备所需的门 (或晶体管) 的数量是寄存器数量的线性函数, 因此这种设 计对扩展性意味着成本变得昂贵。24.一台机器有 48 位虚拟地址和 32 位物理地址,页面大小是 8KB,试问页表中 需要多少个表项?A: 物理内存是 4GB,页面数量是 4GB/8KB=219 项,页面偏移量需要 213 位, 页表域总共 35 位。25.一个计算机的页面大小为 8KB,内存大小为 256KB ,虚拟地址空间为 64GB, 使用倒排页表实现虚拟内存。为了保证平均散列链的长度小于 1,散列表应该多 大?假设散列表的大小为 2 的幂。A:(原

19、答案)内存有 228(256KB) / 213(8KB) =(215)32768 页。32K 的哈希表的平均链长为 1。为了使之小于 1,必须使用下一个尺寸 (216)65536 项。将 32768 项放入 65536 格中使其平均链长为 0.5 ,以保证快速的查询。 (这个题 目有错吧?内存应该是 256MB 才对) 物理页面数 =256MB/8KB=215 , 若散列表为 215 ,则平均散列长度为 1,为保证平均散列链长度小于 1,散列表至少为 216.26.一个学生在编译器设计课程中向教授提议了一个项目:编写一个编译器,用来产生页面访问列表, 该列表可以用于实现最优页面置换算法。 试问

20、这是否可能? 为什么?有什么方法可以改进运行时的分页效率?A:这是不可能的,除了程序的执行过程在编译时是完全可预测的少数情况。如 果编译器收集程序有关调用代码中的位置信息, 则可以在链接时使用此信息来重 新排列目标代码, 以便程序位于它们调用的代码附近。 这将使得进程更可能与所 调用的代码在同一个页面上。当然这从许多地方进行调用的程序来说是无效的。27.假设虚拟页码索引流中有一些长的页码索引序列的重复,序列之后有时会是 一个随机的页码索引。例如,序列 0,1,511 ,431,0,1,511,332, 0,1,中就包含了 0,1,511 的重复,以及跟随在它们之后的随机页码索 引 431 和

21、332 。a)在工作负载比该序列短的情况下,标准的页面置换算法( LRU,FIFO,Clock) 在处理换页时为什么效果不好? b)如果一个程序分配了 500 个页框,请描述一 个效果优于 LRU、FIFO 或 Clock 算法的页面置换方法。A: a)标准的页面置换算法是针对已经在内存中的页面研究的。 当工作负载比序 列短时,会出现内存容量不够而长生颠簸,这种情况下 LRU、Clock 、FIFO算法 达不到预期的效果,任何访问都会引起缺页除非内存的页框数量大于 512 。 b)如果分配了 500 个页框,那么 0498 号页框是固定的,只有一个页框进行页面 置换28.如果将 FIFO页面罝

22、换算法用到 4 个页框和 8 个页面上,若初始时页框为空, 访问字符串为 0172327103 ,请问会发生多少次缺页中断?如果使用 LRU 算法 呢?A: FIFO 6 LRU 729.考虑图 3- 15b 中的页面序列。假设从页面 B到页面 A 的R位分别是 11011011使用第二次机会算法,被移走的是哪个页面?A:D。30.一台小计算机有 4个页框。在第一个时钟滴答时 R位是 0111(页面 0是 0, 其他页面是 1),在随后的时钟滴答中这个值是 1011 、1010 、1101 、0010 、1010 、 1100、0001。如果使用带有 8 位计数器的老化算法,给出最后一个滴答后

23、 4个 计数器的值。A:0 号页框: 01101110 ; 1 号页框: 01001001 ; 2 号页框: 00110111 ; 3号页框: 10001011 。31.请给出一个页面访问序列, 使得对于这个访问序列, 使用 Clock 和 LRU 算法 得到的第一个被选择置换的页面不同。 假设一个进程分配了 3 个页框,访问串中 的页号属于集合 0,1,2,3。A:0130123 。 LRU将第3页替换为第 2页。 Clock 将第0页替换为第 2页32.在图 3-21c 的工作集时钟算法中, 表针指向那个 R = 0 的页面。如果 =400,这个页面将被移出吗?如果 = 1000呢?(当前

24、时间 2204 )A:该页面的生存时间是 2204 - 1213 = 991 。如果 = 400,它就不在工作集中, 最近没有被引用,所以它将被移出。 = 1000的情况不同,此时页面在工作集中, 所以它不会被删除。34.一个学生声称: “抽象来看,除了选取替代页面使用的属性不同外,基本页面 置换算法( FIFO,LRU,最优算法)都相同。 ”(a)FIFO、LRU、最优算法使用 的属性是什么?( b)请给出这些页面置换算法的通用算法。A : a) FIFO:加载时间; LRU:最近访问时间; OPT:在未来的最近访问时间b)有标签算法和替换算法。标记算法用部分 a 给出的属性从大到小标记每个

25、页 面。替换算法删除标签最小的页面。35.从平均寻道时间 10ms、旋转延迟时间 10ms 、 每磁道 32KB 的磁盘上载入一 个 64KB 的程序,对于下列页面大小分别需要多少时间?a) 页面大小为 2KB;b) 页面大小为 4KB。 假设页面随机地分布在磁盘上,柱面的数目非常大以至于两个页面在同一个柱面的机会可以忽略不计b)页面 16 个, 1620=320ms原答案:(很迷啊,怎么算的传输时间啊?) :搜索加旋转等待时间为 10 毫秒。对于 2-KB 页面,传输时间约为 0.009766 毫 秒,总共约 10.009766 毫秒。加载这些页面的 32 将花费大约 320.21 毫秒。对

26、 于 4-KB 页面,传输时间加倍到大约 0.01953 毫秒,因此每页的总时间是 10.01953 毫秒。加载这些页面的 16 需要大约 160.3125 毫秒。使用这样快的磁盘,所有 重要的是减少传输的数量(或者连续地将页面放在磁盘上) 。现在我知道是如何计算的了,参考 现代操作系统中文第四版 第 4 章文件 系统 4.4.1 的例子:假设磁盘每道有 1MB ,其旋转时间是 8.33ms ,平均寻道时间为 5ms 。以毫秒为 单位,读取一个 k 字节的块所需要的时间是寻道时间、旋转延迟和传送时间之 和:5 + 4.165 + (k/1000000) x 8.33从中可以得知单位容量传送时间

27、 = 旋转时间 / 每道容量故本题中单位容量传送时间 = 23/215 x 10 = 0.00244 ms/KB42.人们已经观察到在两次缺页中断之间执行的指令数与分配给程序的页框数直 接成比例。 如果可用内存加倍, 缺页中断间的平均间隔也加倍。 假设一条普通指 令需要 1m,但是如果发生了缺页中断,就需要 2001 (s 即 2ms 处理缺页中 断),如果一个程序运行了 60s,期间发生了 15000 次缺页中断,如果可用内存 是原来的两倍,那么这个程序运行需要多少时间?A:该程序发生了 15000 次缺页中断,每个缺页中断都需要 2ms 的额外处理时 间。处理缺页中断的总开销为 30s。这

28、意味着在程序运行的 60s 内,一半用于缺 页中断开销, 一半用于运行程序。 如果我们运行程序的内存是内存的两倍, 我们 会得到一半的内存页错误,只有 15 秒的页面错误开销,所以总的运行时间将是 45 秒。43.Frugal 计算机公司的一组操作系统设计人员正在考虑在他们的新操作系统中 减少对后备存储数量的需求。 老板建议根本不要把程序正文保存在交换区中, 而 是在需要的时候直接从二进制文件中调页进来。 在什么条件下 (如果有这样的条 件话)这种想法适用于程序文本?在什么条件下 (如果有这样的条件话) 这种想 法适用于数据?A:这种想法适用于无法修改的程序和不能被修改的数据。但是,通常程序不

29、能 修改,数据却极少数无法修改。如果二进制文件中的数据区被更新的页面覆盖, 下一次程序启动时,它将不会有原始数据44.有一条机器语言指令将要被调入,该指令可把一个 32 位字装入含有 32 位字 地址的寄存器。这个指令可能引起的最大缺页中断次数是多少? A:该指令可能跨越页面边界,为了获取指令将导致两个缺页中断。获取的字也 可能跨越页边界, 产生两个以上的缺页中断, 总共四个。 如果字必须在内存中对 齐,则数据字只能导致一个缺页中断,但是在某些机器(包括奔腾)上,在具有4 KB 页面的机器上的 4094 地址上加载 32 位字的指令是合法的。46.像在 MULT1CS 中那样,当同时使用分段和

30、分页时, 首先必须查找段描述符, 然后是页描述符。 TLB 也是这样按两级查找的方式工作的吗? 答:否。搜索键使用段号和虚拟页码,因此可以在单个匹配中找到确切的页面。47.一个程序中有两个段,段 0 中为指令,段 1 中为读/写数据。段 0 有读/执行 保护,段 1 有读 /写保护。内存是请求分页式虚拟内存系统,它的虚拟地址为 4 位页号, 10 位偏移量。页表和保护如下所示(表中的数字均为十进制) : (表格略) 对于下面的每种情形,或者给出动态地址所对应的实(实际)内存地址,或者指 出发生了哪种失效(缺页中断,或保护错误) 。a)读取页:段 1,页 1,偏移 3;b)存储页:段 0,页 0,偏移 16 ;c)读取页:段 1 ,页 4,偏移 28 ;d)跳转到:段 1,页 3,偏移 32 。 A:还没写。48.你能想象在哪些情况下支持虚拟内存是个坏想法吗?不支持虚拟内存能得到什么好处呢?请解释。A:一般来说,当可以了解和控制所有应用程序的需求时, 虚拟内存就没必要了。 例如,特殊用途的处理器(如网络处理器) ,嵌入式处理器和超级计算机(如机 翼设计)。在这些情况下,我们总会考虑使用更多的物理内存。如果操作系统没 有使用(不支持)虚拟内存,它的代码会简单很多,系统的性能会有所提高。另 一方面,一些来自虚拟内存的想法有利于开发,尽管有不同的设计需求。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1