计算机操作系统(慕课版)第六章 虚拟存储器 学习笔记

本文主要是介绍计算机操作系统(慕课版)第六章 虚拟存储器 学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第六章 虚拟存储器
在这里插入图片描述
详读课本的页面置换算法

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页号超过页表长度,缺页中断。

这篇关于计算机操作系统(慕课版)第六章 虚拟存储器 学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/767399

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个