一 局部性原理
(1) 时间局部性:
如果程序中的某条指令被执行,不久以后该指令可能再次被执行。
(2) 空间局限性:
一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问。
二 虚拟内存特征
每个进程都有自己的虚拟地址空间。
虚拟内存技术的核心就是利用了局部性原理,把所要运行的进程中的数据不全部加载到内存中执行,而是加载一部分。
三 虚拟内存技术的实现
https://blog.csdn.net/github_37129174/article/details/78686830
1 分页技术实现虚拟内存管理
虚拟地址空间按照固定大小划分成叫做页面的若干单元。
在任意时刻,虚拟页面的集合都分为三个不相交的子集:
未分配的:VM系统还未分配(或者创建)的页。未分配的块没有任何数据和它们相关联,因此也就不占用任何磁盘空间。
缓存的:当前缓存在物理存储器中的分配页。
未缓存的:没有缓存在物理存储器中的已分配页。
2 MMU
MMU(内存管理单元)(页表),负责把虚拟地址映射为物理内存地址,也就是把虚拟页映射为物理内存页。
从一个虚拟地址,映射到页表中的某一行记录,由此记录判断虚拟页映射的物理页,如果存在对应的物理页,可以得到该物理地址具体数值。如果没有存在对应的物理页,则发生缺页中断,需要从物理内存页中找到一个不经常使用的页,把它写到物理存储中,然后把这个虚拟页映射到这个物理内存页。
3 分页式系统存在的问题
(1) 虚拟地址到物理地址的映射必须非常快
使用一种硬件设备(转换检测缓冲区),包含少量的表项,可以把一部分虚拟地址直接映射到物理内存地址,不需要再使用页表。
(2)针对大的内存,建立多级页表。