操作系统第六章笔记

第六章

虚拟存储技术概述

常规存储器管理方式的特征和局部性原理

常规存储器管理方式的特征

一次性:作业必须一次性全部装入内存后才能开始运行
驻留性:装入的作业一直驻留在内存中

导致结果:

  • 作业大的无法运行
  • 程序中不用的或暂时不用的程序数据占据大量空间
  • 仅有少数作业能够运行

局部性原理

局部性原理:指程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址分别局限于一定区域

时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短时期内
空间局部性:当前指令和邻近的几条指令,当前访问的数据和邻近的数据都集中在一个较小区域内

局部性原理的具体实现

  • 程序在执行时,大部分是顺序执行的指令,少部分是转移和过程调用指令
  • 过程调用使程序的执行由一部分区域转到另一部分区域。过程调用的嵌套深度一般不超过5,因此执行的范围不超过这组嵌套的过程
  • 程序中存在相当多的循环结构,它们由少量指令组成,而被多次执行
  • 程序中存在很多对一定的数据结构的操作,如数组操作,但往往局限在较小范围内

虚拟存储的基本原理

在程序装入时,不用将全部读入到内存,只需要将当前执行的部分页或段读入到内存,就可开始执行程序
执行过程中,如果需执行的指令或访问的数据未在内存(称为缺页或缺段),则由处理器通知OS将相应的页或段调入到内存,然后继续执行程序
另一方面,操作系统将内存中暂时不使用的页或段调出保存在外存上,腾出空间存放将要装入的程序以及将要调入的页或段

虚拟存储器的定义与特征

虚拟存储器的定义

具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的存储器系统,其逻辑容量由内存容量和外存容量之和决定,其运行速度接近于内存速度

虚拟存储器的特征

多次性:一个作业允许分成多次调入内存,是虚拟存储器最重要的特征,是任何其他存储管理方式所不具有的(不连续性)
对换性:暂时不用的代码调出,需要时再调入。对换技术(部分对换)
虚拟性:从逻辑上扩充内存容量,使用户看到的内存容量大于实际内存容量,是虚拟存储器的重要的目标(大空间)

这些扩充内存的技术都是CPU时间和外存空间换取的内存空间,资源转换技术
虚拟性是以多次性和对换性为基础的,多次性和对换性以离散分配为基础

虚拟存储器的实现方法

虚拟存储器的实现建立在离散管理的基础之上

请求分页系统

  • 在分页系统的基础上增加请求调页功能和置换页面功能所形成的页式虚拟存储器系统、置换时以页面为单位
  • 硬件支持:请求分页的页表机制、缺页中断机构、地址变换机构
  • 软件支持

请求分段系统

  • 在分段系统的基础上增加请求调段功能和分段置换功能所形成的段式虚拟存储器系统
  • 请求分段的段表机制、缺段中断机构、地址变换机构
  • 软件支持

引入虚拟存储技术的好处

大程序:可在较小的可用内存中执行较大的用户程序
大的用户空间:提供给用户可用的虚拟内存空间通常大于物理内存
并发:可在内存中容纳更多程序并发执行
易于开发:不会影响编程时的程序结构

请求分页存储管理方式

请求分页中的硬件支持

基本思想:

  • 请求分页建立在基本分页的基础之上,增加了请求调页和页面置换功能
  • 每次调入调出的基本单位都是长度固定的页面
  • 在进程开始运行之前,不是装入全部页面,而是装入几个或零个页,之后根据进程运行的需要,动态装入其它页
  • 当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页,以便装入新的页

请求页表机制

请求页表作业:将用户地址空间中的逻辑地址映射为内存空间的物理地址
在这里插入图片描述

  • 状态位P:存在位,仅有一位。用来表示该页是否已经装入内存;
  • 访问字段A:记录此页在一段时间被访问的次数,可用来决定淘汰哪页(由不同的算法决定)
  • 修改位M:标识该页是否在调入内存后被修改过,保证外存中所保留的副本始终是最新的,供页面置换时参考
  • 外存地址:该页在外存上的位置,通常是物理块号

