操作系统课后习题答案习题 7 虚拟存储管理 下载本文

习题 7 虚拟存储管理

一、选择题

题号 1 2 3 4 5 6 7 8 9 10 答案 A B B C A A B B A A 题号 11 12 13 14 15 16 答案 C B B B C B 二、综合题

1、答:把一个程序分为一系列功能相对读了的程序单元(称为覆盖),让执行时并不要求同

时装入内存的覆盖组成一组(称为覆盖段),共享同一个存储区域,这种内存扩充就是覆盖。 交换技术就是把暂时不用的某个程序及数据部分或全部从内存移到外存中去,以便腾出必要 的内存空间,或把制定的程序或数据从外存读到相应的内存中,并将控制权转给它,让其在 系统上运行的一种内存扩充技术。

覆盖技术要求程序员必须把一个程序划分成不同的程序段,并规定好它们的执行和覆盖顺 序,操作系统根据程序员提供的覆盖结构来完成程序段之间的覆盖。覆盖主要在同一个作业 或同一个进程内进行;而交换主要是在进程或作业之间进行。另外,覆盖只能覆盖那些与覆 盖程序段无关的程序段。 2、答: 不对。交换是把内存中暂时不能运行的进程或暂时不用的程序和数据换出到外存上,以腾出 足够的内存空间,把已具备运行条件的进程或进程所需的程序、数据换入内存。交换式提高 内存利用率的有效措施。

而虚拟存储器是指仅把作业的一部分装入内存便可运行作业的存储器系统,是指具有请求调 入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。虚拟存储系统的实 现,都是建立在离散分配存储管理的基础之上。虽然交换能提高内存利用率,但仅使用交换 技术,仍然不能实现仅把作业的一部分装入内存便运行作业,故交换并不能实现虚拟存储器。 3、答:

为了给大作业(其地址空间超过主存可用空间)用户提供方便,而由操作系统把主存和辅存 统一管理起来并实现自动交换。即一个大作业在执行时,一部分地址空间在主存,而另一部 分在辅存,当访问的信息不在主存时由操作系统(而不是有程序设置的I/O 指令)将其从辅 存调入主存。从效果上看,该计算机系统好像为用户提供了一个容量比主存大得多的存储器, 这个存储器称为虚拟存储器。

虚拟存储器的基本特征是:①虚拟扩充,即不是物理上而是逻辑上扩充了内存容量; ②部分装入,即每个作业不是全部一次性地装入内存,而是只装入一部分;③离散分

配,即不必占用连续的内存空间,而是\见缝插针\④多次对换,即所需的全部程序和数据要分 成多次调入内存。 4、答:

0x2C27:0x7C27 0x1D71:缺页 0x4000:越界

5、答:m 条指令实际花费时间应为执行m 条指令花费的时间与操作系统处理一次页故障需要时间之和。一条指令执行平均需要k(ns),m 条指令执行需要m * k(ns),执行m 条指令发生一次缺页中断,需要n(ns),也即m 条指令实际花费时间为(m * k + n)(ns),

则平均每条指令的执行时间为(m * k + n)/ m(ns)。 6、答:

LRU 方法:10 次,FIFO 方法:14 次,Optimal 方法:8 次。 7、答:

(1) 由表中装入时间可知,最先装入内存的是第3 页,所以采用FIFO 算法时,将选择 第3 页进行置换。

(2) 由表中最后访问时间可知,最近最久未使用的是第2 页,所以采用LRU 算法时, 将选择第2 页进行置换。

(3) 从表中可知,访问位和修改位均为0,即未访问过的页面,又未被修改过的页面是 第0 页,所以采用改进的Clock 算法时,将选择第0 页进行置换。 8、答:

在虚拟存储器系统中,刚被淘汰的页面又马上被调回内存,调回内存不久又马上被淘汰出去, 如此反复的局面,这种现象称为抖动(或称颠簸)现象。如果在页面置换算法设置不好的情 况下,就会出现同一个页面频繁地在主、辅存之间的“抖动”现象。

直观上,分配给进程的物理块越多,进程执行时发生的缺页次数就越小。在某些情况下,当 分配的物理块多反而导致缺页次数更大,这种奇怪的现象称为Belady 异常现象。例如对于 页面引用串1,2,3,4,1,2,5,1,2,3,4,5。在内存中分配了3 个物理块时发生了9 次缺页中断,而当 分配了4 个物理块时发生了10 次缺页中断。这种异常现象只会在FIFO 算法里可能出现, 不会在其它算法里出现。 9、答:

在指令中如果包含地址部分,则必须进行地址变换,同时进行越界检查和权限检查,只在两 者均合法时,才完成指令规定操作。

(1)由于第0 段的存在位为0,表示该段未装入内存,因此产生缺段中断。

(2)从段表第1 项可看到,指令中逻辑地址合法,段也已经在内存,但存取控制字段不符, 故产生保护性中断信号。

(3)逻辑地址合法,存取方式合法,形成物理地址8020 后,执行指定操作。(4)逻辑地址中段内地址超长,产生越界中断信号。

(5)逻辑地址及访问方式合法,形成物理地址3100,指令执行后,将条转到内存单元3100 处 继续执行。 10、答:

(1)一个作业最多可以有28=256 个段。

(2)每段的最大长度为216=64KB=65 536 字节。

(3)逻辑地址[0,430]主存地址为:2100+430=2530;

逻辑地址[1,50]无法进行地址变换,因为产生了越界中断; 逻辑地址[2,30]无法进行地址变换,因为产生了缺段中断; 逻辑地址[3,70]的主存地址为:4000+70=4070。 11、答:(1)用更快的CPU,没用。

(2)用更大的磁盘没用,交换空间本来就足够了。 (3)增加多道程序的道数,没用,情况会更糟。 (4)减少并发进程数,效果明显。

(5)用更快的其他I/O 设备,效果不明显。 12、答:

(1)页面大小为4KB,故页内偏移为12 位。系统采用48 位虚拟地址,故虚页号为48-12=36 位。采用多级页表时,最高级页表项不能超出一页大小,故应采用4 级页表,最高级页表项

\5 f& A2 }\正好占据一页空间。

(2)系统进行页面访问操作时,首先读取页面对应的页表项,有98%的概率可以在TLB 中 直接取到,然后进行地址转换,如果TLB 为命中,则要通过一次内存访问来读取页表项。 页面的平均访问时间为:98%*(10+100)+(1-98%)*(10+100+100)=112ns (3)二级页表的平均访问时间计算同理:

98%*(10+100)+(1-98%)*(10+100+100+100)=114ns (4)设快表命中率为P,则应满足:

P*(10+100)+(1-P)*(10+100+100+100)<=120ns,解得:P>=95%

(5)系统采用48 位虚地址,每段最大为4G,故段内地址为32 位,段号:48-32=16 位。 每个用户最多可以有216 个段,段内采用页式地址,与(1)中计算同理,(32-12)/9,取上

整为3,故段内应采用3 级页表。

13、答:程序1 按行优先的顺序访问数组元素,与数组在内存中存放的顺序一致,每个内存 页面可存放200 个数组元素,这样,程序1 每访问两行数组元素产生一次缺页中断,所以程 序1 的执行过程会发生50 次缺页。

程序2 按列优先的顺序访问数据元素,由于每个内存页面存放两行数组元素,故程序2 每访问两个数组元素就产生一次缺页中断,整个执行过程会发生5000 次缺页。 若每页只能存放100 个整数,则每页仅能存放一行数组元素,同理可以计算,程序1 的执行过程产生100 次缺页,程序2 的执行过程产生10000 次缺页。

以上说明缺页的次数与内存中数据存放的方式及程序执行的顺序有很大关系;同时说

明,当缺页中断次数不多时,减小页面大小影响并不大,但缺页中断次数很多时,减小页面 大小会带来很严重的影响。__