1.概述
传统存储管理方式具有两个特征
一次性
:作业必须一次性全部装入内存后,才能开始运行。驻留性
:作业被装入内存后,就一直驻留在内存中,在其运行期间作业的任何部分都无法被换出。
显然,这两个特性非常的糟糕,于是乎,我们提出了虚拟内存管理的架构设计。
虚拟存储器的最大容量由计算机的地址结构而定。
局部性原理
时间局部性
:程序中的某条指令一旦执行,不久后该指令可能将再次执行;程序中的某些数据被访问过,不久后该数据可能再次被访问。栗子🌰:循环。空间局部性
:一旦程序访问了某个存储单元,不久之后其周围的存储单元可能也会被访问到。栗子🌰:数组访问。
虚拟内存技术实际上建立了“内存-外存”两级存储器结构,利用局部性原理来实现高速缓存。
基于局部性原理,在程序装入时,仅将程序当前要运行的少数页面或段装入内存,其余的暂时放在外存。随着程序的执行,在执行过程中当访问的信息不在内存中时,便将所需要的部分由外存调入内存,而一些暂时用不到的内容则由内存换出到外存中,从而腾出一些空间存放调入内存的信息,这样系统给用户提供了一个看似比实际容量大得多的存储器,我们称之为虚拟存储器,但这种存储器实际上并不存在。
虚拟存储的实现需要建立在离散分配的内存管理方式上。
2.特征
2.1 多次性
作业装入时无需将整个程序一次性装入,而是按需装入,后续随运行的需要再将所需内容调入或换出即可。
2.2 对换性
作业运行时无需常驻内存,允许将那些程序暂时用不到的程序和数据部分从内存调出到外存的对换区。待以后需要时,再将其调入。
2.3 虚拟性
从逻辑上扩充内存的容量,使用户所看到的内存容量远远大于实际的存储容量。
离散性
也是虚拟内存的一个特征。
3.技术实现
3.1 请求分页管理方式
3.1.1 页表机制
与基本分页系统不同的是,它不要求作业一次性全部调入内存中,但它需要处理请求页面不在内存中的问题。
状态位
:指明该页面是否已调入内存。访问字段
:记录本页面被访问的次数或页面