缺页中断机构

程序在执行时,首先检查页表,当状态位指示该页不在主存时,则引起一个缺页中断发生,其中断执行过程与一般中断相同

  • 保护现场(CPU环境)
  • 中断处理(中断处理程序装入页面)
  • 恢复现场,返回断点继续执行
缺页中断与一般中断的差别

相同点:

  • 都是中断。需要保护现场、中断处理、恢复现场
    不同点:
  • 一般中断是一条指令完成后中断,缺页中断是一条指令执行时中断
  • 一条指令执行时可能产生多个缺页中断。如指令可能访问多个内存地址,这些地址在不同的页中

地址变换过程

在地址映射过程中,在页表中发现所要访问的页不在内存,则产生缺页中断。
操作系统接到此中断信号后,就调出缺页中断处理程序,根据页表中给出的外存地址,准备将该页调入内存
此时应将缺页的进程挂起(调页完成唤醒)
如果内存中有空闲块,则分配一个块,将要调入的页装入该块,并修改页表中相应页表项的状态位及相应的内存块号
若此时内存中没有空闲块,这要淘汰某页(若被淘汰页在内存期间被修改过,则要将其写回外存)
操作系统第六章笔记_第1张图片

请求分页中的内存分配

最小物理块数的确定

最小物理块:能保证进程正常运行所需的最小物理块数
进程应获得的最小物理块数,与硬件结构无关,取决于指令的格式、功能和寻址方式

内存分配策略

固定分配策略和可变分配策略
全局置换策略和局部置换策略

物理块的分配策略
固定分配+局部置换

  • 为每个进程分配一组固定数目的物理块,在运行期间不变
  • 缺页时只能从本进程的n个物理块中选择一个用于换出再调入一页,保证分配给该进程的内存空间不变
  • 困难:很难确定为每个进程分配多少个物理块
    操作系统第六章笔记_第2张图片

可变分配+全局置换

  • 先为每个进程分配一定数目的物理块,OS也保持一个空闲物理块队列,当进程缺页时,由系统从空闲物理块队列中取一个分配给该进程
  • 当系统空闲物理块队列用完,OS从内存中按某算法选出一页调出,可能任一进程中的页
    操作系统第六章笔记_第3张图片

可变分配+局部置换

  • 为每个进程分配一定数目的物理块,当缺页时,只允许从该进程在内存的页面选出一页调出
  • 如进程在运行中频繁发生缺页中断,则系统会为该进程分配若干附加的物理块,直至缺页率减少到适当程度操作系统第六章笔记_第4张图片

物理块的分配算法(初始分配)

  • 平均分配:所有可供分配的物理块平均分配给各进程
  • 按比例分配:根据进程的大小按比例分配物理块,按照进程的页面数
    • S为所有进程的页面数总和,Si为i这个进程的页面数
    • bi为每个进程能分到的物理块数,m为系统的物理块总数
    • bi=Si/S*m
  • 考虑优先权分配:为紧急作业分配较多的物理块。通常方法是把内存中可供分配的物理块分成两部分:一部分按照比例分配给各进程,另一部分根据优先权分配,为高优先权适当增加相应份额

页面调入策略

何时调入页面

调入策略确定在外存中页面的调入时机。在页式虚拟管理中有两种常用策略

  • 请求调页:只调入发生缺页时所需的页面,请求调入的页面一定会被访问,这种策略每次仅调入一页
    • 优点:容易实现
    • 缺点:对外存I/O次数多,开销较大
  • 预调页:以预测为基础的预调页策略,将那些预计在不久以后便会被访问的页面预先调入内存。在发生缺页需要调入某页时,一次调入该页以及相关的几个页(工作集)
    • 优点:提高调页的I/O效率
    • 缺点:基于预测,若调入的页在以后很少被访问,则效率低,预调的成功率仅有50%

何处调入页面

