首页 > 代码库 > 虚拟存储器

虚拟存储器

计算机中设置虚拟存储器的目的是扩大用户的编程空间。

在主存之外增加第二级大容量辅存,页式虚拟存储器把主存和辅存都分成大小相同的页面。

主存速度快容量小,存放当前正运行的程序;辅存容量大,速度慢,存放暂不使用的程序和数据。

程序执行过程中需要访问辅存内容,可把包括有关单元的一个虚页面数据调入主存一个空页面中。其后CPU根据程序的局部性原理,可多次从主存这个页面中取出需要的有关指令和数据,大大提高了存取有关数据的速度。

虚拟存储器的关键是虚存页面调入主存时,CPU如何知道调入主存何页,虚实页面如何实现页面地址转换。页式虚拟存储器在主存中专门设置一个页面对照表。记录每个虚页调入主存时存入的实页面页号及某些特征位,如装入位、修改位等。每个用户应用程序都设有一个页表、页表长度为该程序的虚页数,给出一个虚拟地址(逻辑地址)访问虚拟存储器,首先进行逻辑地址与主存地址(物理地址)的转换。查页表,根据虚页号查页表读出对应行的内容,如该行装入位为1,表明该虚页已调入主存,该行后面的内容即为该虚页调入主存时的实页号,实页号与逻辑地址低位给出的页内地址,即可决定读出的主存单元地址。

应该指出页表转换是通过读主存实现的,很费时间,但虚拟存储器主要目标是扩大容量,速度慢点影响不大,用软件方法实现也是可以接受的。大多数计算机都是用软件方法实现。

在要求速度较高的特别场合,也可设置硬件快表。

虚拟存储器