虚拟存储器

一、虚拟存储器的基本概念

1.实地址与虚地址

用户编制程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间;而计算机物理内存的访问地址则称为实地地或物理地址,其对应的存储空间称为物理存储空间或主存空间。程序进行虚地址到实地址转换的过程称为程序的再定位。

2.虚存的访问过程

虚存空间的用户程序按照虚地址编程并存放在辅存中。程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存。每次访存时,首先判断该虚地址所对应的部分是否在实存中:如果是,则进行地址转换并用实地址访问主存;否则,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。由此可见,每个程序的虚地址空间可以远大于实地址空间,也可以远小于实地址空间。前一种情况以提高存储容量为目的,后一种情況则以地址变换为目的。后者通常出现在多用户或多任务系统中:实存空间较大,而单个任务并不需要很大的地址空间,较小的虚存空间则可以缩超指令中地址子段的长度。

3.Cache与虚存的异同

●从虚存的概念可以看出,主存辅存的访问机制与cache 主存的访问机制是类似的。这是由 cache 存储器、主存和辅存构成的三级存储体系中的两个层次。

● cache 和主存之间以及主存和辅存之间分别有辅助硬件和辅助软硬件负责地址变换与管理,以便各级存储器能够组成有机的三级存储体系。 cache 和主存构成了系统的内存,而主存和辅存依靠辅助软硬件的支持构成了虚拟存储器。

在三级存储体系中, cache 主存和主存辅存这两个存储层次有许多相同点

(1)出发点相同   二者都是为了提高存储系统的性能价格比而构造的分层存储体系,都力图使存储系统的性能接近高速存储器,而价格和容里接近低速存储器。

(2)原理相同   都是利用了程序运行时的局部性原理把最近常用的信息块从相对慢速而大容里的存储器调入相速而小容里的存储器。

但 cache 主存和主存辅存这两个存储层次也有许多不同之处:

(1)侧重点不同    cache 主要解决主存与 CPU 的速度差异问题;而就性能价格比的提高而言,虚存主要是解決存储容量问题,另外还包括存储管理、主存分配和存储保护等方面。

(2)数据通路不同    CPU 与 cache 和主存之间均有直接访问通路, cache 不命中时可直接访问主存;而虚存所依赖的辅存与 CPU 之间不存在直接的数据通路,当主存不命中时只能通过调页解决, CPU 最终还是要访问主存。

(3)透明性不同    cache 的管理完全由硬件完成,对系统程序员和应用程序员均透明;而虚存管理由软件(操作系统)和硬件共同完成,由于软件的介入,虚存对实现存储管理的系统程序员不透明,而只对应用程序员透明(段式和段贡式管理对应用程序员“半透明”)。

(4)未命中时的损失不同   由于主存的存取时间是 cache 的存取时间的5~10倍,而主存的存取速度通常比辅存的存取速度快上千倍,故主存未命中时系统的性能损失要远大于 cache 未命中时的损失。

4.虚存机制要解决的关键问题

(1)调度问题   决定哪些程序和数据应被调入主存。

(2)地址映射问题   在访问主存时把需地址变为主存物理地址(这一过程称为内地址变换);在访问辅存时把虚地址变成储存的物理地址(这一过程称为外地址变换);已便换页。此外还要解决主存分配、存储保护与程序再定位等问题。

(3)替换问题   决定哪些程序和数据应被调出主存。

(4)更新问题   确保主存与辅存的一致性。

在操作系统的控制下,硬件和系统软件为用户解决了上述问题,从而使应用程序的编程大大简化。

二、页式虚拟存储器

1.页式虚存地址映射

页式虚拟存储系统中,虚地址空间被分成等长大小的页,称为逻辑页;主存空间也被分成同样大小的页,称为物理页。相应地,虚地址分为两个字段:高字段为逻辑页 ,低字段为页内地址(偏移量);实存地址也分两个字段:高字段为物理页 ,低字段为页内地址。通过页表可以把虚地址(逻辑地址)转换成物理地址。

                     TLB的地址映射过程

三、段式虚拟存储器和段页式虚拟存储器

1.段式虚拟存储器

页面是主存物理空间中划分出来的等长的固定区域。分页方式的优点是页长固定,因而便于构造页表、易于管理,且不存在外碎片。但分页方式的缺点是页长与程序的逻辑大小不相关。

段是按照程序的自然分界划分的长度可以动态改变的区域。

在段式虚拟存储系统中,虚地址由段 和段内地址(偏移量)组成。虚地址到实主存地址的变换通过段表实现。每个程序设置一个段表,段表的每一个表项对应一个段。每个表项至少包含下面三个字段:
(1)有效位:指明该段是否已经调人实存。(2)段起址:指明在该段已经调入实存的情况下,该段在实存中的自地址。
(3)段长:记录该段的实际长度。设置段长字段的目的是为了保证访问某段的地址空间时,段内地址不会超出该段长度导致地址越界而破坏其他段。
段表本身也是一个段,可以存在辅存中,但一般是驻留在主存中。

              段页式虚存的地址变换过程

四、虚存的替换算法

当从辅存调页至主存而主存已满时,也需要进行主存页面的替换。虚拟存储器的替换算法与 cache 的替换算法类似,有 FIFO 算法、 LRU 算法、 LFU 算法等。

虚拟存储器的替换算法与 cache 的替换算法不同的是:

(1) cache 的替换全部靠硬件实现,而虚拟存储

器的替换有操作系统的支持。

(2)虚存缺页对系统性能的影响比 cache 未命中要大得多,因为调页需要访问辅存,并且要进行任务切换。

(3)虚存页面替换的选择余地很大,属于一个进程的页面都可替换。

五、存储管理部件

存储管理部件( Memory Management Unit , MMU )是系统中进行虚实地址转换的核心部件。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月7日
下一篇 2022年10月7日

相关推荐