内存管理 -3

1.分区分配内存管理方式的主要保护措施是(A)

  • 界地址保护
  • 程序代码保护
  • 数据保护
  • 栈保护

解析:

每个进程都拥有自己独立的进程空间,如果一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界,因此需要进行界地址保护,即当程序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断。

2.一个分段存储管理系统中,地址长度为 32 位.其中段号 8 位,则最大段长是

  • 2^8字节
  • 2^18字节
  • 2^24字节
  • 2^32字节

解析:

分段存储管理的逻辑地址分为段号和位移量两部分,段内位移的最大值就是最大段长。地址长度为32位,段号占8位,则位移量占32-8=24位,故最大段长为2^24B

3.某基于动态分区存储管理的计算机,其主存容量为55MB(初始为空闲),采用最佳适配(Best Fit)算法,分配和释放的顺序为:分配15MB,分配30MB,释放15MB,分配8MB,分配6MB,此时主存中最大空闲分区的大小是(B)。

 

  • 7MB
  • 9MB
  • 10MB
  • 15MB

 解析:

最佳适配算法是指每次为作业分配内存空间时,总是找到能满足空间大小需要的最小的空闲分区给作业,可以产生最小的内存空闲分区,如图3-2所示。

内存管理 -3_第1张图片

3.某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为2^{10}B,页表项大小为2B,逻辑地址结构为:

页目录号

页号

页内偏移量

逻辑地址空间大小为2^{16}页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是(B)。

 

  • 64
  • 128
  • 256
  • 512

解析: 
页大小为2^{10}B,页表项大小为2B,故一页可以存放2^{9}个页表项,逻辑地址空间大小为2^{16}页,即共需2^{16}个页表项,则需要2^{16}/2^{9}=2^{7}=128个页面保存页表项,即页目录表中包含表项的个数至少是128。

内存管理 -3_第2张图片

4.在缺页处理过程中,操作系统执行的操作可能是(D)。

Ⅰ.修改页表        Ⅱ.磁盘I/O        Ⅲ.分配页框

 

  • 仅Ⅰ、Ⅱ
  • 仅Ⅱ
  • 仅Ⅲ
  • Ⅰ、Ⅱ和Ⅲ

解析:
缺页中断产生后,需要在内存中找到空闲页框并分配给需要访问的页(可能涉及到页面置换),之后缺页中断处理程序调用设备驱动程序做磁盘I/O,将位于外存上的页面调入内存,调入后需要修改页表,将页表中代表该页是否在内存的标志位(或有效位)置为1,并将物理页框号填入相应位置,若必要还需修改其他相关表项等。 

5.当系统发生抖动(thrashing)时,可以采取的有效措施是(A)。

Ⅰ.撤销部分进程        Ⅱ.增加磁盘交换区的容量

Ⅲ.提高用户进程的优先级

  • 仅Ⅰ
  • 仅Ⅱ
  • 仅Ⅲ
  • 仅Ⅰ、Ⅱ

 解析:
在具有对换功能的操作系统中,通常把外存分为文件区和对换区。前者用于存放文件,后者用于存放从内存换出的进程。抖动现象是指刚刚被换出的页很快又要被访问,为此又要换出其他页,而该页又很快被访问,如此频繁地置换页面,以致大部分时间都花在页面置换上,引起系统性能下降。撤销部分进程可以减少所要用到的页面数,防止抖动。对换区大小和进程优先级都与抖动无关

6.在虚拟内存管理中,地址变换机构将逻辑地址变换为物理地址,形成该逻辑地址的阶段是(C)。

  • 编辑
  • 编译
  • 链接
  • 装载

解析:

编译后的模块需要经过链接才能装载,而链接后形成的地址才是整个程序的完整逻辑地址空间。以C语言为例:C语言经过预处理(cpp)→编译(ccl)→汇编(as)→链接(ld)产生可执行文件。其中链接的前一步,产生了可重定位的二进制的目标文件。C语言采用源文件独立编译的方法,如程序main.c, file1.c, file2.c, file1.h, file2.h,在链接的前一步生成了main.o, file1.o, file2.o,这些目标模块采用的逻辑地址都从0开始,但只是相对于该模块的逻辑地址。链接器将这三个文件,libc和其他的库文件链接成一个可执行文件。链接阶段主要完成了重定位,形成整个程序的完整逻辑地址空间。

