理能力。
虚拟存储器简称虚存,是把内存与外存有机的结合起来使用,从而得到一个容量很大的、速度足够快的“内存”。
虚拟存储器需要的硬件支持是: 系统有一个容量足够大的外存; 系统有一个具有相当容量的内存; 硬件提供实现虚、实地址映射的机制。
如果一个计算机系统硬件上拥有上述的支持条件、操作系统又支持虚拟存储管理,那么这个计算机系统是有虚拟存储器的。
一个虚拟存储器的最大容量(寻址空间)可以用寄存器的位数来确定,因此比如X86体系的计算机寄存器为32位,因此虚拟存储器的最大容量应该为2的32次方字节,即4GB。
26、有一个虚拟存储系统。分配给某进程3页内存,开始时内存为空,页面访问序列如下: 6,5,4,3,2,1,5,4,3,6,5,4,3,2,1,6,5 (1)若采用先进先出页面置换算法(FIFO),缺页次数为多少? (2)若采用最近最少使用页面置换算法(LRU),缺页次数为多少? (3)若采用最佳页面置换算法算法呢? 答:
(1):17次 (2):17次 (3)11次
27、有一台计算机含有4个页面,每一页的装入时间,最后一次修改时间以及R与M位的值如下(时间为时钟周期):
页 装入时间 最后访问时间 R M 0 126 279 0 0 1 230 260 1 0 2 120 272 1 1 3 160 280 1 1 (1)NRU应淘汰哪一页 (2)FIFO应淘汰哪一页 (3)LRU应淘汰哪一页
(4)第二次机会应淘汰哪一页 答:NRU应淘汰第0页 FIFO应淘汰第2页 LRU应淘汰第1页
第二次机会应淘汰第0页
29、何谓系统的“抖动”现象?当系统发生“抖动”时,你认为应该采取什么措施来加以克服?
答:在虚存中,页面在内存与外存之间频繁调度,以至于调度页面所需时间比进程实际运行的时间还多,此时系统效率急剧下降,甚至导致系统崩溃。这种现象为颠簸(或抖动)。 颠簸或抖动产生的最主要的原因是页面置换算法不合理,分配给进程的物理页面数太少。可以考虑改进页面的置换算法。另一方面,程序员编写程序的同时,如果能根据机器寻址的特点,来调整访存指令的执行顺序(例如对大矩阵的操作是先行后列还是先列后行,等)也可以避免抖动的发生。
30、在虚拟页式存储管理中,进程在内外存中的存放有以下两种方法: (1)一部分页面放在内存,其余页面放在外存;
(2)一部分页面放在内存,全部页面放在外存;
试从系统开销的角度分析两种方法各自的优缺点, 并说明页表的差别。
答:第一种方法,一部分页面放内存,其余页面放外存,这样在内存中的页面在外存中不存在副本,第二种方法当前需要的页面放在内存中,全部的页面在外存中都有副本,因此第一种方法比第二种方法占据的存储空间小。但是在将页面移出内存的过程中,对于第一种方法,不管要移出的页面是否被修改过,都必须将其写回磁盘;对第二种方法,如果要移出的页面没有被修改过,那么它在磁盘上的副本已经是最新的了,则不需要写回,调入的页直接覆盖被淘汰的页就行了。因此第二种方法比起第一种方法来,输入输出设备的压力小,调入调出数据和程序段的频率低。
因为第一种方法移出页面时不管页面是否被修改过都得将其写回外存,所以页表中不需要有修改位。所以页表差别在第一种方法的页表不需要有修改位,而第二种方法需要有修改位。
31、有一个虚拟存储系统采用最近最少使用(LRU)页面置换算法,每个程序占3页内存,其中一页用来存放程序和变量i,j(不作他用)。每一页可存放150个整数变量。程序A和程序B如下: 程序A:
VAR C:ARRAY[1..150,1..100] OF integer; i,j:integer; FOR i:=1 to 150 DO FOR j:=1 to 100 DO C[i,j]:=0;
程序B:
VAR C:ARRAY[1..150,1..100] OF integer; i,j:integer; FOR j:=1 to 100 DO FOR i:=1 to 150 DO C[i,j]:=0;
设变量i,j放在程序页中,初始时,程序及变量i,j已在内存,其余两页为空。矩阵C按行序存放。
(1)试问当程序A和程序B执行完后,分别缺页多少次?
(2)最后留在内存中的各是矩阵C的哪一部分? 答(1)100次,10000次
(2)程序A运行完后内存两个页面中分别为:
第一页:ARRAY[148,1]到ARRAY[148,100]和ARRAY[149,1]到ARRAY[149,50] 第二页: ARRAY[149,51]到ARRAY[149,100]和ARRAY[150,1]到ARRAY[150,100] 程序B运行完后内存两个页面中分别为:
第一页:ARRAY[148,1]到ARRAY[148,100]和ARRAY[149,1]到ARRAY[149,50] 第二页: ARRAY[149,51]到ARRAY[149,100]和ARRAY[150,1]到ARRAY[150,100]
32、某采用页式虚拟存储管理的系统,接收了一个共7页的作业,作业执行时依次访问的页为1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。若采用最近最少用(LRU)调度算法,作业在得到两块主存空间和四块主存空间时各会产生多少次缺页中断?如果采用先进先出(FIFO)调度算法又会有怎样的结果? 解:
(1)LRU、两块主存空间:
LRU: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6 页1: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6 页2: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 × × × × × × × × × × 2 × × × × × × 2 × × 缺页中断18次
(2)LRU、四块主存空间:
LRU: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6 页1: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6 页2: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 页3: 1 2 3 4 2 1 5 6 6 1 2 3 7 6 3 3 1 2 页4: 1 1 3 4 2 1 5 5 6 1 2 2 7 6 6 6 1 × × × × 2 1 × × 2 1 2 × × × 3 2 × 2 3 6 缺页中断10次
(3)FIFO、两块主存空间:
LRU: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6 页1: 1 2 3 4 2 1 5 6 2 1 1 3 7 6 3 2 1 1 3 6 页2: 1 2 3 4 2 1 5 6 2 2 1 3 7 6 3 2 2 1 3 × × × × × × × × × × 2 × × × × × × 2 × × 缺页中断18次
(4)FIFO、四块主存空间:
LRU: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6 页1: 1 2 3 4 4 4 5 6 2 1 1 3 7 6 6 2 1 1 3 3 页2: 1 2 3 3 3 4 5 6 2 2 1 3 7 7 6 2 2 1 1 页3: 1 2 2 2 3 4 5 6 6 2 1 3 3 7 6 6 2 2 页4: 1 1 1 2 3 4 5 5 6 2 1 1 3 7 7 6 6
× × × × 2 1 × × × × 2 × × × 3 × × 2 × 6 缺页中断14次
33、比较各种存储管理方式的特征(包括主存空间的分配方式、是否要有硬件的地址转换机构作支撑、适合单道或多道系统等)、重定位方式、地址转换的实现(操作系统和硬件怎样配合)、存储保护的实现(操作系统和硬件各自做些什么工作)。 存储管理特征 主存分配方式 硬件地址转换 单一用户存储 一次性全部连续 不必需 适合系统 单道 利用率低,不灵活 其他 重定位方式 动态或静态 根据基地址生成物理地址。 静态由软件完成;动态可由硬件提供基地址寄存器帮助转换 无 地址转换过程 存储保护 分区管理 固定分区管理 可变分区管理 按照程序提供的内存需求最大值从已划分好的固定区域中分配 不必需 多道 不能充分利用内存,碎片问题严重,程序大小受到限制 动态或静态 根据基地址生成物理地址。 静态由软件完成;动态可由硬件提供基地址寄存器帮助转换 通过界限寄存器[硬件]或保护键[软件]的相应判断,产生越界中断或者保护性中断[硬件]。 在装入程序时从空闲区域中划分 不必需 多道 简单易行,利用率较高。缺乏扩充性 动态(拼接时) 根据基地址生成物理地址。可由硬件提供基地址寄存器帮助转换 页式存储管理 以页面为单位,按用户程序需求的页数分配,分配空需要页表始址寄存器和长度寄存器,加快表 多道 有效解决碎片问题,但有时也会造成空间浪费。 动态 把逻辑地址分为页号和页内地址,与页表长度寄存器比较,检查越界,根据页表始址寄存器得到页表首地址,根据逻辑页号找到内存块号,并且与页内地址拼成物理地址。可以用快表来实现加速。[硬件] 保护键[软件]或扩充页表,增加存取控制项[硬件] 间不一定连续 也可以增段式存储管理 以段为单位,为每一个逻辑段分配连续的内存空间 需要段表始址寄存器和长度寄存器,也可以增加快表 多道 便于动态分配内存,管理和申请统一化,便于共享,动态链接,会有碎片动态 把逻辑地址分为段号和段内地址,与段表长度寄存器比较,检查越界,根据段表始址寄存器得到段表首地址,根据逻辑段号找到该段起始地址,越界检查[硬件]保护键[软件]或扩充段表,增加存取控制项问题 并且与段内地址拼成物理地址。可以用快表来实现加速[硬件] [硬件] 越界检查[硬件]保护键或扩充段表,增加存取控制项[硬件] 段页式存储管理 以段为单位,为每一个逻辑段按用户程序需求的页数分配,分配空间不一定连续 需要段表始址寄存器、长度寄存器和快表 多道 方便用户提高利用率,结合段式与页式的优点 动态 根据段号查找快表,如果找到则直接获得物理地址,否则通过段表始址寄存器查找段表,根据段号查找页表位置,根据页号在页表中查找内存块号,和页内地址拼接成物理地址,并更新快表[硬件] 虚拟存储管理 虚拟页式存储 程序运行时不装入全部页面,根据需求动态装入,使用页面置换算法来调换内存中的页面 需要在页式基础上增加页号、驻留位、内存块号、外存地址、访问位、修改位 多道 把内存与外存有机结合起来,扩充了内存的容量,有可能产生抖动 动态 在地址映射过程中如果访问页面不存在则产生缺页中断[硬件],并根据一定的算法将页面调入内存,如果内存已满,需要将某些页面暂时移出内存。[软件] 越界检查[硬件]保护键[软件]或扩充段表,增加存取控制项[硬件] 虚拟段式存储 程序运行时不全部装入,根据需求动态装入,以段为单位进行内外村的交换。 需要在段式基础上增加特征位、存取权限位、标志位、扩充位 多道 把内存与外存有机结合起来,扩充了内存的容量,有可能产生抖动 动态 在地址映射过程中如果访问段不存在则产生缺段中断[硬件],检察系统是否有足够连续空间,如有则直接装入,否则尝试使用紧缩技术获得足够连续空间,如果还不足则考虑淘汰一些内存中的不常用段。[软件]