操作系统——虚拟存储器(含思维导图)

news2024/12/29 10:47:34

        本教材为中国铁道出版社——操作系统(第四版)刘振鹏、张明、王煜著。本篇文章为第六章复习。

目录

思维导图:

​编辑一、虚拟存储器

1.理论基础

2.定义

二、分页虚拟存储管理

1.基本原理

2.缺页中断

3.页面置换 

(1)最佳置换算法OPT

(2)先进先出算法FIFO

(3)最近最久未使用算法LRU

(4)简单Clock置换算法

(5)改进Clock置换算法

4.内存分配策略

物理块的分配策略:

物理块分配算法:

5.调页策略

6.抖动问题

定义

产生抖动的原因

工作集/驻留集

预防抖动的方法:

三、分段虚拟存储管理


思维导图:

本文思维导图如下(本片将按照思维导图顺序展开):

一、虚拟存储器

1.理论基础
  1. 时间局部性
  2. 空间局部性
2.定义

         所谓虚拟存储器是指仅把程序的一部分装入内存便可运行程序的存储器系统。具体地说,虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。

二、分页虚拟存储管理

1.基本原理

        分页虚拟存储管理方式是在分页系统的基础上增加了请求调页功能和页面置换功能所形成的虚拟存储器系统。

2.缺页中断

缺页中断是异常的一种。它可以在指令执行期间产生和处理中断信号(一般的中断执行在一条指令结束下一条指令开始时)。它可以一条指令执行期间可能会产生多次中断。 

 例如 

如图所示:执行copy A to B 指令要经历6次缺页中断。

3.页面置换 
(1)最佳置换算法OPT

        其淘汰的界面将是以后永不使用或是在最长时间内不再被访问的页。这种算法是无法实现的,可以作为其他界面的衡量标准。

(2)先进先出算法FIFO

        每次淘汰最先进入内存的页。这种算法很简单,易于实现。但是效率不高,容易出现"Belady现象“

"Belady现象“

        即当物理内存的大小增加时,进程发生缺页中断的次数反而会增加。

        在FIFO算法中,被置换出去的页面是最早进入内存的页面,而没有考虑到这些页面在未来是否可能再次被访问。因此,当物理内存增加时,可能会将一些未来需要访问的页面过早地置换出去,导致缺页中断次数增加。

示例说明

        假设有一个页面访问序列为1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3,7, 6, 3, 2, 1, 2, 3, 6。当内存块数量分别为3和4时,使用FIFO算法进行页面置换的缺页次数可能会发生变化。尽管增加了内存块数量(从3增加到4),但由于页面访问序列的特性,可能会出现更多的缺页次数。

(3)最近最久未使用算法LRU

        最近最久未使用算法淘汰在最近一段时间里最少使用的一页。有两种实现方式,需要通过特定硬件:位移寄存器 / 特殊栈  代价较高

(4)简单Clock置换算法

        给每个内存页面设置一个访问位,用于记录页面是否被访问过。当某页被访问时,其访问位置为1;如果该页之后未被访问,则其访问位保持为0。当需要置换页面时,算法会循环查找首个访问位为0的页面进行置换。如果在查找过程中遇到访问位为1的页面,则将其访问位重置为0,并继续查找。

(5)改进Clock置换算法

在简单Clock算法上还考虑了置换代价这个因素。设置了访问位A和修改位M。

  1. A=0, M=0:表示该页最近既未被访问,又未被修改。这是最佳淘汰页,因为置换它时既不需要考虑访问历史,也不需要写回磁盘。

  2. A=0, M=1:表示该页最近未被访问,但已被修改。这类页面在置换时需要将内容写回磁盘,因此不是首选淘汰页。

  3. A=1, M=0:表示该页最近已被访问,但未被修改。这类页面有可能再次被访问,且置换时不需要写回磁盘,因此可以保留在内存中。

  4. A=1, M=1:表示该页最近已被访问且被修改。这类页面既有可能再次被访问,又需要在置换时写回磁盘。如果必须置换这类页面,应优先考虑那些较长时间未被访问的。

4.内存分配策略
物理块的分配策略:

(1)固定分配局部置换

(2)可变分配全局置换

(3)可变分配局部置换

物理块分配算法:

(1)平均分配算法(2)按比例分配算法(3)考虑优先级的分配算法

缺页率P——不宜过大或过小

P过大,分配的物理块过少,容易出现“抖动”现象

P过小,分配的物理块过多,并行能力下降

5.调页策略