例如,file1.o的逻辑地址为0~1023,main.o的逻辑地址为0~1023,假设链接时将file1.o链接在main.o之后,则重定位之后file1.o对应的逻辑地址就应为1024~2047。

这一题有不少同学会对C选项有疑问,认为产生逻辑地址的阶段是链接,下面引入一个线性地址的概念来解释为什么链接是不对的。为了区分各种不同的地址,下面也把逻辑地址和物理地址一并介绍。

逻辑地址(Logical Address)是指在程序各个模块中的偏移地址。它是相对于当前模块首址的地址。

线性地址(Linear Address)是指在分页式存储管理中单个程序所有模块集合在一起构成的地址,即可以理解为《操作系统联考复习指导》一书中的全局的逻辑地址。

物理地址(Physical Address)是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。它实际上就是物理内存真正的地址。线性地址的概念在很多操作系统书中并不涉及,在这里引入只是为了把这题解释清楚。选择C选项的同学应该是把题目所说的逻辑地址当成了线性地址。实际上,很多书中也不会把这线性地址和逻辑地址区分得那么清楚,而统一的称为逻辑地址,这就导致了这题的错误选择。

总之,在这题中,逻辑地址指的就是段内的偏移量而不是链接后生成的整个程序全局的逻辑地址空间,所以逻辑地址是编译时产生的。编者在查相关资料的过程中看到了关于这个问题的很多不一样的说法,这也是操作系统这门课的一个“特色”,所以这里综合了各个说法,并给出了一个觉得相对合理的解释,读者不必过多纠结,实际考试碰上这种问题的概率还是很低的。

 7.下列关于虚拟存储器的叙述中,正确的是(B)。

  • 虚拟存储只能基于连续分配技术
  • 虚拟存储只能基于非连续分配技术
  • 虚拟存储容量只受外存容量的限制
  • 虚拟存储容量只受内存容量的限制

解析:
在程序装入时,可以只将程序的一部分装入内存,而将其余部分留在外存,就可以启动程序执行。采用连续分配方式时,会使相当一部分内存空间都处于暂时或“永久”的空闲状态,造成内存资源的严重浪费,也无法从逻辑上扩大内存容量,因此虚拟内存的实现只能建立在离散分配的内存管理的基础上。有以下三种实现方式:①请求分页存储管理;②请求分段存储管理;③请求段页式存储管理。虚拟存储器容量既不受外存容量限制,也不受内存容量限制,而是由CPU的寻址范围决定的。 

8.计算机开机后,操作系统最终被加载到()。

  • BIOS
  • ROM
  • EPROM
  • RAM

解析:一般来说,RAM指的是运行内存,也就是常说的内存。

而ROM是指外存,比如硬盘。

操作系统要高效执行,肯定是一来就放进内存,才能及时响应操作。

 9.若用户进程访问内存时产生缺页,则下列选项中,操作系统可能执行的操作是()。
I.处理越界错 II.置换页 III.分配内存

 

  • 仅 I、 II
  • 仅 II、 III
  • 仅 I、 III
  • I、 II 和 III

解析|:

当CPU发现所请求的内存地址中没有指令,就会发出缺页中断。

答案1:处理越界,很显然只有已经加载到内存的数组或其他单元才可能出现访问越界的情况,而发生缺页中断,说明还没有把数据装载到内存

答案2:发生缺页后,首先检查内存单元是否有空闲页,如果没有,操作系统会根据页面置换算法将一部分页面置换出去,然后将缺页数据置换进来。如果有,就会发生答案3的情况,直接将数据置换到内存

10.下列措施中,能加快虚实地址转换的是 。

I .增大块表 (TLB) 容量 II .让页表常驻内存 III .增大交换区 (swap)

  • 仅I
  • 仅II
  • 仅I、II
  • 仅II、III

