虚拟存储器的基本概念
常规存储器管理方式的特征
一次性:作业在运行前一次性地全部装入内存
驻留性:作业装入内存后,便一直驻留在内存中,直至作业运行结束。
程序执行的特点:
多数情况下仍是顺序执行。
少部分的转移和过程调用指令会使程序执行由一部分区域转至另一部分区域(但研究表明调用深度多数情况下不超过5)
许多由少数指令构成的循环结构会多次执行。
对许多数据结构的处理(如数组)往往局限于很小的范围内。
程序执行的局部性:
时间局部性
空间局部性
主要相同点是都要在内存与外存之间交换信息;
主要区别在于交换技术换出换进一般是整个进程(proc结构和共享正文段除外),因此一个进程的大小受物理存储器的限制;
而虚存中使用的调入调出技术在内存与外存之间来回传递的是存储页或存储段,而不是整个进程,从而使得进程映射具有了更大的灵活性,且允许进程的大小比可用的物理存储空间大的多 。
为了用小的内存实现在大的虚空间中程序的运行目的
基于局部性原理
虚拟存储器管理——由操作系统提供一个比实际内存大的,假想的特大存储器。
虚拟存储器的定义
虚拟存储管理下内存逻辑容量由内存容量和外存容量之和所决定,运行速度接近于内存速度,每位的成本却接近于外存
虚拟存储器的实现
虚拟存储管理:
允许将一个作业分多次调入内存。
若采用连续分配方式,需申请足够空间,再分多次装入,造成内存资源浪费,并不能从逻辑上扩大内存容量。
虚拟的实现建立在离散分配存储管理基础上
方式:请求分页/请求分段系统
细节:分页/段机构、中断机构、地址变换机构、软件支持
虚拟存储器的特征
离散分配方式是基础
多次性:一个作业被分成多次调入内存运行
对换性:允许在作业的运行过程中进行换进、换出。(进程整体对换不算虚拟)
最终体现虚拟性:能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。
产生和处理缺页中断(请求调入)
从内存中换出一页的功能(置换)
内存分配
作业不一次装入,部分装入的情况下如何为进程分配内存,涉及三个问题:
最小物理块数的确定
物理块的分配策略
物理块的分配算法
调页策略
1.何时调入页面
预调页策略
请求调页策略
2.从何处调入页面
在请求分页系统中的外存分为:
对换区:连续存放数据,读写速度较快
文件区:离散分配方式,I/O速度相对慢
3.页面调入过程
页面置换算法-
影响缺页率的主要因素
(1)分配给作业的主存块数:
多则缺页率低,反之则高。
(2)页面大小:
大则缺页率低;反之则高。
(3)页面调度算法:
对缺页中断率影响很大,但不可能找到一种最佳算法。
(4)程序编制方法:
以数组运算为例,如果每一行元素存放在一页中,则按行处理各元素缺页中断率低;反之,按列处理各元素,则缺页中断率高。
驻留集
驻留(常驻)集是指在当前时刻,进程实际驻留在内存当中的页面集合。
防“抖动”