【OS】操作系统课程笔记 第八章 虚拟存储管理

8.1 虚拟存储器

8.1.1 虚拟存储器的定义

1. 虚存定义

通过请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

 2. 优势和应用

  • 用户地址空间可以大于物理内存空间,使得内存可以保存数量较多的进程,提高了并发性;
  • 运行速度接近于内存,而成本又接近外存;
  • 广泛应用于大中小微型计算机中。

8.1.2 虚拟存储器的特点

  • 多次性:一个进程的数据会多次装入内存。
  • 对换性:允许程序在运行过程中从内存换入和换出。
  • 虚拟性:未改变系统中内存物理的大小。

8.2 请求页式分配

8.2.1 请求分配硬件支持

1. 新增多个属性的页表

页号物理块号状态位访问位修改位外存地址
  • 状态位:表明该页是否在外存
  • 访问位:根据访问位来决定淘汰哪一页
  • 修改位:查看此页是否在内存中被修改过
  • 外存地址:该页在外存上的地址,便于调入

2. 缺页中断机构及其特点

如果访问的页不在内存,就产生一个缺页中断。

缺页中断特点
  1. 同样要经历中断步骤
  2. 在指令执行期间产生(和普通中断不同,普通中断是在一条指令结束后才产生)
  3. 恢复执行被中断指令

3. 地址变换机构

和普通的页式存储相同:

8.2.2 内存分配策略

1. 内存分配要考虑的问题

如果分配进程的物理块少,那么内存中进程数越多,进程缺页的可能性就越高;

但是进程分配的物理块超过一定数目后,分配更多物理块对进程缺页率没有影响。

2. 分配置换的三种组合

  • 固定分配局部置换
  • 可变分配局部置换
  • 可变分配全局置换

分析:

准备或运行时,

固定分配
给进程的 每个物理块 分配数量固定,
运行时数量固定,按照分配数量。

可变分配
分配时数量固定,
运行时数量不固定。

缺页时,

局部置换
缺页进程独立,
置换分配给自身的物理块。

全局置换
从操作系统中抠一块给缺页进程;

或者从其他进程抠一块下来,经过外存,又调回给缺页进程。

为什么没有固定分配–全局置换?
因为,固定分配要求自身缺页时,替换自身;不能要求其他进程的置换,与全局置换相悖。

8.3 页面置换算法

有关页面置换的说明:

  • 所需页不在内存,该进程在内存没有可用的块。
  • 不同置换选择会使系统效率有很大不同。
  • 几个算法都采用固定分配局部置换策略。

8.3.1 最优页面置换算法 OPT

算法特点——发生缺页,有两个考虑的顺序:

  • 当前内存中有的页以后不再被访问,置换出去
  • 当前内存中几页都要被访问,选择一个最后用到的页,并把它置换出去

注意:不仅置换,调入页面也算缺页!

7

0

1

2

0

3

0

4

2

3

0

3

2

1

2

0

1

7

0

1

1

7

7

7

2

2

2

2

2

2

7

2

0

0

0

0

4

0

0

0

0

3

1

1

3

3

4

3

1

1

缺页

缺页率:50%

8.3.2 先进先出置换算法 FIFO

置换最先进入内存的页:

7

0

1

2

0

3

0

4

2

3

0

3

2

1

2

0

1

7

0

1

1

7

7

7

2

2

2

4

4

4

0

0

0

7

7

7

2

0

0

0

3

3

3

2

2

2

1

1

1

0

0

3

1

1

1

0

0

0

3

3

3

2

2

2

1

缺页

缺页率:75%

 8.3.3 最近最久使用置换算法 LRU

从缺页的那里开始逆向检查,找到最久之前使用的页面,将其置换掉:

7

0

1

2

0

3

0

4

2

3

0

3

2

1

2

0

1

7

0

1

1

7

7

7

2

2

4

4

4

0

1

1

1

2

0

0

0

0

0

0

3

3

3

0

0

3

1

1

3

3

2

2

2

2

2

7

缺页

缺页率:60%

 8.3.5 时钟算法 Clock

1. 算法流程

需要给每个物理块增加一个附加位,称为使用位u;

当某一页装入内存时,该物理块的使用位设为1,当该物理块被使用时,它的使用位也设为1;

对于页面置换算法,把用于替换的物理块集合看作是一个循环缓冲区,并且有一个指针与之关联;

当需要进行页面置换时,两种考虑:

  • 若指针所指页面u=0,置换它,指针指向下一个;
  • 若指针所指页面u=1,置为0后继续扫描,直到找到一个u=0的物理块。

2. 示意图

左图为页面置换前状态,右图为页面置换后状态:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/154776.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode刷题日记:125. Valid Palindrome(验证回文串)和136. Single Number(只出现一次的数字)

125.Valid Palindrome(验证回文串) 验证一个串之前我们需要对字符串进行处理将空格逗号什么的去掉,然后进行比较,比较的顺序如图所示: 在比较途中如果出现比较结果为假,就提前结束比较,此时我们可以判断这…

贪心 455.分发饼干

455.分发饼干 题目: 小朋友胃口值数组g[i],饼干尺寸数组 s[j],当饼干尺寸s[j]大于等于g[i]的时候,对应小朋友被满足,小朋友每一个最多一块饼干 ,求给定条件下最多被满足的小朋友数量。 思路:…

Homography详解在MVSNet中的应用

Homography(单应性变换)是计算机视觉中的一个重要概念,用于描述两个平面之间的透视关系。在图像处理和计算机视觉中,Homography通常表示两个平面之间的投影关系,这种关系可以通过一个3x3的矩阵来表示。 在数学上&…

