操作系统-内存管理2
3.2 虚拟内存管理
3.2.1 基本概念
传统:一次性全部装入,一直驻留
局部性原理
时间局部性:当前执行的指令不久后可能再次执行
空间局部性:当前访问的数据不久后可能访问其邻近的数据
虚拟存储器
基于局部性原理,仅将少量页面存入内存
3.2.2 请求分页管理方式
页表机制
页表项结构:页号,物理块号,状态位,访问字段,修改位,外存地址
缺页中断机构
产生缺页中断
地址变换机构
从快表到页表再到外存
3.2.3 页框分配
驻留集大小
太小缺页率高
太大没意义
内存分配策略
固定分配局部置换:所有进程块数一样,自己换自己的
可变分配全局置换:
可变分配局部置换:
物理块调入算法
固定分配时有以下几种物理块分配算法
平均分配算法:
按比例分配算法:
优先权分配算法:
调入页面的时机
预调页策略
请求调页策略
从何处调入页面
略
如何调入页面
缺页中断
3.2.4 页面置换算法
最佳置换算法(OPT)
最长时间不被访问
先进先出置换算法(FIFO)
可能导致Belady异常(物理块增多,缺页数也增多)
最近最久未使用置换算法(LRU)
时钟置换算法
简单CLOCK
也叫最近未用算法(NRU):新增访问位,被访问时访问位设置为1。缺页时若为1则置为0,若为0则置换。
改进CLOCK
新增修改位。优先换未访问且未修改的页,其次换未访问但修改过的页。
3.2.5 抖动和工作集
抖动
抖动:频繁的页面调度行为,刚换入就要换出,刚换出就要换入。
抖动原因:进程太多,物理块太少
工作集
工作集:某段时间内,进程要访问的页面集合。
3.2.6 内存映射文件
内存映射可用于共享文件or进程通信
3.2.7 虚拟存储器性能影响因素
缺页率——页面大小,物理块数,置换算法和程序本身
页面大小
小
优点:内存碎片少,内存利用率高
缺点:缺页率高,页表长
大
优点:缺页率低,页表短
缺点:内部碎片大
物理块数
达到一定程度后增长不明显
置换算法
写回
把脏块存在一个链表上,到一定数量后一起写回磁盘,其他进程可直接从链表上读取
程序
局部化
3.2.8 地址翻译
略,从逻辑地址到物理地址的整个流程