有足够的交换区:进程装入时,将其全部页面复制到交换区,以后总是从交换区调入

  • 执行时调入速度快
  • 要求交换区空间较大

缺少足够的对换区:凡是不会被修改的页面,都直接从文件区读入,而被置换时不需调出;会被修改的页面,被置换时调出到交换区。以后从交换区调入,节省交换区空间

UNIX方式:由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都应从文件区调入。而对于曾经运行过但又被换出的页面,由于被放在对换区,因此在下次调入时,应从对换区调入

如何调入页面

所要访问的页面不在内存(存在位0),向CPU发出缺页中断
中断处理程序保留CPU环境分析中断原因转入中断处理程序
中断处理程序查找页表得到该页的外存物理块

  • 若内存能容纳新页则启动磁盘IO将所缺之页调入内存,修改页表
  • 若内存满则按照某种页面置换算法从内存中选出某页换出(若该页未被修改过则不必写回磁盘;若该页被修改过则必须写回磁盘),再把所缺的页调入内存中,修改其页表项,同时将其写入快表
  • 整个页面调入过程对用户是透明的

缺页率

f=F/A
F:访问页面失败的次数
A:访问页面成功与访问页面失败的次数之和

缺页率受以下几个因素影响:

  • 页面大小
  • 进程所需物理块数
  • 页面置换算法
  • 程序固有特性

页面置换算法

功能:需要调入页面时,选择内存中哪个物理页面被置换
目标:把未来不再使用的或短期内较少使用的页面调出,通常只能在局部性原理指导下依据过去的统计数据进行预测

不适当的算法可能会导致进程发生抖动
一个好的页面置换算法应该具有较低的页面更换频率

最佳页面算法(OPT)

选择“未来永不再使用的”或“在最长时间内不再被访问的”“在离当前最远位置上出现的”页面被置换
是一种理想情况,实际执行中是无法预知的,因而不能实现
“最佳”是指对于任意的内存固定空间m和程序p,缺页中断率最小
它是一个理论上的算法,可用作其他算法性能评估的依据
操作系统第六章笔记_第5张图片
采用最佳置换算法,只发生了6次页面置换,发生了9次缺页中断,缺页率=9/21

先进先出页面置换算法(FIFO)

置换原理:选择建立最早的页面被置换(选择在内存中驻留时间最久的页面予以淘汰)。可以通过链表来表示各页的建立时间先后
特点:性能较差。较早调入的页往往是经常被访问的页,这些页在FIFO算法下被反复调入和调出产生异常现象
操作系统第六章笔记_第6张图片
一共发生了12次页面置换,比最佳置换算法多了1倍,缺页率=15/21=3/4,15次页面中断

FIFO是根据各个页面调入内存的时间来选择被淘汰页面,但页面调入的先后不能反映页面的使用情况。

  • FIFO算法未考虑到程序的动态特性
  • 可能引起异常
练习1

操作系统第六章笔记_第7张图片
操作系统第六章笔记_第8张图片
操作系统第六章笔记_第9张图片
m=3时,缺页中断9次
m=4时,缺页中断10次

FIFO页面淘汰算法会产生异常现象(Belady现象)即:当分配给进程的物理块数增加时,缺页次反而增加

FIFO的Belady现象

Belady现象:采用FIFO算法时,如果对一个进程未分配它所要求的全部页面,有时就会出现分配的块数增多,缺页率反正提高的异常现象
Belady现象的描述:一个进程P要访问M个页,OS分配N个内存页面给进程P;对于一个访问序列S,发生缺页数为PE(S,N)。当N增大时,PE(S,N)时而增大,时而减少
Belady现象的原因:FIFO算法的置换特征与进程访问内存的动态特征是矛盾的,即被置换的页面并不是进程不会访问的

最近最久未使用置换算法

基本思想:基于程序的局部性原理,在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用,反之,已经很久没有使用的页面很有可能在未来较长一段时间内不会使用,因此,在缺页时:
置换原理:选择最后一次访问时间距离当前时间最长的一页并淘汰,即淘汰没有使用的时间最长(最近最久未使用)的页