解析:

虚实地址转换是指逻辑地址和物理地址的转换。增大快表容量能把更多的表项装入快表中,会加快虚实地址转换的平均速率;让页表常驻内存可以省去一些不在内存中的页表从磁盘上调入的过程,也能加快虚实地址转换;增大交换区对虚实地址转换速度无影响,交换区是内存不够用时的解决手段,增大交换区能腾出更多地方。因此I、II正确,选C。

11.在页式虚拟存储管理系统中,采用某些页面置换算法,会出现Belady异常现象,即进程的缺页次数会随着分配给该进程的页框个数的增加而增加。下列算法中,可能出现Belady异常现象的是

I.LRU算法 II.FIFO算法 III.OPT算法

 

  • 仅II
  • 仅I、II
  • 仅I、III
  • 仅II、III

解析:

只有FIFO算法会导致Belady异常,选A。

 12.下列选项中,属于多级页表优点的是 

  • 加快地址变换速度
  • 减少缺页中断次数
  • 减少页表项所占字节数
  • 减少页表所占的连续内存空间

解析:

多级页表不仅不会加快地址的变换速度,还会因为增加更多的查表过程,使地址变换速度减慢;也不会减少缺页中断的次数,反而如果访问过程中多级的页表都不在内存中,会大大增加缺页的次数,也并不会减少页表项所占的字节数,而多级页表能够减少页表所占的连续内存空间,即当页表太大时,将页表再分级,可以把每张页表控制在一页之内,减少页表所占的连续内存空间,因此选D。

 13.系统为某进程分配了4个页框,该进程已访问的页号序列为2,0,2,9,3,4,2,8,2,4,8,4,5。若进程要访问的下一页的页号为7,依据LRU算法,应淘汰页的页号是 

  • 2
  • 3
  • 4
  • 8

解析:(Least Recently Used的缩写,即最近最少使用)

可以采用书中常规的解法思路,也可以采用便捷法。对页号序列从后往前计数,直到数到4(页框数)个不同的数字为止,这个停止的数字就是要淘汰的页号(最近最久未使用的页),题中为页号2。

 14.在请求分页系统中,页面分配策略与页面置换策略不能组合使用的是 

  • 可变分配,全局置换
  • 可变分配,局部置换
  • 固定分配,全局置换
  • 固定分配,局部置换

解析:现代操作系统通常采用三种策略:
1)固定分配局部置换
它为每个进程分配一定数目的物理块,在整个运行期间都不改变。若进程在运行中发生缺页,则只能从该进程在内存中的页面中选出一页换出,然后再调入需要的页面。实现这种策略难以确定 为每个进程应分配的物理块数目:太少会频繁出现缺页中断,太多又会使CPU和其他资源利用率下降。
2)可变分配全局替换
这是最易于实现的物理块分配和置换策略,为系统中的每个进程分配一定数目的物理块,操作系统自身也保持一个空闲 物理块队列,当某进程发生缺页时,系统从空间物理块队列中取一个物理块分配给该进程,并将欲调入的页装入其中。
3)可变分配局部替换
它为每个进程分配一定数目的物理块,当某进程发生缺页时,只允许从该进程在内存的页面中选出一页换出,这样就不会影响其他进程的运行。如果进程在运行中频繁地缺页,系统在为该进程分配若干物理块,直至该进程缺页率趋于适当程度;反之,若进程在运行中缺页率特别低,则可适当减少分配给该进程的物理块。
 

固定驻留策略指为每个进程分配固定的页框数,不能增减,也不能使用别的进程的空间

动态驻留策略指在进程活跃期间,系统可以根据进程的缺页率进行动态调整,进程的页框数可以增减。

 

页框置换有局部置换和全局置换,局部置换仅限于本进程的空间中,全局置换则允许置换别的进程中的页框。

固定驻留策略必然导致局部置换,而全局置换必须使用动态驻留策略。

15.某进程的段表内容如下所示。

内存管理 -3_第3张图片

