虚拟内存系统中地址和内存空间之间的关系是什么?


程序员使用的地址称为虚拟地址,这些地址的集合称为地址空间。在主存中保存地址的空间或位置称为位置或物理地址,这些位置的集合称为内存空间。

因此,地址空间是由程序在引用指令和数据时生成的地址集合。内存空间保存可以直接寻址以进行处理的实际主存位置。

示例 − 假设主存容量为32K字 (K = 1024)。由于 32K = 215,因此需要15位来定义内存中的物理地址。假设计算机有可用的辅助存储器,可以保存 220 = 1024K 个字。因此,辅助存储器的存储容量与32个主存的容量相似。如果地址空间用N表示,内存空间用M表示,在这个例子中我们可以有N = 1024K 和 M = 32K。

在多道程序计算机系统中,程序和信息会在CPU需要时在辅助存储器和主存之间移动。假设程序1当前正在CPU中执行,程序1及其相关数据的一个区域将从辅助存储器发送到主存,如图所示。

相关的程序和数据不需要在内存中的相邻区域,因为数据正在进出传输,空闲空间可以分布在内存中。

在虚拟内存系统中,程序员被引导认为他们拥有整个地址空间供其使用。这也意味着指令代码的地址字段具有足够的位数来指定所有虚拟地址。

假设,指令代码的地址字段包含20位,但物理内存地址只能用15位定义。结果,CPU将使用20位地址来引用指令和数据,因为此地址处的信息应该从物理内存中获取。毕竟,对单个字的辅助存储访问会非常频繁。

因此,需要一个表来将例如20位的虚拟地址映射到例如15位的物理地址。映射是一个动态的过程,它定义了CPU引用字时每个地址是如何立即解释的。

更新于:2021年7月27日

7K+ 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告