操作系统复习(3)https://developer.aliyun.com/article/1530635
六,虚拟存储器
6.1 概述
1. 常规存储器特征和局部性原理
特征
- 一次性:作业必须一次性全部装入内存才可以执行
- 驻留性:作业被装入内存后,整个作业都会一直驻留在内存中,其中任何部分都不会换出,直至运行结束
程序的局部性表现
- 时间局限性 原因:程序中存在大量循环操作
- 空间局限性 原因:程序的顺序执行
正是因为常规存储器这两个特征和程序的局部性表现所以我们需要引入虚拟存储器
2.虚拟存储器三大特征
- 多次性(最重要的特征)
多次性是指无需在作业运行时一次性地装入内存,而允许被分成多次调入内存运行 - 对换性
无需在作业运行时一直常驻内存,而允许在作业运行的过程中,进行换进和换出 - 虚拟性
指从逻辑上扩充内存的容量,使用户看到内容远大于实际的内存容量
虚拟性是以多次性和对换性为基础的,
6.2 虚拟内存技术的实现
三种方式
- 请求分页存储管理
- 请求分段存储管理
- 请求段页式存储管理
不管哪种方式都需要硬件的支持
请求分页存储管理
请求分页系统建立在基本分页管理方式之上的,为了支持虚拟存储器功能而增加了请求调页和页面置换功能.请求分页是目前最常用的一种实现虚拟存储器的方法.
页表机制
1.状态位P
用于指示该页是否已调入内存,供程序访问时参考。
2.访问字段A
用于记录本页在一段时间内的访问次数,或记录本页最近有多长时间未被访问,供置换算法换出页面时参考.
3.修改位M
又称为"脏位" 标识该页在调入内存后是否被修改过.
4.外存地址
用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考
请求分页的地址变换过程
6.3 页面置换算法🐻
1.最佳(OPT)页面置换算法
算法思想:
选择以后永不使用的页面淘汰或者在最长时间内不在被访问的页面,以保证最低的缺页率
但是因为无法预知哪个页面不会被访问,所以这个算法是实现不了的,但是可以用来评价其他算法
2.先进先出(FIFO)页面置换算法
优先淘汰最早进入内存的页面,即在内存中驻留最久的页面
3.最近最久未使用页面置换算法(LRU)
算法思想:选择最近最久时间未访问的页面予以淘汰
为每个页面赋予一个访问字段,记录自上次访问以来的时间t
思想:以过去预告将来,之前很久未使用的以后使用的几率也很小
4.时钟(clock)置换算法
算法要扫描缓冲区,像时钟的指针一样转动,称为clock算法,又称最近未用(NRU)算法
被访问过置为1
当需要淘汰时,循环队列轮转检查访问位,如果是1则变为0给他一次机会,如果是0就选择该页进行换出
0 0 最近既未被访问,又未被修改是最佳淘汰位
0 1 表示最近未被访问但是已经被修改,并不是很好的淘汰页面
1 0 最近被访问但是未被修改 该页有可能再被访问
1 1 最近已被访问, 也被修改 ,该页有可能再被访问
置换算法对比
6.4 抖动
在页面置换过程中,一种最糟糕的情形是,刚刚换出的页面马上又要换入主存,刚刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动或颠簸。
频繁发生缺页中断(抖动)的主要原因是:
某个进程频繁访问的页面数目高于可用的物理页帧数目。