当访问段号为2、段内地址为400的逻辑地址时,进行地址转换的结果是 。D

  • 段缺失异常
  • 得到内存地址4400
  • 越权异常
  • 越界异常

解析:

分段系统的逻辑地址A到物理地址E之间的地址变换过程如下:

内存管理 -3_第4张图片

① 从逻辑地址A中取出前几位为段号S,后几位为段内偏移量W,注意段式存储管理的题目中,逻辑地址一般以二进制给出,而在页式存储管理中,逻辑地址一般以十进制给出,各位读者要具体问题具体分析。

② 比较段号S和段表长度M,若S≥M,则产生越界异常,否则继续执行。

③ 段表中段号S对应的段表项地址=段表起始地址F+段号S×段表项长度,取出该段表项的前几位得到段长C。若段内偏移量≥C,则产生越界异常,否则继续执行。从这句话我们可以看出,段表项实际上只有两部分,前几位是段长,后几位是起始地址。

④ 取出段表项中该段的起始地址b,计算E=b+W,用得到的物理地址E去访问内存。

题目中段号为2的段长为300,小于段内地址为400,故发生越界异常,D正确。

16.某进程访问页面的序列如下所示。

若工作集的窗口大小为6,则在t时刻的工作集为

 

  • {6, 0, 3, 2}
  • {2, 3, 0, 4}
  • {0, 4, 3, 2, 9}
  • {4, 5, 6, 0, 3, 2}

 解析: 
在任一时刻t,都存在一个集合,它包含所有最近k次(该题窗口大小为6)内存访问所访问过的页面。这个集合w(k, t)就是工作集。该题中最近6次访问的页面分别为:6、0、3、2、3、2,再去除重复的页面,形成的工作集为{6,0,3,2}。

17.请求分页管理系统中,假设某进程的页表内容见表A-2。

A-2

页号

页框(Page Frame)号

有效位(存在位)

0

101H

1

1

 

0

2

254H

1

页面大小为4KB,一次内存的访问时间为100ns,一次快表(TLB)的访问时间为10ns,处理一次缺页的平均时间为10^{8}ns(已含更新TLB和页表的时间),进程的驻留集大小固定为2,采用最近最少使用置换算法(LRU)和局部淘汰策略。假设①TLB初始为空;②地址转换时先访问TLB,若TLB未命中,再访问页表(忽略访问页表之后的TLB更新时间);③有效位为0表示页面不在内存中,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列2362H、1565H、25A5H,请问:

1)依次访问上述三个虚地址,各需多少时间?给出计算过程。

2)基于上述访问序列,虚地址1565H的物理地址是多少?请说明理由。

解析:

1)根据页式管理的工作原理,应先考虑页面大小,以便将页号和页内位移分解出来。页面大小为4KB,即212,则得到页内位移占虚地址的低12位,页号占剩余高位。可得三个虚地址的页号P如下(十六进制的一位数字转换成4位二进制,因此,十六进制的低三位正好为页内位移,最高位为页号):

2362H:P=2,访问快表10ns,因初始为空,访问页表100ns得到页框号,合成物理地址后访问主存100ns,共计10ns+100ns+100ns=210ns。

1565H:P=1,访问快表10ns,落空,访问页表100ns落空,进行缺页中断处理10^{8}ns,访问快表10ns,合成物理地址后访问主存100ns,共计10ns+100ns+10^{8}ns+10ns+100ns=100 000 220ns。

25A5H:P=2,访问快表,因第一次访问已将该页号放入快表,因此花费10ns便可合成物理地址,访问主存100ns,共计10ns+100ns=110ns。

2)当访问虚地址1565H时,产生缺页中断,合法驻留集为2,必须从页表中淘汰一个页面,根据题目的置换算法,应淘汰0号页面,因此1565H的对应页框号为101H。由此可得1565H的物理地址为101565H。

18.设某计算机的逻辑地址空间和物理地址空间均为64KB,按字节编址。若某进程最多需要6页(Page)数据存储空间,页的大小为1KB,操作系统采用固定分配局部置换策略为此进程分配4个页框(Page Frame)。在时刻260前的该进程访问情况见表B-2(访问位即使用位)。