(1).请求调页策略

(2)预调页策略(命中率较低50%)

6.抖动问题
定义

        操作系统抖动通常是由于内存或资源不足导致的计算机活动异常,表现为程序执行缓慢甚至停滞。在虚拟存储系统中,过度的页请求操作是其典型特征。处理机的利用率急剧下降趋向于0,这些时间大部分用于页面的换进换出。

产生抖动的原因

        根本原因是系统中进程的数量太多因此分配给每个进程的物理块数量较少。使得进程运行时平凡的发生缺页中断。

工作集/驻留集

工作集:在某段时间中,进程访问页面的合集。

驻留集:在某段时间中,在内存中,物理块能驻留的页数。

驻留集不可小于工作集——为了防止缺页率过高。

预防抖动的方法:

(1)采用局部置换策略

(2)利用工作集算法防止抖动

(3)利用“L=S”准则调节缺页率

L是缺页之间的平均时间,S是平均缺页服务时间。L远大于S,说明很少发生缺页,处理机和磁盘尚未得到充分利用。L小于S,说明平凡发生缺页

(4)挂起某些进程

三、分段虚拟存储管理

1.缺段中断

        和缺页中断一样,它可以在指令执行期间产生和处理中断信号。段是信息的逻辑单位,所以不可能出现一条指令被分割在两个段内的情况。下图为缺段中断的处理过程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于8.0 Update 3b 的ESXi-Arm Fling

很久没有更新过 ESXi-Arm 的版本了,博通旗下的 VMware 居然把它更新到了 8.0U3b。 下载地址:https://community.broadcom.com/flings 我准备使用离线更新,就没有下载 ISO,直接下载ESXi-Arm-Offline-Depot-2_00-dl.zip scp 上传…

python解析网页上的json数据落地到EXCEL

