虚拟存储器

虚拟存储器是主存的扩展,虚拟存储器的空间大小取决于计算机的访存能力而不是实际外存的大小,实际存储空间可以小于虚拟地址空间。从程序员的角度看,外存被看作逻辑存储空间,访问的地址是一个逻辑地址(虚地址),虚拟存储器使存储系统既具有相当于外存的容量又有接近于主存的访问速度。

虚拟存储器的访问也涉及到虚地址与实地址的映象、替换算法等,这与Cache中的类似,前面我们讲的地址映象以块为单位,而在虚拟存储器中,地址映象以页为单位。设计虚拟存储系统需考虑的指标是主存空间利用率和主存的命中率。


管理方式

虚拟存储器的三种不同管理方式:按存储映象算法,分为段式、页式和段页式等,这些管理方式的基本原理是类似的。

段式管理:把主存按段分配的存储管理方式。它是一种模块化的存储管理方式,每个用户程序模块可分到一个段,该程序模块只能访问分配给该模块的段所对应的主存空间。段长可以任意设定,并可放大和缩小。

系统中通过一个段表指明各段在主存中的位置。段表中包括段名(段号)、段起点、装入位和段长等。段表本身也是一个段。段一般是按程序模块分的。

在进行地址映象时,首先根据基号查找段基址表,段基址表一般也是CPU中的专门寄存器组。 从表中查出段表的起始地址,然后用段号从段表中查找该段在内存中的起始地址,向时判断该段是否装入内存。如果该段已装入内存,则从段表中取出段起始地址,与段内地址相加构成被访问数据的物理地址。段表本身也存放在一个段中,一般常驻主存。因为段的长度是可变的,所以必须将段长信息存储在段表中,一般段长都有一个上限。


页式管理:是把虚拟存储空间和实际空间等分成固定大小的页,各虚拟页可装入主存中的不同实际页面位置。页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分为页号和页内地址两部分,由地址映象机构将虚页号转换成主存的实际页号。

页式管理用一个页表,包括页号、每页在主存中起始位置、装入位等。页表是虚拟页号与物理页号的映射表。页式管理由操作系统进行,对应用程序员的透明的。

从页基址表中查出页表的起始地址,然后用虚页号从页表中查找实页号,同时判断该页是否装人内存。如果该页已装入内存,则从页表中取出实页号,与页内地址一起构成物理地址。


段页式管理:是上述两种方法的结合,它将存储空间按逻辑模块分成段,每段又分成若干个页,访存通过一个段表和若干个页表进行。段的长度必须是页长的整数倍,段的起点必须是某一页的起点。

 

段页式管理在地址变换时需要查两次表,即段表和页表。每个运行的程序通过一个段表和相应的一组页表建立虚拟地址与物理地址的映象关系。段表中的每一项对应一个段,其中的装入位表示该段的页表是否巳装入主存。若已装入主存,则地址项指出该段的页表在主存中的起始地址,段长项指示该段页表的行数。页表中还包含装入位、主存页号等信息。

换过程

多用户(模块)地址可分成:程序号、段号、段内偏移量三部分,地址变换过程如下:

(1)由程序号找到相应的段表基址寄存器,其中存有段表始址和段表长度。

(2)由段表长度与段号相比较,检查是否越界。正常转(3)

(3)段表始址和段号找到其段表中相应表项,其中存有主存地址,装入位,访问位、段长、辅存地址等。

(4)检查装入位是否为"1"(在主存),为"1"转(5),否则产生缺段中断,从辅存中调入一段到主存。

(5)由主存地址+段内偏移形成真正物理地址。

(1)多个程序分段编制,多个程序或并行编程,缩段编程时间;

(2)各段相对独立,其修改、扩充都不会影响其他段;

(3)实现虚拟存储;

(4)便于共享和保护。

(1)分段管理主存,主存利用率不是很高,大量零头;

(2)为形成一次有效地址,需多次访存,降低了访存速度;

(3)分配和回收空闲区比较复杂;

(4)段表中地址字段和段长字段较长,降低查表速度。

页式管理

用户逻辑地址分成:用户标志、用户虚页号、页内偏移三部分。过程如下:

(1)由用户标志找到相应页表基址寄存器,其中有页表地址。

(2)由页表始址和页号找到页表中相应表项。

(3)检查装入位是否"1"(在主存),为'1'转(4)否则产生缺页中断。

(4)由主存块号和页内偏移形成有效地址。

(1)页表表项短,减少访表时间。

(2)零头较少。

(3)调入速度快。

(1)强制分页,页无逻辑意义,不利于存储保护和扩充。

(2)一次有效地址生成需多次访存,访存速度下降。

段页式管理

用户逻辑地址被分成:用户标志、段号、页号、页内偏移四部分。过程如下:

(1)由用户标志找到段表基址寄存器。

(2)段表长与段号作是否越界检查。

(3)段表始址+段号找到段表中相应表项。

(4)做装入位、段长的检查。

(5)由页表始址+页号找到页表中相应表项。

(6)作装入位等检查。

(7)实页号+页内偏移形成有效地址。

具有段式、页式的优点

一次有效地址形成需3次访存,速度较慢。