虚拟存储器

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

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.页式虚存地址映射

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

d0bf6bb644214b0ea8a6b0f90ca85439.png

           页式虚拟存储器的地址映射过程

●每个进程所需的页数并不固定,所以页表的长度是可变的,因此通常的实现方法是把页表的基地址保存在寄存器中,而页表本身则放在主存中。由于虚存地址空间可以很大,因而每个进程的页表有可能非常长。例如,如果一个进程的虚地址空间为2G字节,每页的大小为512字节,则总的虚页数为2³¹/2⁹=2²²。

2.内页表和外页表

虚地址到主存物理地址的变换表,通常称为内页表。

与内页表对应的还有外页表,用于虚地址与辅存地址之间的变换。

3.转换后援缓冲器(TLB)

●由于页表通常在主存中,因而即使逻辑页已经在主存中,也至少要访问两次物理存储器才能实现一次访存,这将使虚拟存储器的存取时间加倍。为了避免对主存访问次数的增多,可以对页表本身实行二级缓存,把页表中的最活跃的部分存放在高速存储器中,组成快表。这个专用于页表缓存的高速存储部件通常称为转换后援缓冲器( TLB )。保存在主存中的完整页表则称为慢表。

64d847e6ccc345f1bf399c47bdb42991.png

                     TLB的地址映射过程

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

1.段式虚拟存储器

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

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

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

f138e71fccc6434cb56d6b02ebf14a60.png

              段式虚存的地址映射过程

2.段页式虚拟存储器

●段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。

●实存被等分成页。每个程序则先按逻辑结构分段,每段再按照实存的页大小分页,程序按页进行调入和调出操作,但可按段进行编程、保护和共享。

5a8f51f3c8c04d47bf0d4a53dc94e592.png

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

四、虚存的替换算法

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

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

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

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

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

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

五、存储管理部件

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值