目录:
1. 虚拟内存的基本概念→ 传统存储管理方式;局部性原理;虚拟存储器的定义和特征;虚拟内存技术的实现
2. 请求分页管理方式→页表机制;缺页中断机构;地址变换机构
3. 页面置换算法→最佳置换算法;先进先出页面置换算法;最近最久未使用置换算法;时钟置换算法
4. 页面分配策略→驻留集大小;调入页面的时机;从何处调入页面
5. 抖动
6. 工作集
/*====================@@@@Halo World分割线@@@@====================*/
1. 虚拟内存的基本概念
1.1 传统存储管理方式的特征
1) 一次性:作业必须一次性装入内存后,才可以开始运行
2) 驻留性:作业被装入内存后,就会一直停在内存里,其他部分不会被不召唤出来,直到运行完成。
1.2 局部性原理
-CPU访问存储器时,无论是取指令还是存指令或者数据,所访问的存储单元都是趋于聚集在一个较小的连续区域中。
1)时间局部性:如果某数据被访问过,那么这个数据以后就不会被访问了
2)空间局部性:一旦程序访问了某个存储单元,那么在不久的将来,这个存储单元附近的单元也会被访问。
1.3虚拟存储器的定义和特征
- 基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而将其余的部分留在外存,就可以启动程序执行。在执行程序的过程中,当所访问的信息不再内存的时候,由OS从外面调到内存里。与此同时,OS也将暂不使用的内容放到外存上,从而腾出更多空间给用户用,这样的好像用户有了比实际还要打的存储器呢~这个东西呢,就叫虚拟存储器。
*虚拟存储器的三个特征: 1. 多次性 2. 对换性 3. 虚拟性
1.4 虚拟内存技术的实现
- 虚拟内存的实现是需要建立在离散分配的内存管理方式的基础上的
2. 请求分页管理方式
2.1 页表机制
-请求分页系统在一个作业运行之前不需要一次性全部导入到内存,所以肯定会出现访问页面不存在的情况。那么在请求页表项中增加4个字段
页号 | 物理块号 | 状态位P | 访问字段A | 修改位M | 外存地址 |
2.2 缺页中断机制
-在请求分页系统中,每当要访问的页面不在的时候,就会产生一个缺页中断, 会要求OS调入缺到的那一页
*和一般的中断相比: 1. 在指令执行期间和处理中断信号,而不是在一条指令执行完会,属于内部中断;2. 一条指令在执行期间,可能会发生还几次的缺页中断呢~
2.3 地址变换机制
- 通过快表而实现的?
3. 页面置换算法
- 进程运行的时候,若访问的页面不在内存里需要申请调用但是内存空间已经不够的时候,就需要从内存里调出去一点数据和程序,让内存多一点空间。
3.1 最佳置换算法(OPT)
-OPT所淘汰的页面是以后永远不会使用的,或者长时间没有被使用的页面。
- 但是你无法控制什么页面是永远以后都不会被访问的,所以无法实现
3.2 先进先出页面置换算法(FIFO)
- 淘汰最早的页面。
- 但是万一最早的页面也是一直用的页面就gg了
3.3 最近最久未使用置换算法(LRU)
-选择最近最长时间没被访问的页面淘汰。因为LRU认为以前都没被访问过的页面,之后也不一定会被访问。
- 过去预测未来方式
3.4 时钟置换算法(CLOCK)
- 给每一帧关联一个使用位。当某一页首次装入主存的时候,使用位 = 1;如果之后该页被访问了,那么使用位也 = 1。当要发生替换的时候,检查使用位 = 0的 ;而之后每当遇到 使用位 = 1 的时候全部置成0.
- 但是这个问题在于他没考虑到修改位。所以改进版的CLOCK就是选择了在加一个位来做改进位的处理。
最近未被访问 | 未被修改 | u = 0 | m = 0 |
最近被访问 | 未被修改 | u = 1 | m = 0 |
最近未被访问 | 被修改 | u = 0 | m = 1 |
最近被访问 | 被修改 | u = 1 | m = 1 |
4. 页面分配策略
4.1 驻留集大小: 固定分配全局/ 可变分配全局/ 可变分配局部
4.2 调入页面的时机:预处理/ 请求调页
5. 抖动:就是刚刚换出的页面马上又要换入主存,刚刚换入主存的页面马上又要换出主存,就这么来回进进出出的现象叫抖动。
6. 工作集:要访问的进程的集合