特点:

  • 局部性原理的合理近似,性能接近最佳置换算法
  • 实现代价很高(软件方法或硬件方法)
    浮动操作系统第六章笔记_第10张图片
    发生了9次页面置换
    缺页率:12/21
练习2

操作系统第六章笔记_第11张图片
操作系统第六章笔记_第12张图片
操作系统第六章笔记_第13张图片

操作系统第六章笔记_第14张图片
操作系统第六章笔记_第15张图片
操作系统第六章笔记_第16张图片

影响缺页次数的因素

  • 页置换算法
  • 分配给进程的物理块数
  • 页本身的大小
  • 程序的编制方法
    操作系统第六章笔记_第17张图片

LRU的实现方法——硬件方法

寄存器:为每个在内存中的页面配置一个移位寄存器,表示为:在这里插入图片描述
当进程访问某物理块时,要将相应的寄存器的Rn-1位置为1
定时信号将每隔一定时间将寄存器右移一次,把n位寄存器的数看作一个无符号的整数,最近最久未使用的页面就对应着具有最小数值的寄存器

LRU的实现方法——软件方法

栈:栈中存放当前内存中的页面号,每当访问一页时就调整一次堆栈,总是使最近访问的那页的页面号保持在栈顶,然后根据当前被访问时间的近远,依次排列,栈底总是最近最久未使用的那页的页面号(被淘汰)

最少使用置换算法(LFU)

原理:

  • 选择到当前时间为止被访问次数最少的页面被置换;
  • 每页设置访问计数器(移位寄存器),用来记录该页面被访问的频率
  • 发生缺页中断时,淘汰计数值最小的页面,并将所有计数清零

轮转算法(Clock)

也称最近未使用算法(NRU),它是LRU和FIFO的折中

  • 每页有一个使用访问位(use),若该页被访问则置use=1。将内存中所有页面都通过链接指针链称一个循环队列
  • 置换时采用一个指针,从当前指针位置开始按地址先后检查各页,若页的use=0,则该页被置换
  • 若页的use=1,则修改use,置为0,暂不换出,给予该页第二次驻留内存的机会,再按照FIFO算法检查下一个页面,最后指针停留在被置换页的下一页

改进的轮转算法

选中某页淘汰时,若该页被修改过,需要先写入外存,再调入所需页。若未被修改,则可直接调入

改进的Clock算法淘汰页时,选中最近未使用且未修改的页淘汰

该算法需要使用页表中的访问位A和修改位M

  • A=0M=0:未被访问未被修改
  • A=0M=1:未被访问已被修改
  • A=1M=0:被访问未被修改
  • A=1M=1:被访问被修改

在进行页面置换时,需要同时检查访问位和修改位,以确定该页是四类页面中的哪一种,执行过程可分成以下三步:

  • 从指针所指示的当前位置开始,扫描循环队列,寻找A=0且M=0的第一类页面,将所遇到的第一个页面作为所选中的淘汰页,在第一次扫描期间不改变访问位A
  • 如果第一步失败,即查找一周后未遇到第一类页面,则开始第二轮扫描,寻找A=0且M=1的第二类页面,将所遇到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所有扫描过的页面的访问位都置0
  • 如果第二部也失败,未找到第二类页面,则将指针返回到开始的位置,并将所有的访问位复0。然后重复第一步,如果仍失败,必要时在重复第二步,此时一定能找到被淘汰的页

该算法与简单Clock算法比较,可减少磁盘的I/O操作次数
为了找到要淘汰的页面,可能需要经过几轮扫描,使该算法本身的开销有所增加

抖动产生的原因和预防方法

不适当地提高多道程序并发度,不仅不会提高系统吞吐量,反而会出现“抖动”现象,就是刚被换出页很快就要被访问,需重新调入,因此在调入前要先选一页调出;而这个刚被换出的页,很快又要被访问,又要将它调入,如此频繁地更换页面,以致一个进程在运行时,把大部分时间花费在页面置换的工作上,我们称该进程发生了“抖动”

