第6章 虚拟存储器
第6章 课后习题答案
常见存储器管理具有哪两大特征?它们对系统性能有何影响?
答:常见存储器管理方式具有一次性和驻留性这两大特征。一次性是指进程必须全部装入内存;驻留性是指在运行过程中,进程全部驻留在内存中。一次性对内存空间浪费非常大;驻留性则会使暂时不用的程序或数据无法释放。
什么是虚拟存储器?如何实现页式虚拟存储器?
答:
(1)虚拟存储器是具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储系统。从用户观点来看,虚拟存储器具有比实际内存大的多的容量,其逻辑容量由逻辑地址结构以及内存和外存容量之和决定,其运行速度接近于内存的存取速度,而实现成本又接近于外存。
(2)为了实现虚拟存储器,首先需要扩充页表,增加状态位以指出所需页是否在内存中,增加外存起始地址以便调入页面,增加引用位以提供页面置换算法使用,增加修改位以减少换出时写入磁盘次数,另外还要使用两种关键技术:①请求调页技术。该项技术是指及时将进程所要访问的不再内存中的页调入内存。该功能是由硬件(缺页中断机构发现页)和软件(将所需页调入内存)配合实现的。②置换页技术。该技术是指当内存中已无足够空间装入即将调入的页时,为了保证程序能继续运行、系统必须换出内存中的部分页,以腾出足够的空间。具体的置换操作并不复杂,其关键时确定将哪些页换出,即采取什么置换算法。
“整体对换从逻辑上扩充了内存,因此页实现了虚拟存储器的功能”这种说法是否正确,请说明理由。
答:说法错误。
(1)整体对换是将某个内存中暂时不用的某个程序及其数据换出到外存,以腾出足够的内存空间去装入在外存中具备运行条件的进程所对应的程序和数据。
(2)虚拟存储器是指仅把作业的一部分装入内存便可运行的存储器系统,亦指具有请求调入功能和置换功能、能从逻辑上对内存容量进行扩充的存储器系统,它的实现必须建立在离散分配的基础上。
(3)虽然整体对换和虚拟存储器均能从逻辑上扩充内存空间,但整体对换不具备离散型。实际上没在具有整体对换功能的系统中,进程的大小仍将收到实际内存容量的限制。
在请求分页系统中,为什么说一条指令执行期间可能产生多次缺页中断?
答:在请求调页时,只要作业的部分页在内存中,该作业就可以执行;而在执行过程中发现索要访问的指令或数据不在内存中时,系统就会残生缺页中断,将所需的页面调入内存。在请求调页系统中,一条指令可能跨越了两个页,而其中要访问的操作数可能与指令不在同一个页上,且操作数本身也可能跨越了两个页。当要执行这类指令而相应的页又都不在内存中时,就将执行多次缺页中断。
请比较缺页中断与一般中断,它们之间有什么明显的区别?
答:缺页中断与一般中断的区别主要有:
(1)一般中断只需要保护现场后即可直接跳到序及时处理的地方;
(2)缺页中断除了需要保护现场外,还需要判断内存中是否有足够的空间来存储页或段,然后再把所需的页或段调进来使用。
请说明再请求分页系统中,页面的调入过程?
答:每当程序所要访问的页面未在内存时(存在位为0),便向CPU发出缺页中断,中断处理程序保存CPU现场信息,分析中断原因后,转入缺页中断处理程序。该程序同过查找页表获得页所在外存的物理地址,如果此时内存可以容纳新页,则启动磁盘,将所缺页调入内存,然后修改页表。如果内存已满,则须按照某种置换算法进行页面置换;如果换出页面被修改过(修改位为1),则必须将其写回磁盘,在把缺页调入内存,将页表中调入页的存在位修改为1,并将此页表项写入快表中。利用修改后的页表,形成要访问数据的物理地址,再去访问内存数据。整个页面调入过程对用户时透明的。
【考研真题】简述在具有快表的请求分页系统中,将逻辑地址转变位物理地址的过程?
答:在具有快表的请求分页系统中,将逻辑地址转变位物理地址的完整过程为:
(1)检索快表,试图重中找出索要访问的页;
(2)如果找到,则修改页表项中的访问位,供置换算法选择淘汰页时参考,将写指令修改为1,然后利用页表项给出的物理块号和页内地址形成物理地址,地址转换结束;
(3)如果没找到,则到内存中去查页表,再根据页表中的状态位来判断该页是否以调入内存。若该页已经被调入内存,则将该页的页表项调入内存。当快表快满时,先按某种算法调取某些页表项,再写入该页的页表项。若该页未调入内存中,则产生缺页中断,请求OS从外存中将该页调入内存,再转到步骤(2)进行地址转换。
什么是固定分配局部朱鹮和可变分配全局置换的内存分配策略?
答:
(1)固定分配局部置换:固定分配是指,为每个进程配分一组固定数目的物理块,在进程运行期间不再改变;局部置换是指,如果进程中出现缺页,只能从分配给该进程的n个页中选出1页换出,然后再调入1页。
(2)可变分配全局置换:可变分配是指,先为每个进程分配一定数目的物理块,在进程运行期间可以根据情况适当发生变化;全局置换是指,如果进程在运行中发现缺页,则将OS所保留的空闲物理块或所有进程的全部物理块选择1快换出,然后再将缺页调入。
实现LRU(least recently used,最近最久未使用)页面置换算法所需要的硬件支持是什么?
答:需要寄存器和栈等硬件支持。寄存器用于记录某进程再内存中各页的使用情况;栈用户保存当前使用的各页的页面号。
什么是抖动?产生抖动的原因是什么?
答:
(1)抖动是指刚被换出的页很快被访问,必须重新调入,因此需要再选一页调入,然后此时被换出的页很快又被访问,因而又必须将它调入,如此频繁地更换页面,使得系统把大部分时间用在了页面地换进换出上,而几乎不能完成任何有效地工作,我们称这一现象为抖动。
(2)产生抖动地根本原因是同时再系统中运行地进程太多,分配给每个进程的物理块太少,无法满足进程运行的基本要求,只是每个进程再运行时出现频繁缺页。·
什么是工作集?它是基于什么原理而确定的?
答:
(1)工作集,又称驻留集,是指再某段时间间隔内进程实际要访问的页面集合。经常使用的页面需要存在于工作集中,而长期不使用的页面则要从工作集中丢弃。
(2)工作集的确定原理:基于程序运行的局部性原理,程序运行期间对页面的访问会局限于很少的页面之中,这些页面被称为活跃页面,这些页面的集合即为工作及。如果能预先将活跃页面调入内存,则将大大降低缺页率。因此需要让OS跟踪每个进程的工作及,并为进程分配大于其工作集的物理块。如果还有空闲物理块,则可以再调入一个进程到内存占用以此增加多道程序度。如果所有的工作集之和超过了可用物理块的总数,则OS会暂停一个进程,将其页面调出并且将其物理块分配给其他进程,以防止出现抖动现象。选择正确工作集的大小,对存储器利用率和系统吞吐量都有重要影响。
为了实现请求分段存储管理,应在系统中增加配置哪些硬件机构?
答:所需的硬件支持有:段表机制、缺页中断机构以及地址转换机构。
第6章 零碎知识点
CLOCK算法选择将最近未使用的页面置换出去,因此又称NRU算法。
无论采用什么页面算法,每种页面第一次访问时不可能再内存中,必然发生缺页。
虚拟存储器的最大容量是由计算机的地址结构决定的,与主存容量和外存容量没有必然的联系,但是实际使用中,虚拟存储器可以使得进程的可用内存扩大到内外存容量之和。
FIFO是队列类算法,存在Belay现象,即进程的缺页次数会随着分配给该进程的页框个数的增加而增加。
作业不多的情况下交换操作非常频繁,说明物理内存严重短缺。
增大内存可使每个程序得到更多的页框,能减少缺页率,进而减少换入和换出过程,提高CPU的利用率。
缺页中断时,系统执行的操作可能时置换页面或分配内存。这时不会出现越界错误,不会进行越界出错处理。
固定分配是指进程运行的物理块数目分配后保持不变,全局置换指内存满时每次换出一个物理块,换进一个页。所以固定分配和全局置换不可能搭配使用。
系统调用是由用户进程发起的,请求操作系统的服务,如创建进程。其他的比如进程调度和缺页处理都是完全由操作系统完成的,不涉及系统调用。
页缓冲队列是将被淘汰的页面缓存下来,暂时不写回磁盘,队列长度会影响页面置换的的速度,但不会影响缺页率。