什么是虚拟内存
虚拟内存
的出现是为了更有效的管理内存、减少出错。它提供了3个非常重要的能力:
- 它将主存看做是一个存储在磁盘上的地址空间的高速缓存
- 它为每个进程提供了一致的地址空间,从而简化了内存管理
- 它保护了每个进程的地址空间不被其它进程破坏
物理寻址
计算机系统的主存被组织成一个连续字节大小的数组,每个字节都有一个唯一的物理地址
,类似于下标
,通过物理地址来访问内存的方式称为物理寻址
虚拟寻址
计算机CPU通过一个虚拟地址
来访问主存,这种方式称为虚拟寻址
。虚拟地址
终将会被转换为物理地址
,这个过程被称为地址翻译
,由CPU中的内存管理单元
完成
虚拟页
VM系统将虚拟内存分割为大小固定的块,称作虚拟页
在任意时刻,虚拟页面的集合都分为三个不相交的子集:
- 未分配的:VM系统还未分配或创建的页。未分配的块没有任何数据和它们相关联,因此也就不占用任何磁盘空间
- 缓存的:当前已缓存在物理内存中的已分配页
- 未缓存的:未缓存在物理内存中的已分配页
内存映射
Linux通过将一个虚拟内存区域与一个磁盘上的对象关联起来,以初始化这个虚拟内存区域的内容,这个过程称为内存映射
,虚拟内存区域可以映射到两种类型的对象中的一种:
- Linux文件系统中的普通文件
- 匿名文件
网友评论