内存管理单元如何将虚拟地址映射到物理地址

时间:2018-04-29 20:31:10

标签: memory-management operating-system virtual-address-space

如果计算机系统的主内存为1mb且虚拟地址空间为16mb,而磁盘块大小为1kb。内存管理单元如何将虚拟地址映射到物理地址?

2 个答案:

答案 0 :(得分:1)

我假设你打算问“MMU如何将虚拟内存映射到物理内存”(如你的问题描述)。

首先,虚拟内存由操作系统管理。 MMU只提供硬件机制来利用它。

操作系统将保留virtual_address的地图 - >每个进程的physical_address。

例如,如果程序使用虚拟页面[0,1,2,3],操作系统可以将这些页面映射到物理页面,如[64,128,256,512]。

由于虚拟地址空间大于物理地址空间,因此如果物理内存无法容纳所有虚拟内存,则不会将所有虚拟内存随时映射到物理内存。因此,某些数据将被换出到磁盘,因此不会出现在物理内存中。

例如,假设虚拟内存有8个页面,让我们简化您的情况,但物理内存只能容纳4页数据。如果进程在虚拟页面[0,1,2,3,4]上有数据,则显然物理内存不能容纳所有5个页面。因此,其中一个虚拟页面将被放入磁盘中,并且系统的存储器映射将类似于[0-> 2,1-> 1,2-> 3,4-> 0],并且这种情况下,虚拟页面3将在磁盘中换出。

enter image description here

如果程序需要数据,那些换出的页面将仅通过OS返回主存储器,并且需要换出先前存在于主存储器中的一个页面以腾出空间。确定要换出哪个页面的算法是另一个主题(例如,LRU,时钟算法)。

实际上,内存系统比这种情况更复杂,因为现代操作系统允许在系统中运行多个进程,而OS本身使用其他技术(例如,设置阈值来触发页面交换)以提高内存系统的效率

答案 1 :(得分:0)

使用内存管理将LOGICAL地址转换为PHYSICAL地址。

它使用操作系统定义的PAGE TABLE进行转换。页表的格式因系统而异,处理器至少有三种主要方法来定义它们。通常,具有一个或多个特权寄存器的处理器指向当前进程的页表。这些寄存器通常作为上下文更改的一部分加载,从而引入新进程。

在简单的情况下,页表只是一个包含逻辑和物理地址之间映射的数组。一些地址的高位比特用作页表的索引。相应的页表条目指定逻辑页面映射到的物理页面帧。

地址的一些低位比特保留为物理页面帧的偏移量。

操作系统以MMU期望它们所在的格式维护页表.MMU透明地在逻辑地址和物理地址之间进行转换。

磁盘块大小与此转换无关。