目录


文章目录


Linux 内存管理全貌

Linux 操作系统原理 — 内存 — 物理存储器与虚拟存储器_虚拟地址

物理存储器

见《​​计算机组成原理 — 存储系统​​》。

虚拟存储器

在早期的计算机系统中,程序员会直接对主存的物理地址进行操作,这种编程方式显然会出现多进程操作共享内存空间的数据一致性问题。而且由于当初不存在虚拟存储器的概念,所以 CPU 寻址宽度就成为了内存容量的极限。显然,直接操作主存的物理地址不是一个好的办法。

为了解决这些问题,现代计算机系统通过软(操作系统)、硬件结合的方式,把内存和外存从逻辑上统一成了一个整体,这就是虚拟存储器,或称为虚拟存储系统,简称虚拟内存。

虚拟存储器解决了三个根本需求:


  1. 确保可以运行存储空间需求比实际内存空间大的用户程序​。
  2. 确保为用户程序分配的内存空间是连续的​。
  3. 确保多个用户程序之间的内存空间互相隔离​。

为此,虚拟机存储器提供了三个重要的能力:


  1. 内-外存空间交换能力​:利用局部性原理,从设计上,把内存当成外存的高速缓存,在内存中只存储活动数据,并根据需要在 “内-外” 存之间来回传送数据。通过这种数据交换的能力,即高效地利用了内存,同时也内存的容量扩大至内-外存容量的总和(注:实际上通常不会将全部外存都加入交换)。
  2. 虚拟地址空间编址能力​:为每个应用程序提供一致的虚拟地址空间。
  3. 虚拟地址空间隔离能力​:保护每个应用程序的虚拟地址空间是互相隔离的。

为了提供上述三个重要的能力,虚拟存储器实现了两个关键技术: