物理内存
物理内存就是真实的内存地址,比如对于一个1MB的RAM,它的物理地址范围就是0x00000 ~ (0xFFFFF-1)。
在远古时代,进程直接操作的就是物理地址。对于一个1MB的RAM来说,只要进程的大小不超过1MB,是没有问题的。但随着操作系统的发展,多进程带来了一个问题,内存很容易就被耗尽,但扩展内存就意味昂贵的成本。为了解决物理内存不够的问题,虚拟内存技术就诞生了。
虚拟内存
现代操作系统剥夺了进程直接访问物理内存的权利,进程使用的都是虚拟地址,虚拟地址与物理地址之间需要经过一层映射(translating)。
为了能让虚拟地址与物理地址对应起来,操作系统需要维护一个叫做页表(page table)的东西。页表里存放了虚拟地址到物理地址的映射。
虚拟内存的大小取决于CPU的地址总线。32位的cpu最高可有2^32=4GB的虚拟内存。那1MB的物理内存如何与4GB的虚拟内存对应起来呢?虚拟内存多出来的那部分,要映射到何处呢?磁盘。
当物理内存不足的时候,就用磁盘来暂时代替内存。
虚拟地址到物理地址的映射
直接用一个表记录下每个虚拟地址到物理地址的映射,很简单明了,但是不太可行,因为页表需要存储在内存里&#x