-
计算机早期,CPU 是直接操作 物理内存(Physical Memory)的,但这会导致 内存空间无法完全隔离,一个程序修改了另一个程序的地址空间,就会导致程序崩溃;同时物理内存大小有限,一旦超出这个范围,程序也会崩溃。
-
为了解决这个问题,引入了虚拟内存技术。虚拟内存是一种内存管理技术,是虚拟的、逻辑上存在的连续存储空间,它在程序运行期间 动态映射 到多个物理内存碎片 中。如果物理内存中,它会借助磁盘来拓展空间(如 内存交换技术),因此虚拟内存比实际的物理内存大得多。
-
每一个进程都有独立的虚拟地址空间,不同进程互相不干扰,提高了安全性
-
由于虚拟内存在背后会借助磁盘空间,所以可以让每个程序都以为有充足的空间来供运行。
-
-
映射的原理:
-
**虚拟内存到物理内存的映射,是通过 页映射表(page table)完成的。**内核会为 每一个进程 维护一份相互独立的页映射表。一段虚拟内存空间 通过 页映射表 映射到一段物理内存空间上,这样 CPU 访问对应 虚拟内存地址的时候 就可以通过查找 页映射表 来访问对应的物理内存。另外,页(page)是 虚拟内存 向 物理内存 映射的基本单元。
-
虚拟内存是这 按需映射 的。在虚拟内存里 程序运行过程时 没有访问 的地方,是不会映射到物理内存上的;只有被访问的空间才会被映射到物理内存上。所以说,虚拟内存大,只能表示 程序可访问的空间大,不代表它实际占用的物理内存也很大。
-