虚拟内存管理
虚拟内存
虚拟内存的起因
存储器层次结构 | 访问时间 |
---|---|
Registers | 1 nsec |
Cache | 2 nsec |
Main Memory | 10 nsec |
Magnetic disk | 10 msec |
Magnetic tape | 100 sec |
覆盖技术
覆盖技术:相互之间没有调用关系的程序模块之间。
1.对于一个进程,不需要一开始就把程序的全部指令和数据都装入内存再执行。
2.程序划分为若干个功能上相对独立的程序段,按照程序逻辑结构让那些不需要同时执行的程序段共享同一块内存区
3.当有关程序段的先头程序段已经执行结束后,再把后续程序段从外存调入内存覆盖前面的程序段
交换技术
swap技术:swap out、swap in。内存和硬盘之间。
对象是进程,等待状态的进程驻留内存会造成存储空间的浪费。因此,有必要把处于等待状态的进程换出内存。
虚存技术
利用程序的局部性。一页4K大小。
基本特征:
1.大的用户空间:物理内存+外存
2.部分交换
3.不连续性:分配不连续,使用不连续
后备存储Backing Store(二级存储)
数据,代码,动态库
swap file :程序运行过程中产生的数据
页面置换算法
局部页面置换
- 最优置换算法(OPT):预测未来,难以实现
- 先进先出(FIFO):最简单,性能差
- 最近最久未使用(LRU):由过去预测未来,接近OPT,开销大。
- 时钟算法(Clock):性能接近LRU,高效,开销小
- 二次机会法(Enhanced Clock):Clock算法的改进,增加读写位判断,减少写页被置换
- 最不常用算法(LFU)
Belady现象:
一些算法会导致导致不会因为物理页增加,内存访问减少。有时候反而增加内存访问。一般来讲,物理页增加,访问内存的次数会减少,极限情况物理页包含了所有内存。
全局页面置换
- 工作集置换算法
- 缺页率置换算法
针对多个程序同时运行,全局页面置换算法优于局部页面置换算法,全局页面置换算法可以动态调整分配给每个程序内存页的大小
内存抖动
- 进程太多,分配给每个进程的物理页面太少,不能包含工作集
- 造成大量缺页,频繁置换
- 进程运行速度变慢
操作系统需要在并发水平和缺页率之间达到一个平衡
选择适当的程序数目和进程需要的物理页数目
LAB3实验
1 | // 给未被映射的地址映射上物理页 |
1 | // 基于FIFO的页面替换算法 |