一、虚拟内存提出的背景

  1. 一个系统中的进程是和其他进程共享CPU和资源的,然而共享主存的方式会面临太多的挑战。随着对CPU需求的增长,进程会以某种平滑的方式慢下来。然而,如果太多的进程需要太多的主存,那么其中的一些进程就无法运行。这里可以联想一下手机用久了,在同时运行了很多APP的情况下,再打开一些APP,系统会提示应用程序无法打开。当然,移动端主要针对的是运行内存,即RAM。
  2. 内存很容易被破坏。如果一个进程不慎写入了另一个进程的内存,该程序就可能以某种和逻辑无关的令人迷惑的方式失败。

二、虚拟内存(VM)

虚拟内存是一个针对主存的抽象概念,旨在更有效的管理主存并且尽可能避免出错。
虚拟内存是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互。它为每个进程提供了一个大的,一致的和私有的地址空间。

虚拟内存的三个重大的能力
1.将主存看成是存储在磁盘地址空间上的高速缓存,在主存中只保留活动区域,并根据需要在磁盘和主存间来回传递数据。通过这种方式,高效的使用了主存。
2.为每个进程提供了一致的内存空间,从而简化了内存管理。
3.保护了每个进程的地址空间不被别的进程破坏。VM系统通过把虚拟内存分割为虚拟页作为存储单元,
在任意时刻,虚拟页面的集合都可以分为三个不相交的子集:
1)未分配的:VM系统还未创建的页
2)未缓存的:当前未存储在物理内存的已分配页
3)缓存的:当前已存储在物理内存中的已分配页