页号

页框号

装入时刻

访问位

0

7

130

1

1

4

230

1

2

2

200

1

3

9

260

1

当该进程执行到时刻260时,要访问逻辑地址为17CAH的数据。请回答下列问题:

1)该逻辑地址对应的页号是多少?

2)若采用先进先出(FIFO)置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。

3)若采用时钟(CLOCK)置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程(设搜索下一页的指针沿顺时针方向移动,且当前指向2号页框,示意图如图B-6所示)。

内存管理 -3_第5张图片

图B-6  页框示意图

解析:

1)由于该计算机的逻辑地址空间和物理地址空间均为64KB=2^{16}B,按字节编址,且页的大小为1KB=2^{10} B,故逻辑地址和物理地址的地址格式均为:

页号/页框号(6位)

页内偏移量(10位)

17CAH=0001 0111 1100 1010B,可知该逻辑地址的页号为000101B=5。

2)根据FIFO算法,需要替换装入时间最早的页,故需要置换装入时间最早的0号页,即将5号页装入7号页框中,所以物理地址为0001 1111 1100 1010B=1FCAH。

3)根据CLOCK算法,如果当前指针所指页框的使用位为0,则替换该页;否则将使用位清零,并将指针指向下一个页框,继续查找。根据题设和示意图,将从2号页框开始,前4次查找页框号的顺序为2→4→7→9,并将对应页框的使用位清零。在第5次查找中,指针指向2号页框,因2号页框的使用位为0,故淘汰2号页框对应的2号页,把5号页装入2号页框中,并将对应使用位设置为1,所以对应的物理地址为0000 1011 1100 1010B=0BCAH。

19.某请求分页系统的局部页面置换策略如下:

系统从0时刻开始扫描,每隔5个时间单位扫描一轮驻留集(扫描时间忽略不计),本轮没有被访问过的页框将被系统回收,并放入到空闲页框链尾,其中内容在下一次分配之前不被清空。当发生缺页时,如果该页曾被使用过且还在空闲页链表中,则重新放回进程的驻留集中;否则,从空闲页框链表头部取出一个页框。

假设不考虑其他进程的影响和系统开销。初始时进程驻留集为空。目前系统空闲页框链表中页框号依次为32、15、21、41。进程P依次访问的<虚拟页号,访问时刻>是:<1,1>、<3,2>、<0,4>、<0,6>、<1,11>、<0,13>、<2,14>。请回答下列问题。

1)访问<0,4>时,对应的页框号是什么?说明理由。

2)访问<1,11>时,对应的页框号是什么?说明理由。

3)访问<2,14>时,对应的页框号是什么?说明理由。

4)该策略是否适合于时间局部性好的程序?说明理由。

解析:

1)页框号为21。理由:因为起始驻留集为空,而0页对应的页框为空闲链表中的第三个空闲页框21,其对应的页框号为21。

2)页框号为32。理由:因11>10故发生第三轮扫描,页号为1的页框在第二轮已处于空闲页框链表中,此刻该页又被重新访问,因此应被重新放回驻留集中,其页框号为32。

3)页框号为41。理由:因为第2页从来没有被访问过,它不在驻留集中,因此从空闲页框链表中取出链表头的页框41,页框号为41。

4)合适。理由:如果程序的时间局部性越好,从空闲页框链表中重新取回的机会越大,该策略的优势越明显。

 20.某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4字节。请回答下列问题。

(1)若使用一级页表的分页存储管理方式,逻辑地址结构为:

页号(20位)

页内偏移量(12位)

则页的大小是多少字节?页表最大占用多少字节?

(2)若使用二级页表的分页存储管理方式,逻辑地址结构为:

页目录号(10位)

页表索引(10位)

页内偏移量(12)

设逻辑地址为LA,请分别给出其对应的页目录号和页表索引的表达式。

(3)采用(1)中的分页存储管理方式,一个代码段起始逻辑地址为0000 8000H,其长度为8 KB,被装载到从物理地址0090 0000H开始的连续主存空间中。页表从主存0020 0000H开始的物理地址处连续存放,如下图所示(地址大小自下向上递增)。请计算出该代码段对应的两个页表项的物理地址、这两个页表项中的页框号以及代码页面2的起始物理地址。

