操作系统-内存管理-虚拟内存管理

news2025/1/24 17:36:04

目录

一、虚拟内存定义和特征

二、请求分页管理

页表机制

缺页中断机构

 地址变换机构

 三、页面置换算法

3.1最佳置换算法(OPT)

3.2先进先出置换算法(FIFO)

3.3最近最久未使用置换算法(LRU)

3.4时钟置换算法(CLOCK)

3.4.1简单时钟置换算法

3.4.2改进型时钟置换算法

 四、页面分配策略

4.1 内存分配策略

4.1.1 固定分配全局置换

4.1.2可变分配全局置换

4.1.3可变分配局部置换 

 4.2何时调入页面

 4.3何处调入页面

 4.4抖动现象

 五、内存映射文件

5.1传统文件访问方式

 5.2内存映射文件方式


一、虚拟内存定义和特征

虚拟内存技术实现需要建立在离散分配的内存管理方式基础上

定义:程序不需要全部装入即可运行,运行时根据需要动态调入数据,内存不够,换出一些数据

特征:

多次性:无需在作业运行时一次性全部装入内存,而是允许分成多次调入内存

对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入换出

虚拟性:从逻辑上扩充了内存的容量,使用户看到的内存容量,远大于实际的容量

二、请求分页管理

请求分页存储管理与基本分页存储管理区别

在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需要信息从外存调入内存,然在后续执行过程中。若内存空间不够,由操作系统负责将内存中暂时用不到的换到外存

页表机制

缺页中断机构

缺页中断是因为当前执行的指令想要访问的目标页面未调入内存而产生的,因此属于内中断

        一条指令在执行期间,可能产生多次缺页中断

 地址变换机构

 三、页面置换算法

 内存不够,由操作系统将内存中暂时用不到的信息换出到外存

3.1最佳置换算法(OPT)

性能最好,但无法实现

每次选择淘汰的页面将是以后永不使用,或者在最长时间内不在调用的  ,保证最低缺页率

缺页次数9次,置换6次

缺页率 9/20=45%

3.2先进先出置换算法(FIFO)

实现最简单,但算法性能差

每次淘汰最早进入内存的页面

 3个内存块缺页次数9次,,4个内存块缺页还10次,Belady异常--分配内存块增加,缺页有不减反增现象

只有FIFO算法会产生Belady异常

3.3最近最久未使用置换算法(LRU)

性能好,接近OPT算法,专门硬件实现,开销大

每次淘汰的页面是最近最久未使用的页面

3.4时钟置换算法(CLOCK)

比较均衡的算法,又称最近未使用算法(NRU)

3.4.1简单时钟置换算法

只考虑是是否被访问,没有考虑是否被修改过

内存5个块循环连接起来,开始5个不需要置换都进入,访问位1,需要替换时,下一个访问位为1,就置为0找下一个,找到为0的为止,置换,重复操作

访问已在内存的变1,遇1置0下一个.遇0置换下

3.4.2改进型时钟置换算法

 (访问位,修改位)

 四、页面分配策略

驻留集:指请求分页存储管理中给进程分配的物理块的集合。在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小

驻留集太大会导致程序并发度下降,资源利用率低。驻留集太小,会导致缺页频繁

4.1 内存分配策略

固定分配:为每个进程分配一组固定数目的物理块,在运行期间不再改变,即驻留集大小不变

可变分配:先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加和减少,即改变大小可变

局部置换:发生缺页时只能选进程自己的物理块进行置换

全局置换:可将系统保留的空闲物理块分配给缺页进程,也可以将别的进程持有的物理块置换到外存,在分配给缺页进程

4.1.1 固定分配全局置换

4.1.2可变分配全局置换

4.1.3可变分配局部置换 

 4.2何时调入页面

预调页策略:根据局部性原理,一次调入若干个相邻的页面。预测不久后可能访问到页面,将它们预先调入内存,(运行前调入)

请求调页策略:进程在运行期间发现缺页时才将所缺页面调入内存,一次调入一页(运行时调入)

 4.3何处调入页面

 4.4抖动现象

刚刚换出的页面马上又要换入内存,换入的马上又换出内存,这种频繁的页面调度行为称抖动,或者颠簸。