抖动产生的原因

  • 调度程序一旦发生CPU的利用率降低,就立即提高多道程序度,引入新的进程参加运行,以提高CPU的利用率
  • 当新进程进入内存时,由于空闲物理块队列中的物理块都用完了,只能从其它运行进程处去获得物理块,于是又将进一步加剧了另外一些进程的缺页情况,又使等待页面调入/调出的进程数目增多,这又降低了CPU的利用率
  • 那么为了提高CPU的利用率,调度程序又去引入新的进程,这就产生了恶性循环,使缺页率急剧地上升,这时候,运行进程的大部分时间都用于进行页面的换入/换出,几乎不能完成任何有效的工作,我们称这时的进程是处于“抖动”状态
    操作系统第六章笔记_第18张图片
    导致上述的原因有:
    • 页面置换算法不合理
    • 分配给进程的物理页面数太少
    • 多道程序的度

抖动的预防

  • 采用局部置换策略
  • 把工作集算法融入到处理机调度中
  • 利用L=S准则调度缺页率
  • 选择暂停的进程

请求分段存储管理方式

请求段表内容

在这里插入图片描述
存在位:在不在内存
修改位:是否修改过
访问字段:记录被访问的次数
外存地址
存取方式(权限位):用于标识本分段的存取属性是只执行、只读、还是允许读/写
增补位:这是请求分段式管理中特有的字段,用于表示本段在运行过程中,是否进行过动态增长

缺段中断处理

检查内存中是否有足够的空闲空间

  • 若有,则装入该段,修改有关数据结构,中断返回
  • 若没有,检查内存中空闲区的总和是否满足要求,是则应采用紧凑基础,转为有足够的空闲空间
    否则淘汰一个(些)段,转为有足够的空闲空间
    分段是信息的逻辑单位,不会出现一条指令被分割在两个分段中,或者一组信息被分割在两个分段中的情况。
    一条指令执行期间,可能产生多次缺段中断
    操作系统第六章笔记_第19张图片

操作系统第六章笔记_第20张图片

分段共享与保护

共享段表

操作系统第六章笔记_第21张图片
在系统中配置一张共享段表,每个共享段在共享段表中都有一个表项,记录共享段的段号、段长、内存始址、存在位等,以及共享这个分段的每个进程的情况

共享进程计数count:整型变量count是为了记录有多少个进程需要共享该分段
存取控制字段
段号:对于同一个共享段,不同的进程可用不同的段号去共享该段

共享段的分配与回收

共享段的分配

第一个进程:分配内存空间,调入共享段,进程的段表加一该共享段的表项,在共享段表中加一个表项,置count=1
以后的进程:在调用进程的段表增加一该共享段的表项,填写该共享段的物理地址;在共享段表中增加一个表项,添加该进程的有关内容,置count=count+1

共享段的回收

count-1=0:取消进程段表中有关共享段的表项,回收物理内存,取消共享段表中有关共享段得到相应表项。
count-1!=0:取消进程段表中有关共享段的表项,取消共享段表中有关该进程的相应内容

分段保护

在分段系统中,各个分段在逻辑上是独立的,因此信息保护也是比较容易实现的。一般采用以下方法来进行分段保护

  • 越界检查
    • 段表:段长
    • 段表寄存器:段表长度
  • 存取控制检查
    • 在段表的每个表项中,都设置了一个“存取控制”字段来规定对该段的访问方式

通常的访问方式有:
(1)只读:只允许读访问
(2)只执行:只允许执行,不允许读,也不允许写
(3)读/写: 允许进程读写访问

环保护

处理器状态分为多个环,分别具有不同的存储访问特权级别,通常是级别高的在内环(如OS核心),编号最小(0环),级别最高
规则:程序可访问同环或更低级别环(外环)的数据;可调用同环或更高级别环(内环)的服务
操作系统第六章笔记_第22张图片

你可能感兴趣的:(笔记,操作系统)