虚拟内存
虚拟内存是除了寄存器外,其他存储介质的总和,叫做虚拟内存。包括内存和外存。
虚拟内存管理方式
请求分页管理方式
页表结构
- 页号:进程按照页框大小分成一块一块,每一块标上的序号叫做页号
- 内存块号:页号对应的内存页框的序号
- 状态位:进程不是一次性加载,而是先加载核心部分,非核心部分的页号对应的状态位是0,表示未加载, 当然对应的内存块号是无
- 访问字段:表示内存块号中的内容被访问的次数
- 修改位:表示内存块号中的内容是否被修改
- 外存地址:页号对应的进程部分存储的外存地址
缺页中断机制
- 进程在运行时,需要访问的功能不在内存中,此时会发起缺页中断
- 缺页中断处理程序会加载需要的进程功能,并且更新页表内容
- 缺页中断属于内中断
- 缺页中断机制也会将不常用的内存块号中的内容放到外存中,这个属于页面置换机制
地址变换机制
请求分页管理与分页管理的地址变换机制相同,唯一的区别是页表结构不同
页面置换机制
页面置换算法
最佳置换算法OPT
每次淘汰最不可能被使用的页面
先进先出置换算法
将内存页看成先进先出队列,每次淘汰最先加载内容的页
LRU置换算法
将最近最长时间没有被访问的页置换掉
时钟置换算法
- 创建一个页面循环队列,每个页都有一个访问位,表示页是否被访问
- 时钟置换算法循环扫描队列,发现访问位是0的页面就置换掉
- 时钟置换算法在扫描队列时,除了找出访问位是0的页面,还会将访问位是1的页面的访问位设置成0
- 将访问位设置成0的目的是防止所有页面访问位都是1,这样就无法置换掉任何页面了
改进版时钟置换算法
- 创建一个页面循环队列,每个页都有一个访问位和一个修改位
- 改进版时钟置换算法在第一轮扫描时,会置换第一个访问位和修改位都是0的页面
- 改进版时钟置换算法在第二轮扫描时,会置换第一个访问位是0,修改位是1的页面,同时将所有页面的访问位设置成0;如果没有找到访问位是0,修改位是1的页面,继续按照第一轮扫描的机制再来一遍
页面置换策略
- 进程加载到内存中的只有核心部分,未加载的部分存放在磁盘的文件区
- 页面置换算法置换出来的页面内容存放在磁盘的交换区