Modern Operating System 第三章

第一部分 课程笔记

第二部分 试题解析

3. 请比较用位图和链表两种方法来记录空闲内存所需的存储空间。 128MB
内存以 n 字节为单元分配,对于链表,假设内存中数据段和空闲区交替排列,长
度均为 64KB 。并假设链表中的每个结点需要 32 位的内存地址、 16 位长度和 16 位下
一结点域。这两种方法分别需要多少字节的存储空间?哪种方法更好?
4. 在一个交换系统中,按内存地址排列的空闲区大小是: 10KB 4KB
20KB 18KB 7KB 9KB 12KB 15KB 。对于连续的段请求: a)12KB
b)10KB c)9KB 。使用首次适配算法,将找出哪个空闲区?使用最佳适配、最差
适配、下次适配算法呢?
5. 对下面的每个十进制虚拟地址,分别使用 4KB 页面和 8KB 页面计算虚拟页
号和偏移量: 20000 32768 60000
6.Intel 8086 处理器不支持虚拟内存,然而一些公司曾经设计过包含未作任何
改动的 8086 CPU 的分页系统。猜想一下,他们是如何做到这一点的。提示:考虑
MMU 的逻辑位置。
7. 考虑下面的 C 程序:
int X[N]; int step=M;//M 是某个预定义的常量
for(int i=0;i N;i+=step)X[i]=X[i]+1;
a) 如果这个程序运行在一个页面大小为 4KB 且有 64 TLB 表项的机器上时,
M N 取什么值会使得内层循环的每次执行都会引起 TLB 失效?
b) 如果循环重复很多遍,结果会和 a) 的答案相同吗?请解释。
8. 存储页面必须可用的磁盘空间和下列因素有关:最大进程数 n ,虚拟地址空
间的字节数 v RAM 的字节数 r 。给出最坏情况下磁盘空间需求的表达式。这个数
量的真实性如何?
9. 一个机器有 32 位地址空间和 8KB 页面,页表完全用硬件实现,页表的每一
表项为一个 32 位字。进程启动时,以每个字 100ns 的速度将页表从内存复制到硬件
中。如果每个进程运行 100 ms (包含装入页表的时间),用来装入页表的 CPU
间的比例是多少?
10. 假设一个机器有 48 位的虚拟地址和 32 位的物理地址。
a) 假设页面大小是 4KB ,如果只有一级页表,那么在页表里有多少页表项?
请解释。
b) 假设同一系统有 32 TLB 表项,并且假设一个程序的指令正好能放入一个
页,并且该程序顺序地从有数千个页的数组中读取长整型元素。在这种情况下
TLB 的效果如何?
11. 假设一个机器有 38 位的虚拟地址和 32 位的物理地址。
a) 与一级页表比较,多级页表的主要优点是什么?
b) 一个有 16KB 个页、 4 字节表项的二级页表,应该对第一级页表域分配多少 位,对第二级页表域分配多少位?请解释原因。
12. 一个 32 位地址的计算机使用两级页表。虚拟地址被分成 9 位的顶级页表
域、 11 位的二级页表域和一个偏移量,页面大小是多少?在地址空间中一共有多
少个页面?
13. 假设一个 32 位虚拟地址被分成 a b c d 四个域。前三个域用于一个三级
页表系统,第四个域 d 是偏移量。页面数与这四个域的大小都有关系吗?如果不
是,与哪些因素有关以及与哪些因素无关?
14. 一个计算机使用 32 位的虚拟地址, 4KB 大小的页面。程序和数据都位于最
低的页面(
0 4095 ),堆栈位于最高的页面。如果使用传统(一级)分页,页
表中需要多少个表项?如果使用两级分页,每部分有 10 位,需要多少个页表项?
15. 一台计算机的进程在其地址空间有 1024 个页面,页表保存在内存中。从页
表中读取一个字的开销是 5ns 。为了减小这一开销,该计算机使用了 TLB ,它有 32
个(虚拟页面,物理页框)对,能在 1ns 内完成查找。请问把平均开销降到 2ns
要的命中率是多少?
16.VAX 机中的 TLB 中没有包含 R 位,为什么?
17.TLB 需要的相联存储设备如何用硬件实现,这种设计对扩展性意味着什
么?
18. 一台机器有 48 位虚拟地址和 32 位物理地址,页面大小是 8KB ,试问页表中
需要多少个表项?
19. 一个计算机的页面大小为 8KB ,内存大小为 256KB ,虚拟地址空间为
64GB ,使用倒排页表实现虚拟内存。为了保证平均散列链的长度小于 1 ,散列表 应该多大?假设散列表的大小为 2 的幂。
20. 一个学生在编译器设计课程中向教授提议了一个项目:编写一个编译器,
用来产生页面访问列表,该列表可以用于实现最优页面置换算法。试问这是否可
能?为什么?有什么方法可以改进运行时的分页效率?
21. 假设虚拟页码索引流中有一些长的页码索引序列的重复,序列之后有时会
是一个随机的页码索引。例如,序列 0 1 ... 511 431 0 1 ... 511
332 0 1 ... 中就包含了 0 1 ... 511 的重复,以及跟随在它们之后的随机页
码索引 431 332
a) 在工作负载比该序列短的情况下,标准的页面置换算法( LRU FIFO
Clock )在处理换页时为什么效果不好?
b) 如果一个程序分配了 500 个页框,请描述一个效果优于 LRU FIFO Clock
算法的页面置换方法。
22. 如果将 FIFO 页面置换算法用到 4 个页框和 8 个页面上,若初始时页框为
空,访问字符串为 0172327103 ,请问会发生多少次缺页中断?如果使用 LRU 算法
呢?
23. 考虑图 3-15b 中的页面序列。假设从页面 B 到页面 A R 位分别是
11011011 。使用第二次机会算法,被移走的是哪个页面?
24. 一台小计算机有 4 个页框。在第一个时钟滴答时 R 位是 0111 (页面 0 0
其他页面是 1 ),在随后的时钟滴答中这个值是 1011 1010 1101 0010
1010 1100 0001 。如果使用带有 8 位计数器的老化算法,给出最后一个滴答后 4
个计数器的值。 25. 请给出一个页面访问序列,其第一个被选择置换的页面必须不同于 Clock
LRU 算法。假设一个进程分配了 3 个页框,访问串中的页号属于集合 0 1 2
3
26. 在图 3-21c 的工作集时钟算法中,表针指向那个 R=0 的页面。如果 τ=400
这个页面将被移出吗?如果 τ=1000 呢?
27. 把一个 64KB 的程序从平均寻道时间 10ms 、旋转延迟时间 10ms 、每磁道
32KB 的磁盘上装入,对于下列页面大小分别需要多少时间?
a) 页面大小为 2KB
b) 页面大小为 4KB
假设页面随机地分布在磁盘上,柱面的数目非常大以至于两个页面在同一个
柱面的机会可以忽略不计。
28. 一个计算机有 4 个页框,装入时间、上次访问时间和每个页的 R 位和 M 位如
下所示(时间以时钟滴答为单位):
a)NRU 算法将置换哪个页面?
b)FIFO 算法将置换哪个页面?
c)LRU 算法将置换哪个页面? d) 第二次机会算法将置换哪个页面?
29. 有二维数组:
int X[64][64];
假设系统中有 4 个页框,每个页框大小为 128 个字(一个整数占用一个字)。
处理数组 X 的程序正好可以放在一页中,而且总是占用 0 号页。数据会在其他 3
页框中被换入或换出。数组 X 为按行存储(即,在内存中, X[0][0] 之后是 X[0]
[1] )。下面两段代码中,哪一个会有最少的缺页中断?请解释原因,并计算缺页
中断的总数。
A 段:
for(int j=0;j 64;j++)
for(int i=0;i 64;i++)X[i[[j]=0;
B 段:
for(int i=0;i 64;i++)
for(int j=0;j 64;j++)X[i][[j]=0;
30.PDP-1 是最早的分时计算机之一,有 4K 18 位字的内存。在每个时刻它在
内存中保持一个进程。当调度程序决定运行另一个进程时,将内存中的进程写到
一个换页磁鼓上,磁鼓的表面有 4K 18 位字。磁鼓可以从任何字开始读写,而不
仅仅是字 0 。请解释为什么要选这个磁鼓?
31. 一台计算机为每个进程提供 65 536 字节的地址空间,这个地址空间被划分
4096 字节的页面。一个特定的程序有 327 68 字节的正文、 16 386 字节的数据和
15 870 字节的堆栈。这个程序能装入这个地址空间吗?如果页面大小是 512 字节, 能放得下吗?记住一个页面不能同时包含两个不同段的成分。
32. 一个页面同一时刻可能在两个工作集中吗?请解释原因。
33. 人们已经观察到在两次缺页中断之间执行的指令数与分配给程序的页框数
直接成比例。如果可用内存加倍,缺页中断间的平均间隔也加倍。假设一条普通
指令需要 1µs ,但是如果发生了缺页中断就需要 2001µs (即 2ms 处理缺页中断)。
如果一个程序运行了 60s ,期间发生了 15 000 次缺页中断,如果可用内存是原来的
两倍,那么这个程序运行需要多少时间?
34.Frugal 计算机公司的一组操作系统设计人员正在考虑在他们的新操作系统
中减少对后备存储数量的需求。老板建议根本不要把程序正文保存在交换区中,
而是在需要的时候直接从二进制文件中调页进来。在什么条件下(如果有这样的
条件话)这种想法适用于程序文本?在什么条件下(如果有这样的条件话)这种
想法适用于数据?
35. 有一条机器语言指令将要被调入,该指令可把一个 32 位字装入含有 32 位字
地址的寄存器。这个指令可能引起的最大缺页中断次数是多少?
36. 像在 MULTICS 中那样,当同时使用分段和分页时,首先必须查找段描述
符,然后是页描述符。 TLB 也是这样按两级查找的方式工作的吗?
37. 一个程序中有两个段,段 0 中为指令,段 1 中为读 / 写数据。段 0 有读 / 执行保
护,段 1 有读 / 写保护。内存是请求分页式虚拟内存系统,它的虚拟地址为 4 位页
号, 10 位偏移量。页表和保护如下所示(表中的数字均为十进制): 对于下面的每种情形,或者给出动态地址所对应的实(实际)内存地址,或
者指出发生了哪种失效(缺页中断,或保护错误)。
a) 读取页:段 1 ,页 1 ,偏移 3
b) 存储页:段 0 ,页 0 ,偏移 16
c) 读取页:段 1 ,页 4 ,偏移 28
d) 跳转到:段 1 ,页 3 ,偏移 32
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值