产生抖动的主要原因是进程频繁访问的页面数目高于可用的物理块数(分配物流快不够)

驻留集:请求页面管理分配的内存块集合

工作集:指某段时间间隔里, 实际访问页面的集合    

 五、内存映射文件

操作系统向上层程序员提供的功能(系统调用)

5.1传统文件访问方式

 5.2内存映射文件方式

共享

 

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

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

相关文章

数据库—mysql、数据库编程(API)

1. Linux平台准备 &#xff08;1&#xff09;安装SDK开发包的命令 sudo apt-get install libmysqlclient-dev &#xff08;2&#xff09;编译时需要链接的库:-lmysqlclient 2. mysql 的初始化和清理 #include <mysql/mysql.h> MYSQL mysql1; //创建句柄 mysql_init(&…

springboot+java高校图书馆图书借阅挂失崔还系统

功本次设计任务是要设计一个图书借阅系统&#xff0c;通过这个系统能够满足图书借阅系统的管理及用户的图书借阅功能。系统的主要功能包括&#xff1a;主页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;借阅证件管理&#xff0c;挂失信息管理&#xff0c;图书信息管理…

华为OD机试真题 JavaScript 实现【快速寻找某字符】【牛客练习题】

一、题目描述 给定一个一个目标值 target和一个 元素升序的无重复数字字符串 &#xff0c;写一个函数搜索 字符串 中的 target&#xff0c;如果目标值存在返回下标&#xff08;下标从 0 开始&#xff09;&#xff0c;否则返回 -1。 二、输入描述 第一行输入一个目标值target…

pullup和pulldown在verilog中的使用方法

0 前言 这段时间涉及到了IO-PAD&#xff0c;在IO-PAD的RTL的时候注意到了pullup和pulldown&#xff0c;对这个知识比较好奇&#xff0c;就研究了一下&#xff0c;顺便记录下来&#xff0c;IO-PAD的内容等我再研究研究再考虑记录吧 >_< 1 pullup和pulldown的介绍 pullu…

springboot3错误处理机制源码分析

ErrorMvcAutoConfiguration 在springboot启动时会自动装配默认的错误处理机制 ErrorMvcAutoConfiguration springboot正在运行&#xff0c;此时发生了404的错误。&#xff08;业务错误场景&#xff09;分析底层处理流程。 1.如果在对应的controller层中设置了对应的错误处理器…

【裸机开发】链接脚本(.lds文件)的基本语法

目录 一、什么是链接脚本&#xff1f; 二、链接脚本的基本语法格式 1、常用命令 2、内置变量 三、链接脚本的简单案例 一、什么是链接脚本&#xff1f; 一段程序的编译需要经历四个阶段&#xff08;预处理—编译—汇编—链接&#xff09;&#xff0c;而链接脚本管理的就是…

专业实习报告范本4篇

专业实习报告范本1 一、实习起止日期&#xff1a; 二、实习单位及部门&#xff08;岗位&#xff09;&#xff1a; 三、主要实习内容&#xff1a; 对基础知识和专业理论知识的掌握及运用情况&#xff1a; 通过两年半的学习和两个月的紧张培训&#xff0c;让我学会了电路图的分析…

彻底关闭 Win10 系统自动更新【四大步骤】

Windows 10 的自动更新非常顽固&#xff0c;多用户在网上试了各种关闭win10自动更新的方法&#xff0c;刚开始看着好像是关闭更新了&#xff0c;可没过多久系统就又开始自动更新了。今天笔者就来教大家如何彻底关闭win10自动更新&#xff0c;该方法亲测有效。 一、禁用 Window…

【AIGC】15、Grounding DINO | 将 DINO 扩展到开集目标检测

文章目录 一、背景二、方法2.1 特征抽取和加强2.2 Language-Guided Query Selection2.3 Cross-Modality Decoder2.4 Sub-sentence level text feature2.5 Loss Function 3、效果3.1 zero-shot transfer of grounding DINO3.2 Referring Object detection3.3 Ablations3.4 从 DI…

java springboot工程整合JUnit测试

