虚拟内存管理技术
概述
-
问题:在内存不够时,可以采用覆盖技术和交换技术。但都有缺点 。覆盖:增加程序员负担 交换:增加处理器的开销
-
解决之道:虚拟内存管理技术—虚存技术
-
目标:
- 像覆盖技术一样,不是把程序的所有内容都放在内存中,但做的更好 ,由操作系统来完成,无需程序员干涉
- 像交换技术一样 实现进程在内存外存之间的交换,但做的更好,只对进程的部分内容进行交换
-
程序局部性原理:指程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域
- 时间:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短的时期内。
- 空间:当前指令和临近的几条指令,当前访问的数据和临近的几个数据都集中在一个区域内
-
基本概念:
- 在装入程序时,将当前需要执行的部分页面或段装入到内存,就可以让程序执行
- 在执行的过程中,如果需要执行的指令或访问的数据不在内存中(缺页或缺段),则由处理器通知操作系统将相应页面或段调入到内存。
- 操作系统将内存中暂时不实用的页面或段调出到外存,调入需要的页面或段。
-
基本特征:
- 大的用户空间:将硬盘当做虚拟空间
- 部分交换:与交换技术比较
- 不连续:物理内存分配不连续,虚拟地址空间使用的不连续。
缺页中断
过程:
- 如果内存中有空闲的物理页面,则分配一物理页帧f,然后转第四步,否则转第二步
- 采用某种页面置换算法,选择一个将被替换的物理页帧f,逻辑页号为q,如果该页在内存期间被修改过,则需把它写回外存,否则释放该页
- 对q对应的页表项进行修改,把驻留位置改为0
- 将需要访问的页p装入到物理页面f中
- 修改p所对应的页表项的内容,把驻留位置改为1,物理页帧号改为f
- 重新运行被中断的指令。
后备存储
- 在何处保存未被映射的页?
- 能够简单识别在二级存储器中的页
- 交换空间:特殊格式,用于存储未被映射的页面
- 概念:
- 一个虚拟地址空间的页面可以被映射到一个文件(在二级存储中)中的某个位置
- 代码段:映射到可执行二进制文件
- 动态加的共享库程序段:映射到动态调用的库文件
- 其他段:可能被映射到交换文件(swap file)(程序运行时产生出的数据需要换出到硬盘中)