安装必要的库 import requests import pandas as pd import os import sys import io import urllib3 import json测试数据 网页上的数据结构如下 {"success": true,"code": "CIFM_0000","encode": null,"message": &quo…

C#桌面应用制作计算器

C#桌面应用制作简易计算器,可实现数字之间的加减乘除、AC按键清屏、Del按键清除末尾数字、/-按键取数字相反数、%按键使数字缩小100倍、按键显示运算结果等...... 页面实现效果 功能实现 布局 计算器主体使用Panel容器,然后将button控件排列放置Pane…

谷歌推出设备内置人工智能,实时向手机用户发出诈骗电话警报

Google 宣布推出适用于 Android 的新安全功能,可实时防御诈骗和有害应用。 这些功能由先进的设备内置 AI 提供支持,可在不损害隐私的情况下增强用户安全性。 这些新的安全功能首先在 Pixel 上推出,并将很快在更多 Android 设备上推出。 诈…

HarmonyOS ArkTs 解决流式传输编码问题

工作日志 日期:2024-11-15 标题:HarmonyOS ArkTs 解决流式传输编码问题 问题描述 问题:在处理流式数据的 HTTP 请求时,服务器返回的数据存在编码问题,导致数据无法正确地解码为字符串。部分数据在解码后出现了乱码…

MySQL数据库最大连接数查询及修改

MySQL数据库最大连接数查询及修改 1. 客户端连接数超出异常案例 Navicat连接异常信息如下: 2. 查看MySQL最大客户端连接数 通过mysql client命令登录MySQL数据库(登录用户不受限制,既可以是 root管理员用户,也可以是常规用户&a…

使用Wireshark获取USB HID(Human Interface Device)报告描述符

使用Wireshark选择需要获取的USB进行抓取数据,找到设备(host)接收信息的数据 第二栏出现hid报告,右击选择复制流 将复制的内容粘贴到USB标准请求及描述符在线分析工具 - USB中文网 进行解析 以图中获取手写板的数据为例&#xff…

TofuAI处理BT1120时序视频要求

时序要求 BT.1120视频用于1920x108030Hz数字视频输入。具体时序必须严格按照说明。BT.1120输入电平为1.8V。 BT1120数字视频采用YCbCr彩色格式输出,串行数据位宽为16bit,亮度在 高8bit,色度在低8bit,亮度和色度在同一个时钟周期输…

聊天服务器(8)用户登录业务

目录 登录状态业务层代码数据模型层代码记录用户的连接信息以及线程安全问题客户端异常退出业务 登录状态 登录且状态变为online 业务层代码 #include "chatservice.hpp" #include "public.hpp" #include <string> #include <muduo/base/Loggi…

通用定时器---输出比较功能

目录 一、概念 二、输出比较的8种模式 三、输出比较输出PWM波形的基本结构 配置步骤 四、示例代码 一、概念 OC&#xff08;OutPut Compare&#xff09;输出比较。输出比较可以通过比较CNT与CCR寄存器的关系&#xff0c;来对输出电平进行置1/置0/翻转的操作&#xff0c;可…

Wireshark中的length栏位

注&#xff1a;Ethernet II的最小data length为46&#xff0c;如果小于&#xff0c;会补全到46. 1.指定网卡抓取的&#xff0c;链路为ethernet。 IPv4 Ethernet II 长度为 14 bytes - L1ipv4 header中的length包括header和payload的总长度 - L2wireshark中length表示抓取的pac…

spring boot整合https协议

整体目录 1. 生成SSL证书 首先&#xff0c;使用keytool生成一个自签名证书。打开命令行工具并运行以下命令&#xff1a; keytool -genkeypair -alias myserver -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 这将创建一个名为keystore.jks的文件&#xf…

ceph的集群管理

0 环境说明 ip地址主机名额外硬盘是否加入ceph集群10.0.0.141ceph141sdb 300G&#xff0c;sdc 500G是10.0.0.142ceph142sdb 300G&#xff0c;sdc 500G, sdd 1000G否10.0.0.143ceph143sdb 300G&#xff0c;sdc 500G否 在上一篇文章中&#xff0c;已经成功地初始化了一个ceph管…

C++(Qt)软件调试---内存泄漏分析工具MTuner (25)

C(Qt)软件调试—内存泄漏分析工具MTuner &#xff08;25&#xff09; 文章目录 C(Qt)软件调试---内存泄漏分析工具MTuner &#xff08;25&#xff09;[toc]1、概述&#x1f41c;2、下载MTuner&#x1fab2;3、使用MTuner分析qt程序内存泄漏&#x1f9a7;4、相关地址&#x1f41…

CCI3.0-HQ:用于预训练大型语言模型的高质量大规模中文数据集

摘要 我们介绍了 CCI3.0-HQ&#xff0c;它是中文语料库互联网 3.0&#xff08;CCI3.0&#xff09;的一个高质量500GB子集&#xff0c;采用新颖的两阶段混合过滤管道开发&#xff0c;显著提高了数据质量。为了评估其有效性&#xff0c;我们在不同数据集的100B tokens上从头开始…

LC12:双指针

文章目录 125. 验证回文串 本专栏记录以后刷题碰到的有关双指针的题目。 125. 验证回文串 题目链接&#xff1a;125. 验证回文串 这是一个简单题目&#xff0c;但条件判断自己写的时候写的过于繁杂。后面参考别人写的代码&#xff0c;首先先将字符串s利用s.toLowerCase()将其…

AI 写作(九)实战项目二:智能新闻报道(9/10)

一、项目概述 在当今信息爆炸的时代&#xff0c;新闻传播行业正面临着前所未有的挑战与机遇。随着科技的飞速发展&#xff0c;人们获取信息的渠道日益多样化&#xff0c;对新闻的时效性、准确性和个性化需求也不断提高。在这样的背景下&#xff0c;AI 写作在智能新闻报道中的重…

星际流浪的大模型

种子世界还在太空漫游&#xff0c;航线上捡到一个铁盒子&#xff0c;那是一块硬盘&#xff0c;古老的东西。 长老就安排歌者&#xff0c;你去研究&#xff0c;查查硬盘的来源坐标。 费好大劲&#xff0c;歌者把硬盘中的程序和数据激活&#xff0c;运行了起来。 很有意思&#x…

HarmonyOs DevEco Studio小技巧31--画布组件Canvas

那天我们用画布实现了文字颜色的渐变&#xff0c;实际上画布还有很多好玩的功能&#xff0c;接下来让我们一起试一下画布怎么玩 Canvas 提供画布组件&#xff0c;用于自定义绘制图形。 接口 Canvas Canvas(context?: CanvasRenderingContext2D | DrawingRenderingContext…

C语言.冒泡排序的练习

题目&#xff1a; 1.用C语言编程&#xff0c;用冒泡排序将一个元素个数为20&#xff0c;的一维数组&#xff0c;由大到小的降序。 分析&#xff1a;1.首先创建一个数组&#xff0c;元素个数为20. 2.其次是按降序排列。 3.最后用冒泡排序。 运行代码&#xff1a; #include&l…