好啦从此文开始 我们开始学习整合第三方技术的知识 后续 我们会整合一下第三方技术 后续也还会用到很多 但大家要学的是思想 而不是某某技术怎么去整合 当你会任何一种技术 你都能自如的整合到项目中 你才算掌握了整合技术 好 那么开始先整合 JUnit 我们打开idea 打开我们的 …

VC6创建工程的各种类型

各个工程类型的含义是什么&#xff1f; ATL COM AppWizard 用ATL技术制作COM程序&#xff0c;例如:WORD里面用的公式编辑器 ATL: Active Template Library活动模板库。ATL是COM的开发工具。 COM: 1993年Microsoft首次公布了COM技术. Wizard:向导 什么是ATL&#xff1f; &…

十分钟,零基础使用uniCloud完成后端管理系统搭建二

上一节我们已经成功搭建基础版的后端管理系统&#xff0c;这一节我们将利用uniCloud给我们提供的schema2code自动生成代码&#xff0c;快速完成&#xff1a;列表、增加和修改页面创建。 上一节&#xff1a; 十分钟&#xff0c;零基础使用uniCloud完成后端管理系统搭建一_szii…

图论算法 --Dijkstra

当谈到计算机科学时&#xff0c;算法是一个重要的话题&#xff0c;因为它们能帮助解决很多问题。而有些算法&#xff0c;其高效性和惊人表现&#xff0c;令人感到惊艳。一起来分享一下你认为令人惊艳的高效算法吧&#xff01; Dijkstra算法 一、你在工作和学习中用到过哪些惊艳…

半导体器件基础(期末模电速成)

目录 1、半导体分类 2、PN结 3、二极管 4、稳压二极管 5、三极管 6、场效应管 1、半导体分类 2、PN结 3、二极管 伏安特性&#xff1a; 我们第七版模电书上给的正向导通压降分别约为0.7和0.2V&#xff0c;且硅的单向导电性更好 如何确定二极管状态&#xff1f; 阳极电压…

C++ 输出格式控制

C 输出格式控制 需包含头文件&#xff1a; 浮点数精度、域宽、填充 操作符功能right-alignedright-alignedsetprecision(int n)设置以n表示的数值精度setw(int n)设置以n表示的域宽setfill(char c)设置以c表示的填充字符 输出格式 操作符功能oct以八进制格式输出数据dec以…

事件循环机制

基本概念 聊一下事件循环机制&#xff0c;在开始这篇文章之前&#xff0c;先明确一个概念&#xff0c;js本身是没有事件循环这个定义的。是js被嵌入相应的执行环境&#xff08;浏览器 / Nodejs&#xff09;&#xff0c;配合当前事件循环的组成部分&#xff0c;具体来说分下面两…

【基于容器的部署、扩展和管理】3.4 灰度发布和A/B测试

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;【容器化应用程序设计和开发】 第三章&#xff1a;【3.1 容器编排系统和Kubernetes集群的构建】 第三章&#xff1a;【3.2 基于容器的应用程序部署和升级】 第三章&#xff1a;【3.3 自动…

【C++】引用和右值引用

目录 1. 引用 1.1 引用的概念 1.2 引用的特性 1.3 引用的使用场景 1.3.1 作为参数 1.3.2 作为返回值 1.4 常量引用 1.5 引用和指针的区别 2. 左值和右值 3. 右值引用 3.1 右值引用的概念 3.2 左值持久&#xff1b;右值短暂 3.3 变量是左值 3.4 标准库move函数 1.…

docker使用与服务器上的可视化(ROS rviz等)

1.安装docker 安装docker&#xff1a;官网教程&#xff0c;按照官网命令一步步来即可。 添加当前用户到docker用户组&#xff1a; 【docker】添加用户到docker组&#xff0c;这样后面运行docker的时候前面不需要加sudo命令&#xff0c;否则运行docker的时候一直需要在前面加su…

开发人员必备的万能工具箱:He3

目录 1.简介2.安装3.详细功能清单4.常用快捷键5.使用示例5.1 测试正则表达式5.2 文本比较 He3官网&#xff1a; https://he3.app/zh/ 1.简介 今天&#xff0c;给大家推荐一款开发人员必备的万能工具箱&#xff1a;He3&#xff0c;这是一款免费的开发者工具箱&#xff0c;截至…