内存管理 -3_第6张图片

解析:

1)因为主存按字节编制,页内偏移量是12位,所以页大小为2^{12}B=4KB。(1分)

页表项数为2^{20},故该一级页表最大为2^{20}×4B=4MB。(2分)

2)页目录号可表示为:(((unsigned int)(LA))>>22) & 0x3FF。(1分)

页表索引可表示为:(((unsigned int)(LA))>>12) & 0x3FF。(1分)

【评分说明】①页目录号也可以写成((unsigned int)(LA))>>22;如果两个表达式没有对LA进行类型转换,同样给分。

② 如果用除法和其他开销很大的运算方法,但对基本原理是理解的,同样给分。

③ 参考答案给出的是C语言的描述,用其他语言(包括自然语言)正确地表述了,同样给分。

3)代码页面1的逻辑地址为0000 8000H,表明其位于第8个页处,对应页表中的第8个页表项,所以第8个页表项的物理地址=页表起始地址+8×页表项的字节数=0020 0000H+8×4=0020 0020H。由此可得如下图所示的答案。(3分)

内存管理 -3_第7张图片

 

 

【评分说明】共5个答数。物理地址1和物理地址2共1分;页框号1和页框号2共1分;物理地址3给1分。

 21.某计算机系统按字节编址,采用二级页表的分页存储管理方式,虚拟地址格式如下所示:

10位                                                         10位                                                     12位

页目录号

页表索引

页内偏移量

请回答下列问题。

1)页和页框的大小各为多少字节?进程的虚拟地址空间大小为多少页?

2)假定页目录项和页表项均占4个字节,则进程的页目录和页表共占多少页?要求写出计算过程。

3)若某指令周期内访问的虚拟地址为0100 0000H和0111 2048H,则进行地址转换时共访问多少个二级页表?要求说明理由。

解析:

1)在分页存储管理方式中,将用户程序的地址空间分为若干个固定大小的区域,称为“页”或“页面”。相应地,将内存空间分为若干个物理块或页框(frame),页和页框大小相同。因此,页和页框大小均为2^{12}B=4KB。进程的虚拟地址空间大小为2^{32}/2^{12}=220页。

2)(2^{10}×4)/2^{12}(页目录所占页数)+(2^{20}×4)/2^{12}(页表所占页数)=1025页。

3)需要访问一个二级页表。因为虚拟地址0100 0000H和0111 2048H的最高10位的值都是4,页目录号相同,访问的是同一个二级页表。

【评分说明】用其他方法计算,思路和结果正确同样给分。

22.某系统使用请求段页式管理,有16位的虚地址空间,每个进程有2个段,页的大小为2^{12}B。段页表的内容说明如下列三个表所示(表中数字均为二进制数);对于以下二进制虚地址,求它们转换后的物理地址或说明它们是否产生块页或缺段中断等:

内存管理 -3_第8张图片
内存管理 -3_第9张图片
(1)00010100010101111
(2)0100010011111111
(3)1011010011000111
(4)1110001011000111

 解析: 确定段号、页号和页内位移量所需位数, 依次为1、3和12。
(1)缺页。把该地址划分成0, 001, 010001010111, 段0、页1 (页表0中第2项)在
页帧001010, 该表项被标记为不在内存, 导致缺页。
(2) 000101010011111111。把该地址划分成1, 11 0, 0 1 00 11111111 , 段1、页6 (页表
1中第7项)在页帧000101,1把物理地址000101和010011111111连接起来得到物理地址。
(3)段故障。把该地址划分成1, 111 , 010011000111 , 段l最大长度为6, 该页指定
为7, 因此产生段故障。
(4) 100110001011000111。把该地址划分成0, 011 , 001 011 000111 , 段0、页3 (页表
0中第4项)在页帧100110, 把物理地址100110和001011000111连接起来得到物理地址。

你可能感兴趣的:(操作系统)