虚拟内存总览
虚拟内存是一种计算机系统内存管理技术,看到很多博客或者网站将虚拟内存单纯的理解为是在物理内存不够用时,用磁盘对物理内存进行扩充,甚至我之前也是这样理解的,这样理解是很不全面,甚至可以说是本末倒置的。所以虚拟内存到底在做什么,怎么做?虚拟内存的机制是比较复杂的,总体来说,操作系统和CPU一起,通过CPU的内存管理单元(MMU),共同维护虚拟地址这个概念,其中MMU通过页表等工具,维持虚拟地址空间与物理地址空间的映射,将虚拟内存地址转换为实际的物理地址。
虚拟内存历史
虚拟内存概念要追溯于上世纪60年代至70年代,那时候内存价格十分昂贵,虚拟内存机制使得操作系统可以减少对内存的使用。这种巨大的节约使得虚拟内存机制逐渐推广到几乎所有的操作系统中,目前仍有一些操作系统出于安全或者其他业务考量没有引入虚拟内存机制,比如有些嵌入式系统需要极低的内存延迟,或者有些嵌入式系统由于空间太小,没法安装一些硬件进行地址翻译。虚拟内存机制的引入不光节约了内存成本,同样增强了进程的安全性和可靠性,(因为每个进程由自己独立的地址空间,依靠MMU翻译成真实物理内存,减少了各个进程之间对内存资源抢夺的无序性,也就减少了很多内存地址错误,比如非法访问等)
虚拟内存的软硬支持
首先要明确一个概念,