虚拟存储器简介

本文介绍了虚拟内存技术,一种使应用程序认为拥有连续可用内存的技术,实际上通过分隔物理内存和外部磁盘存储进行数据交换。文章详细解释了存储器管理部件(MMU)如何将虚拟地址转换为实际地址,以及分段管理和分页管理两种主要的管理方法。
摘要由CSDN通过智能技术生成

虚拟存储器简介

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。
                 ——百度百科

把虚拟地址转换成实际地址这项工作有存储器管理部件(Memory Management Unit, MMU)完成。管理方法有分段管理(Segmentation)和分页管理(Paging)两种。

分段管理

分段管理是把存储器分为若干段,为一个程序指定一个或几个“段寄存器”。这些寄存器指定当前段所在的主存的起始地址。每次访问存储器时,主存的地址由段寄存器的内容与程序中的虚拟地址相加得到。

除了主存的起始地址,段寄存器中可能还存有该段的大小以及对该段的访问控制信息。段的大小用于判断虚拟地址是否出界,而访问控制信息指出该段是否已在主存以及能否对其进行读写或执行等访问权限信息。由此可见,分段管理中每段的大小是可变的。

分页管理

分页管理把存储器机械地分成若干页,使用单一的虚拟地址,而不需要使用段寄存器。在32位架构系统中,虚拟地址是32位,可以把虚拟地址分为两部分:虚拟页号(高20位)和页内地址(低12位)。可以继续把20位虚拟页号分为两部分:页目录地址(高10位)和页表地址(低10位)。我们首先使用页目录地址访问页目录,从中得到页表的起始地址,然后再使用页表地址访问页表,得到实际页号,最后再使用实际地址访问存储器取出数据。这样,一个页目录和一个页表都只占4KB。值得注意的是,4KB的页目录只有一个,但4KB的页表有1K个。

但是上述分页管理机制存在一个很大的问题:为了访问一次数据存储器,先要访问一次页目录存储器,再要访问一次页表存储器,这时得到的才是实际地址。这样一来,我们从主存中取出一个数据,需要先后访问三次主存,实在太慢了!为此,我们可以使用快速地址转换TLB来解决这一问题。

快速地址转换TLB

TLB(Translation Lookaside Buffer,旁路转换缓冲)是一种与Cache极其相似的电路,只是里面的RAM存储的不是数据而是存储器地址的实际页号部分。


参考文献:李亚民.计算机原理与设计.北京.清华大学出版社.2011.6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值