linux 系统如何实现虚拟存储器
摘要: Linux 操作系统是一种能运行于多种平台、源代码公开、免费、功能强
大、与 Unix 兼容的操作系统。 本文主要阐述了 Linux 虚存管理的基本特点 , 并
分析了 Linux 页式存储管理的特点、虚存的实现方法 , 以及主要 Linux 虚拟地
址空间的管理。此外还介绍了 Linux 缺页中断处理。
关键字: Linux ; 虚存管理 ; 中断处理
1. 虚拟存储器
虚拟存储器的概念: 以透明的方式给用户提供一个比实际内存大的多的作业
地址空间。它不是任何实际的物理存储器, 而是一个非常大的存储器的逻辑模型。
虚拟存储技术的实现思想: 根据程序执行的局部性原理, 在作业信息不全部
装入内存的情况下, 作业是可以运行的。 例如对于一个 4 页大小的作业, 当前只
有 3 个空闲内存块,运行改作业的可行的办法就是将作业的 3 页装入内存的 3
个空闲块,先运行这 3 页,而将剩余的页暂时存放在外存上,待需要使用在第 4
页上的信息时, 再选中在内存中的一页交换出内存, 从而让出一个内存块以便装
入第 4 页。作业的页面在内存与外存上的交换这一过程对用户是透明的, 它是由
操作系统自动完成的, 这也相当于利用外存的空间扩充了内存空间。 这就是虚拟
存储技术的实现思想
。根据虚拟存储技术的实现思想可知实现虚拟存储器必须具备以下
条件:
(1)实际内存空间。由于用户程序要在实际内存中运行,所以内存空间是实现虚拟存
储器的基础。
(2)外存上的内存交换区。用户作业的一部分进入内存,另一部分暂时存放在外存的
一个区域中,作业在内存与该区域之间换进、换出,该区域作为内存的扩充空间,因此,这
个区域称为内存交换区。 内存交换区的大小是可以设定的。 但它必须受虚拟地址空间的限制。
(3)虚拟地址。针对虚拟存储器的使用,用户在编制程序时应使用逻辑地址。因此,
逻辑地址也称为虚拟地址, 逻辑地址空间也称为虚拟地址空间。 虽然使用虚拟存储技术使得
用户的作业的大小可以大于实际内存的大小, 但是还是受到虚拟地址空间的限制, 而虚拟地
址空间的大小受到地址寄存器位数的限制,如一个 32 位的地址寄存器其虚拟地址空间最大
为 232 字节,即 4GB。
(4)换进、换出机制。如何实现作业在内存与交换区之间换进、换出?怎样选择作业
在内存部分中的一部分进行换出?这都是实现虚拟存储技术必须解决的问题。
2. 页式虚拟存储基本原理
基本思想: 作业信息的副本存放在外存上, 当作业被调度运行时, 至少要将作业的第一
页内容装入内存,在执行的过程当中,访问到不在内存的页时,再把它们调入内存。