虚拟存储的需求背景:内存空间不够用
覆盖overlay:应用程序手动把需要的指令额数据保存在内存中;
对换swapping:操作系统自动把暂时不能执行的程序保存到外存中;
虚拟存储:在有限容量内存中,以页为单位自动装入更多更大的程序
覆盖技术overlay:
目的:是在较小的可用内存中运行较大的程序。
实现方法:
依据程序逻辑结构,将程序划分为若干功能相对独立的模块,将不会同时执行的
模块共享同一块内存区域。
必要部分(常用功能),放在常驻内存;
可选部分(不常用功能)放在其他程序模块中,只在需要的时候装入内存;不存在调用关系的模块可相互覆盖,共同一块内存区域。
开发难度:增加了编程难度,执行时间也会增加
交换技术swapping:
目的:增加正在运行或者需要运行的程序的内存(多个进程)
实现方法:将暂时不能运行的程序放到外存,基本单位是整个进程的地址空间。
覆盖和交换的比较:
覆盖:只能发生在没有调用关系的模块间;程序员必须给出模块间的逻辑覆盖结构;
发生在运行程序的内部模块间。
交换:以进程为单位;不需要模块间的逻辑覆盖结构;发生在内存进程间。
虚拟存储技术的目标:
只把部分程序放到内存中,从而运行比物理内存大,由操作系统自动完成,无需程序员干涉;
实现进程在内存和外存之间的交换,在内外存之间只交换进程的部分内容。
局部性原理principle of locality:程序在执行过程中的一个较短使其,所执行的指令地址和指令的操作数地址,分别局限于一定区域。时间局部性:一个数据的一次集中在较短时间内;空间局部性:当前访问的数据和邻近的几个数据集中在较小区域内;分支局部性。
虚拟存储的基本概念:将不常用的部分内存暂存到外存。
原理:装载程序时,只将当前指令执行需要的部分装入内存;指令执行中需要的指令或数据不在内存(缺页)时,处理器通知操作系统将相应的页面或段调入内存;操作系统将暂时不用的页面或段保存到外存。
实现方式:虚拟页式存储,虚拟段式存储
特征:不连续性:物理内存非连续,虚拟地址空间使用非连续;
大用户空间:提供给用户的虚拟内存可大于实际的物理内存;
部分交换:虚拟存储只对部分虚拟地址空间进行调入和调出。
虚拟页式存储管理:请求调页和页面置换。下图为虚拟页式存储中的地址转换
虚拟页式存储中的页表项结构
驻留位:表示该页是否在内存中,1在内存中,0则缺页;
修改位:表示内存中的该页是否被修改过,修改过则回收;
访问位:表示该页是否被访问过,用于页面置换;
保护位:该页允许访问的方式。
缺页异常处理流程:
A.在内存中有空闲物理页面时,分配一个物理页面帧f,转E;
B.根据页面置换算法选择将被替换的物理页帧f,对应逻辑页q;
C.如果q被修改过,则把他写回外存;
D.修改q的页表项中驻留位为0;
E.将需要访问的页面p装入到物理页面f;
F.修改p的页表项驻留位为1,物理页帧号为f;
G.重新执行产生缺页的指令。
虚拟页式存储管理的性能:有效存储访问时间 effective memory access time
EAT=访存时间*(1-p)+缺页异常处理时间*缺页率