hive数仓-数据的质量管理

版本20231116 要理解数据的质量管理,应具备hive数据仓库的相关知识 文章目录 1.理解什么是数据的质量管理:2.数据质量管理的规划数据质量标准的分类 3.数据质量管理解决方案1.ods层的数据质量校验1)首先在hive上建立一个仓库,添加…

实用篇-ES-RestClient查询文档

一、快速入门 上面的查询文档都是依赖kibana,在浏览器页面使用DSL语句去查询es,如何用java去查询es里面的文档(数据)呢 我们通过match_all查询来演示基本的API,注意下面演示的是 match_all查询,也叫基础查询 首先保证你已经做好了…

DTW(Dynamic Time Warping)算法学习应用实践与效率对比分析

DTW(Dynamic Time Warping)算法是一种用于度量两个时间序列之间的相似性的方法。它的构建原理如下: 基本思想:DTW算法通过计算两个时间序列之间的最小距离,来度量它们的相似性。与欧氏距离等传统距离度量方法不同&…

【文末送书——数学经典著作】工科必备的数学思维培养

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

elementplus DateTimePicker 日期范围选择器 设置默认时间范围为当前月的起始时间到结束时间

代码如下&#xff1a; <el-date-pickerv-model"value"type"datetimerange"start-placeholder"Start Date"end-placeholder"End Date":default-time"defaultTime" />const defaultTime: [Date, Date] [new Date(2000…

Ubuntu18.04安装ROS系统+turtle测试

安装 1.设置安装源 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubun…

科技云报道:Citrix正式退出中国市场!国产们谁能真正顶上?

科技云报道原创。 2023年12月3日&#xff0c; Citrix&#xff08;思杰&#xff09;发布的公告将全面生效&#xff0c;中国市场&#xff08;包括香港地区和澳门地区&#xff09;也会停止所有新的交易。 这个消息&#xff0c;无疑是引起了业界的热议&#xff0c;毕竟Citrix可以…

【教3妹学编程-算法题】购买物品的最大开销

3妹&#xff1a;2哥&#xff0c;听说你今天发工资啦&#xff1f; 请我吃饭怎么样&#xff0c;嘿嘿 2哥 : 切&#xff0c;你上周还发工资了呢&#xff0c;也没见你请我吃饭。 3妹&#xff1a;哎呀&#xff0c; 我的工资都用来双11 shopping了&#xff0c; 双11过后我都吃了1周土…

Android Jetpack的组件介绍,常见组件解析

jetpack组件有哪些 Android Jetpack是一个集成Android应用程序组件的一站式解决方案。它使开发人员能够专注于他们的应用程序的真正创新部分&#xff0c;而不会受到Android平台特定的限制。Jetpack组件可分为四个类别&#xff1a; 架构组件&#xff08;Architecture Componen…

C++初阶-模板初阶

模板初阶 一、泛型编程二、函数模板2.1函数模板概念2.2函数模板格式2.3函数模板的原理2.4函数模板的原理2.5模板参数的匹配原则 三、类模板3.1类模板的定义格式3.2类模板的实例化 一、泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left, int& …

IntelliJIDEA快捷键中文版

IntelliJIDEA快捷键中文版&#xff0c;对于Android Studio也适用。官方快捷键链接在此&#xff0c;官方上是英文的&#xff0c;我于2023-11-16下载并翻译成中文&#xff0c;可能翻译不太准&#xff0c;所以英文我都保留下来了&#xff0c;大家可以对比着看&#xff0c;有些英文…

Python语言:面向对象——类与对象初体验

什么是面向对象的编程思想&#xff1f; 我就知道他是一种编程思想&#xff0c;因资历尚浅&#xff0c;没有悟到面向对象的精髓和奥秘所在&#xff0c;只好援引一下chatgpt给我的答案了。 接下来到了分析类与对象的实质是什么了&#xff0c;这个我倒是知道&#xff0c;以下是我的…

用strtok和指针数组构造一个能对字符转进行解析的函数

代码如下 #include<stdio.h> #include<string.h> #include<stdlib.h> int msg_deal(char *msg_src, char *msg_done[],char *str)//返回切割了多少次 {msg_done[0] msg_src;int i 0;while((msg_done[i] strtok(msg_done[i], ",")) && …

OpenVPN服务器搭建与OpenVPN客户端访问

1.服务器搭建: 操作系统 ubuntu 22.04: 安装OpenVPN服务器前先更新系统 2.下载OpenVPN安装脚本: wget https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh 3.给脚本运行权限: chmod +x openvpn-install.sh 4.运行脚本进行OpenVPN服务器…

收集整理微信小程序源码精选8500套(不同行业的源码集合)/带后台+含搭建开发教程

这下面分享的是精心收集整理的微信小程序源码精选8500套&#xff0c;它含有不同行业的源码集合&#xff0c;带后台&#xff0c;而且含搭建开发教程。可以转存起来&#xff0c;需要的时候直接搜索关键词查找就行了&#xff0c;方便得很。 很多伙伴学习小程序不知怎么开始&#…

轻松预览:Axure RP在线原型展示指南,快速掌握!

当UI设计师想要提供功能和细节丰富的原型时&#xff0c;可以使用原型设计工具预览Axure原型。原型设计工具Axurerp作为线框图和原型制作工具的创始人&#xff0c;功能非常强大。取代Axure的国产原型设计工具即时设计&#xff0c;界面布局清新&#xff0c;非常适合复杂的原型设计…