本文主要是介绍计算机操作系统(慕课版)第六章 虚拟存储器 学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第六章 虚拟存储器
详读课本的页面置换算法
6.1.1 虚拟存储器概述
常规存储管理方式的共同点:
要求一个作业全部装入内存后方能运行。
问题:
(1)有的作业很大,所需内存空间大于内存总容量,使作业无法运行。
(2)有大量作业要求运行,但内存容量不足以容纳下所有作业,只能让一部分先运行,其它在外存等待。
解决方法 (1)增加内存容量(昂贵)。
(2)从逻辑上扩充内存容量
----覆盖
----对换
----虚拟存储器
1.常规存储器管理方式的特征
(1)一次性:作业在运行前需一次性地全部装入内存。
(2)驻留性:作业装入内存后,便一直驻留内存,直至作业运行结束。
是否有必要,可否打破呢?
2.局部性原理
指程序在执行时呈现出局部性规律,即在一较短时间内,程序的执行仅限于某个部分,相应地,它所访问的存储空间也局限于某个区域。
局部性又表现为时间局部性(由于大量的循环操作,某指令或数据被访问后,则不久可能会被再次访问)和空间局部性(如顺序执行,指程序在一段时间内访问的地址,可能集中在一定的范围之内)。
6.1.2 虚拟存储器的定义与特征
虚拟存储器就是一个地址空间,且具有比实存大得多的虚容量,能从逻辑上对内存容量进行扩充。
特征:
1、多次性:多次性是虚拟存储器最重要的特征。指一个作业被分成多次调入内存运行。
2、对换性:对换性指允许在作业运行过程中进行换进、换出。换进、换出可提高内存利用率。
3、虚拟性:虚拟性是指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。虚拟性是虚拟存储器所表现出来的最重要的特征,也是实现虚拟存储器最重要的目标。
注:虚拟性以多次性和对换性为基础,而多次性和对换性又是以离散分配为基础。
虚拟存储器的容量
一个虚拟存储器的最大容量是由计算机的地址结构确定的。如:若CPU的有效地址长度为32位,则程序可以寻址范围是0~(2^32)-1 ,即虚存容量为 4GB。
虚拟存储器的容量与主存的实际大小没有直接的关系,而是由主存与辅存的容量之和所确定。
6.1.3 虚拟存储器的实现方法
1、分页请求系统
在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储器系统。
(1)硬件支持:
请求分页的页表机制
缺页中断机构
地址变换机构
(2)软件:
请求调页功能和页置换功能的软件。
2、请求分段系统
在分段系统的基础上,增加了请求调段功能及分段置换功能,所形成的段式虚拟存储器系统。
(1)硬件支持:
请求分段的段表机制
缺段中断机构
地址变换机构
(2)软件:
请求调段功能和段置换功能的软件
6.2 请求式分页存储管理
请求式分页也称虚拟页式存储管理
与纯分页存储管理不同,请求式分页管理系统在进程开始运行之前,不是装入全部页面,而是装入一个或多个页面,之后根据进程运行的需要,动态装入其它页面;当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面。
6.2.1 请求分页中的硬件支持
1、请求页表机制
(1)状态位P:指示该页是否已调入内存。
(2)访问字段A:记录本页在一段时间内被访问的次数或最近未被访问的时间。
(3)修改位M:表示该页在调入内存后是否被修改过。若修改过,则换出时需重写至外存。
(4)外存地址:指出该页在外存上的地址。
2、缺页中断机构
在请求分页系统中,当访问的页不在内存,便产生一缺页中断,请求OS将所缺页调入内存空闲块,若无空闲块,则需置换某一页,同时修改相应页表表目。
缺页中断与一般中断的区别:
在指令执行期间产生和处理中断信号
一条指令在执行期间,可能产生多次缺页中断(如图6-2所示的例题缺页6次)
3、地址变换机构
地址变换例题
某虚拟存储器的用户空间共有32个页面,每页1KB,主存16KB。假定某时刻系统为用户的第0、1、2、3页分别分配的物理块号为5、10、4、7,试将虚拟地址0A5C和093C变换为物理地址。
解:虚拟地址为:页号(2的5次方=32)5位 页内位移(2的10次方=1024)10位;物理地址为:物理块号(2的4次方=16)4位 块内位移(2的10次方=1024)10位
虚拟地址OA5C对应的二进制为: 00010 1001011100
即虚拟地址OA5C的页号为2,页内位移为1001011100,由题意知对应的物理地址为:0100 1001011100即125C
6.2.2 请求分页中的内存分配
在请求分页系统中,为进程分配内存时,将涉及以下三个问题:
最小物理块数的确定
物理块的分配策略
物理块分配算法
1.最小物理块数指能保证进程正常运行所需的最小的物理块数,与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式。
2、物理块的分配策略
(1)固定分配局部置换:为每个进程分配固定数目n的物理块,在整个运行中都不改变。如出现缺页,则从中置换一页。
(2)可变分配全局置换:分配固定数目的物理块,但OS自留一空闲块队列,若发现缺页,则从空闲块队列中分配一空闲块与该进程,并调入缺面于其中。当空闲块队列用完时,OS才从内存中任选择一页置换。
(3)可变分配局部置换:分配一定数目的物理块,若发现缺页,则从该进程的页面中置换一页,根据该进程缺页率高低,则可增加或减少物理块。
3、物理块分配算法
在采用固定分配策略时,将系统中可供分配的所有物理块分配给各个进程,可采用以下几种算法:
(1)平均分配算法:平均分配给各个进程。
(2)按比例分配算法:根据进程的大小按比例分配给各个进程。
如果系统中共有n个进程,每个进程的页面数为Si,系统中可用的物理块总数为m,则系统中各进程页面数的总和为:
每个进程所能分到的物理块数为
(3)考虑优先权的分配算法:将系统提供的物理块一部分根据进程大小先按比例分配给各个进程,另一部分再根据各进程的优先权适当增加物理块数。
6.2.3 页面调入策略
调入策略决定什么时候将一个页面由外存调入内存,从何处将页面调入内存。
1.何时调入页面
预调页策略:将那些预计在不久便被访问的页预先调入内存。这种调入策略提高了调页的效率,减少了I/O次数。但由于这是一种基于局部性原理的预测,若预调入的页面在以后很少被访问,则造成浪费,故这种方式常用于程序的首次调入。
请求调页策略:当进程运行中访问的页出现缺页时,则发出缺页中断,提出请求调页,由OS将所需页调入内存。这种策略实现简单,应用于目前的虚拟存储器中,但易产生较多的缺页中断,且每次调一页,系统开销较大,容易产生抖动现象。
2.从何处调入页面
在请求分页系统中,通常将外存分成了文件区和对换区,文件区按离散分配方式存放文件,对换区按连续分配方式存放对换页。
对换区:系统有足够的对换区空间,运行前可将与进程相关的文件从文件区复制至对换区,以后缺页时,全部从对换区调页。
6.2.3 页面调入策略
1 查找所需页在磁盘上的位置。
2 查找一内存空闲块:
- 如果有空闲块,就直接使用它;
- 如果没有空闲块,使用页面置换算法选择一个“牺牲”内存块;
- 将“牺牲”块的内容写到磁盘上,更新页表和物理块表。
3 将所需页读入(新)空闲块,更新页表。
4 重启用户进程。
4. 缺页率
访问页面成功(在内存)的次数为S
访问页面失败(不在内存)的次数为F
总访问次数为A=S+F
缺页率为 f= F/A
影响因素:页面大小、分配内存块的数目、页面置换算法、程序固有属性
缺页中断处理的时间算法(被置换的页面修改概率为β,缺页中断处理时间ta,被置换页面没有被修改缺页中断时间tb)
t = β×ta + (1- β)×tb
6.3 页面置换算法
页面置换:找到内存中没有使用的一些页,换出
算法:替换策略
性能 :找出一个导致最小缺页数的算法
页面置换完善了逻辑内存和物理内存的划分——在一个较小的物理内存基础之上可以提供一个大的虚拟内存。
页面置换算法
最佳置换算法(OPT)
先进先出置换算法(FIFO)
最近最久未用置换算法(LRU)
最少使用算法(LFU)
Clock置换算法
页面缓冲算法
6.3.1 最佳置换算法(OPT)
淘汰原则:被置换的页将是之后最长时间不被使用的页
2 先进先出(FIFO)页面置换算法
淘汰原则:总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰
**课本上的图出现了错误,最后三个错位!!!**这里修正了
先进先出置换算法例题
1、假定系统为某进程分配了3个物理块,进程运行时的页面走向为 1,2,3,4,1,2,5,1,2,3,4,5,开始时3个物理块均为空,计算采用先进先出页面淘汰算法时的缺页率?(9/12)
> 2、假定系统为某进程分配了4个物理块,进程运行时的页面走向为 1,2,3,4,1,2,5,1,2,3,4,5,开始时4个物理块均为空,计算采用先进先出页面淘汰算法时的缺页率?(10/12)
> 3、假定系统为某进程分配了5个物理块,进程运行时的页面走向为 1,2,3,4,1,2,5,1,2,3,4,5,开始时3个物理块均为空,计算采用先进先出页面淘汰算法时的缺页率?(5/12)
先进先出算法存在一种异常现象,即在某些情况下会出现分配给的进程物理块数增多,缺页次数有时增加,有时减少的奇怪现象,这种现象称为Belady现象。(产生这种现象的原因在于它根本没有考虑程序执行的动态特征
)
3 最近最久未使用(LRU)置换算法
淘汰原则:选择最后一次访问时间距离当前时间最长的一页并淘汰之。即淘汰没有使用的时间最长的页。
该算法的出发点:如果某个页面被访问了,则它可能马上还要访问。
该算法的性能最接近于最佳算法,但实现起来较困难。
因为要找出所有最近最久未使用的页面,这将使系统的开销加大,所以在实际系统中往往使用该算法的近似算法。
4 Clock置换算法
LRU的近似算法,又称最近未用(NRU)或二次机会页面置换算法
每个页都与一个访问位相关联,初始值位0
当页被访问时置访问位为1
置换时选择访问位为0的页;若为1,重新置为0
5 改进型Clock置换算法
淘汰时,同时检查访问位A与修改位M
第1类(A=0, M=0): 表示该页最近既未被访问,又未被修改,是最佳淘汰页。
第2类(A=0, M=1):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。
第3类(A=1, M=0):最近已被访问,但未被修改,该页有可能再被访问。
第4类(A=1, M=1): 最近已被访问且被修改, 该页可能再被访问。
6.3.5 访问内存的有效时间
请求分页管理方式内存有效访问时间:访问快表时间λ、访问物理内存时间t、缺页中断的处理时间ε、f为缺页率。
1)页表在快表中,块在内存中
EAT=λ+t
2)页表在内存中,块在内存中
EAT=2×(t+λ)
查找快表、查找页表、修改快表、访问内存
3)块不在内存
不考虑缺页率
EAT = λ + t + ε + λ + t = ε + 2(λ + t)
考虑缺页率
EAT = t + f ×(ε + t) + (1- f) × t
抖动部分见考试题目再下手
6.5 请求分段式存储管理方式
请求分段存储管理系统与请求分页存储管理系统一样,为用户提供了一个比内存空间大得多的虚拟存储器。
通过调段功能,置换功能将暂时不用的分段换出到外存,以便腾出内存空间。
1.段表机制
存取方式:存取属性(执行、只读、允许读/写)
访问字段A:记录该段被访问的频繁程度
修改位M:表示该段在进入内存后,是否被修改过。
存在位P:表示该段是否在内存中。
增补位:表示在运行过程中,该段是否做过动态增长。
外存地址:表示该段在外存中的起始地址。
2.缺段中断机构
在指令执行期间产生和处理中断信号
一条指令在执行期间,可能产生多次缺段中断
由于段不是定长的,对缺段中断的处理要比对缺页中断的处理复杂
3 地址变换机构
练习题
若在一分页存储管理系统中,某作业也表如下所示,一直页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转化为相应物理地址
(1)对于逻辑地址1011,p=int(1011/1024)=0,d=1011mod1024=1011,查页表第0页在第2块,所以物理地址为1024^2+1011=3059
(2)2148 p=2 d=100第2页第1块物理地址1024+100=1124
(3)p=3 d=928第三页第六快物理地址1024*6+928=7072
(4)p=4 d=916页号超过页表长度,缺页中断。
这篇关于计算机操作系统(慕课版)第六章 虚拟存储器 学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!