虚拟内存技术
内存管理是计算机系统内存管理技术的一种,是对主存的一种抽象概念。为每个进程提供了一个一致的、私有的地址空间。
- 为每个进程提供一致的地址空间,简化内存管理
- 保护每个进程的地址空间不被其他进程破坏,隔离了其他进程的地址访问
- 将主存看做是磁盘空间的高速缓存,主存中只保存活动区域,并根据需要在磁盘与主存之间传送数据
物理寻址与虚拟寻址
计算机主存可以看做是M个连续字节组成的数组。每个字节都有唯一的物理地址,最简单的访问内存方式就是物理寻址。
虚拟寻址:CPU通过虚拟地址访问主存,在访问之前虚拟地址会被MMU翻译为一个物理地址,然后再访问主存。
**虚拟地址空间:**虚拟内存技术中虚拟地址一般是4G, 这是因为地址是四个字节32位的,能表示的地址是4G
一个进程用到的虚拟地址其实不到4G。而用到的内存区域,会通过页表映射到物理内存。所以每个进程都可以使用同样的虚拟内存地址而不冲突,因为它们的物理地址实际上是不同的,有独立的地址空间,
虚拟地址空间分配
虚拟地址空间大小不需要和物理地址空间一样大小。
linux内核将虚拟地址空间分为两部分: 用户进程空间以及内核进程空间,两者比例3:1
- 对CPU来说,目标存储器是物理内存,使用高