一、虚拟存储器的基本概念
1.常规存储管理方式的特征:一次性、驻留性
2.局部性原理:
程序在执行时常呈现局部性规律,并表现在两个方面
- 时间局部性。如果程序小红放入某条指令一旦执行,则不久以后该指令可能再次执行,如果某数据被访问过,则不久以后该数据可能再次被访问。产生时间局限性的典型原因,是由于在程序中存在着大量的循环操作
- 空间局部性。一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情况便是程序的顺序执行。
3.虚拟存储器的定义及大小计算
1)定义:
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
- 大小计算:
实质:物理上不存在,利用海量外存进行内存“空间”的扩展
逻辑容量:取决于内存容量和外存容量之和
4.虚拟存储器具有的特征:
1)离散性(最基本的特征)
2)多次性
3)对换性
4)虚拟性
5.虚拟存储器的实现方法
1)分页请求系统(页式虚拟存储系统)
(1)=基本分页系统+请求调页功能+页面置换功能
(2)硬件支持:请求分页的页表机制,缺页中断机构,地址变换机构
(3)软件支持:请求分页,页面置换
2)请求分段系统(段式虚拟存储系统)
(1)=基本分段系统+请求调段功能+分段置换功能
(2)硬件支持:请求分段的段表机制,缺段中断机构,地址变换机构
(3)软件支持:请求分段,段的置换
二、请求分页存储管理方式
在基本分页的基础增加了请求调页功能和页面置换功能,形成了能支持虚拟存储功能的请求分页系统,这在计算机技术需要哪些支持?
答:页面机制,缺页中断机构以及地址变换机构
- 硬件上支持:
1)页表机制调整
增加的位作用:地址转换
意义:供程序(数据)在换进,换出时参考
2)缺页中断机构
与其它中断的异同:
- 在指令执行期间产生和处理中断信号
- 一条指令执行期间可能产生多次缺页中断
- 地址变换机构
地址如何完成重定位:
在进行地址变换时,首先去检索快表,试图从中找出所要访问的页。若找到,便修改页表项中的访问位。对于写指令,还需将修改位置成“1”,然后页表项中给出的物理块号和页内地址,形成物理地址。
- 软件上支持:
1)页面置换实现的软件
2)请求调页的软件
- 内存分配
- 最小物理块数的确定:
保证进程正常运行所需的最小物理块数
与硬件结构有关,取决于指令的格式,功能和寻址方式
- 内存分配策略
- 内存分配:
固定分配:为进程分配的物理块数固定不变
可变分配:先为每个进程分配一定数目的物理块,若发生缺页中断,再增加物理块数
- 内存置换:
全局置换:可将系统中任一进程的内存页换出
局部置换:只能将自己的某个内存换出
- 组合出以下三种适用策略:
固定分配局部置换
可变分配全局置换
可变分配局部置换
- 物理块分配算法
- 平均分配算法
- 按比例分配算法
- 考虑优先权的分配算法
- 页面调入策略
1)何时调入页面:
预调页策略:进程首次调入内存时,由程序员指出应该先调入哪些页
请求调页策略:进程运行中发生缺页时,提出请求,由OS将其所需页面调入内存
2)何处调入页面:
请求分页系统将外存分为两部分:
- 文件区(离散分配)
- 对换区(连续分配)
发生缺页请求时,有以下三种情况:
(1)系统拥有足够的对换区空间
(2)系统缺少足够的对换区空间
(3)UNIX方式
- 页面调入过程:
- 若发生缺页,便向CPU发出缺页中断
- 中断处理程序保存CPU环境,转中断处理程序
- 该程序查找页表,得到该页在外存中的块号
- 若内存未满,启动磁盘I/O调入页面;若内存已满,先置换再调入
- 修改页表项内容,并写入快表
- 缺页率
(1)定义以及计算公式:
假设一个进程的逻辑空间为n页,系统为其分配的内存物理块数为m(m≤n)。如果在进程的运行过程中,访问页面成功(即所访问页面在内存中)的次数为S,访问页面失败(即所访问页面不在内存中,需要从外存调入)的次数为F,则该进程总的页面访问次数为A = S + F,那么该进程在其运行过程中的缺页率即为 f=F/A
(2)影响因素:
A.页面大小
B.进程分配的物理块数
C.页面置换算法
D.程序固有特性
- 缺页中断处理时间公式
假设被置换的页面被修改的概率是β,其缺页中断处理时间为ta,被置换页面没有被修改的缺页中断时间为tb,那么,缺页中断处理时间的计算公式为
t =β×ta+(1—β)×tb
三、页面置换算法
1.定义:
通常,把选择换出页面的算法称为页面置换算法
2.“抖动”产生的原因
置换算法的好坏将直接影响系统的性能,不适当的置换算法可能导致系统出现“抖动”现象
3.常用置换算法:
1)最佳置换算法(OPT)
A.基本思想:
淘汰以后永不使用的或未来最长时间内不再被访问的页面
B优缺点:
理论上:缺页率低,性能最佳
实际上:无法预知,实现困难;通常用于评价其他算法的优劣
2)先进先出页面置换算法(FIFO)
A.基本思想:
淘汰最先进入内存的页面,即驻留内存时间最长的页面
B.优缺点:
实现简单
与进程实际运行的规律不相适应,有些页面经常被访问
3)LRU置换算法
A.基本思想:
淘汰在最近一段时间最久未被使用(访问)的页面
B.优缺点:
性能较好
实现较为复杂;设置访问字段;需要硬件支持(配置寄存器或栈)
- LFU置换算法
A.基本思想:
在采用LFU算法时,应为在内存中的每个页面设置一个移位寄存器,用来记录该页面被访问的频率。该置换算法选择在最近时期使用最少的页面作为淘汰页。每次访问某页时,便将该移位寄存器的最高位置1,再每隔一定时间(例如100 ms)右移一次。这样,在最近一段时间使用最少的页面将是∑Ri最小的页。
B.优缺点:
LFU算法并不能真正反映出页面的使用情况,因为在每一时间间隔内,只是用寄存器的一位来记录页的使用情况,因此,访问一次和访问10 000次是等效的
5)Clock置换算法
A.基本思想:
为每页设置一位访问位;
将内存中所有页面链接成一个循环队列,并增设替换成指针;
由页面管理软件周期性地访问所有访问位置0,当某页被访问时,将其访问位置“1”。
6)改进型Clock置换算法
A.基本思想:
(1)从指针所指示的当前位置开始,扫描循环队列,寻找A=0且M=0的第一类页面,将所遇到的第一个页面作为所选中的淘汰页。在第一次扫描期间不改变访问位A
(2)如果第一步失败,即查找一周后未遇到第一类页面,则开始第二轮扫描,寻找A=0且M=1的第二类页面,将所遇到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所有扫描果的页面的访问位置都置0
(3)如果第二步也失败,亦即未找到第二类页面,则将指针返回到开始的位置,并将所有的访问位置复0。然后重复第一步,如果仍失败,必要时再重复第二步,此时就一定能找到被淘汰的页。
B.优缺点
可减少磁盘的I/O操作次数,实现该算法本身的开销将有所增加
- PBA算法
A. 影响页面换进换出效率的若干因素
(1)页面置换算法。
(2)写回磁盘的频率。
(3)读入内存的频率。
B.优缺点:
(1)显著地降低了页面换进、换出的频率,使磁盘I/O的操作次数大为减少,因而减少了页面换进、换出的开销;
(2)正是由于换入换出的开销大幅度减小,才能使其采用一种较简单的置换策略,如先进先出(FIFO)算法,它不需要特殊硬件的支持,实现起来非常简单。
4.Blady奇异
指置换策略不满足随着驻留集的增大,页故障数一定减少的规律。
- ”抖动”与工作集
1.多道程序度与处理机利用率之间矛盾之处以及如何平衡
由于虚拟存储器系统能从逻辑上扩大内存,这时,只需装入一个进程的部分程序和数据便可开始运行,故人们希望在系统中能运行更多的进程,即增加多道程序度,以提高处理机的利用率。
2.产生”抖动”的原因
根本原因:发生“抖动”的根本原因是,同时在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。
3.缺页率与物理块数之间关系以及为何引入工作集
4.工作集定义
所谓工作集,是指在某段时间间隔Δ里,进程实际所要访问页面的集合
5.如何预防”抖动”
1)采取局部置换策略
2)把工作集算法融入到处理机调度中
3)利用“L=S”准则调节缺页率
4)选择暂停的进程
五、请求分段存储管理方式
1.请求分段的基本原理
1)请求段表机制
(1)增加的位:
存取方式
访问字段A
修改位M
存在位P
增补位
外存始址
(2)作用及其意义:
基本作用:地址转换
供程序在调进,调出时参考
2)缺段中断机构
3)地址变换机构
2.分段的共享
1)数据结构: 共享段表的组成
(1)共享进程计数count。
(2)存取控制字段。
(3)段号。
2)共享段表管理机制
(1)共享段的分配
对第一个请求使用该共享段的进程;
对其他调用该共享段的进程;
(2)共享段的回收
当进程不再需要共享时;撤销共享段的表项;执行count=count-1,仅当count=0时,由系统回收共享段的物理内存。
3.分段的保护
1)越界检查
在段表寄存器中放有段表长度信息;同样,在段表中也为每个段设置有段长字段。在进行存储访问时,首先将逻辑地址空间的段号与段表长度进行比较,如果段号等于或大于段表长度,将发出地址越界中断信号;其次,还要检查段内地址是否等于或大于段长,若大于段长,将产生地址越界中断信号,从而保证了每个进程只能在自己的地址空间内运行
- 存取控制检查
在段表的每个表项中,都设置了一个“存取控制”字段,用于规定对该段的访问方式。通常的访问方式有:
(1)只读,即只允许进程对该段中的程序或数据进行读访问。
(2)只执行,即只允许进程调用该段去执行,但不准读该段的内容,也不允许对该段执行写操作。
(3)读/写,即允许进程对该段进行读/写访问。
3)环保护机制
这是一种功能较完善的保护机制。在该机制中规定:低编号的环具有高优先权。OS核心处于0环内;某些重要的实用程序和操作系统服务占居中间环;而一般的应用程序则被安排在外环上。在环系统中,程序的访问和调用应遵循以下规则:
(1)一个程序可以访问驻留在相同环或较低特权环中的数据。
(2)一个程序可以调用驻留在相同环或较高特权环中的服务。