网络工程师 (8)存储管理
一、页式存储基本原理
(一)内存划分
页式存储首先将内存物理空间划分成大小相等的存储块,这些块通常被称为“页帧”或“物理页”。每个页帧的大小是固定的,例如常见的页帧大小有4KB、8KB等,这个大小由操作系统决定。同时,操作系统会为每个页帧分配一个唯一的编号,即页帧号。
(二)程序划分
与内存物理空间的划分相对应,页式存储也将要运行的程序的逻辑地址空间划分成大小与页帧相同的“页”。这些页在逻辑上连续,但在物理内存中可以不连续存放。每个页也被分配一个唯一的编号,即页号。
(三)页表管理
页式存储通过页表来管理逻辑页与物理页帧之间的映射关系。页表是一个数据结构,它记录了每个逻辑页对应的物理页帧号。当程序访问某个逻辑地址时,操作系统会首先查找页表,找到该逻辑地址对应的物理页帧号,然后结合页内偏移量(即逻辑地址中除去页号的部分)来确定最终的物理地址。
(四)内存分配与访问
- 内存分配:当程序被装入内存时,操作系统会根据程序的逻辑页大小,将程序的页逐一装入到内存中的空闲页帧中。这个过程可以是静态的(即程序执行前全部装入),也可以是动态的(即程序执行过程中根据需要装入)。
- 内存访问:当程序运行时,它会产生对内存的逻辑地址访问请求。操作系统会利用页表将这些逻辑地址转换为物理地址,然后访问相应的内存位置。
(五)页式存储的优点
- 提高内存利用率:由于页的大小是固定的,且页在内存中可以不连续存放,因此页式存储能够更有效地利用内存空间,减少内存碎片。
- 支持虚拟内存:页式存储是虚拟内存技术的基础之一。通过页表,操作系统可以实现逻辑地址与物理地址的分离,从而支持比物理内存更大的虚拟内存空间。
- 便于内存保护:页式存储可以为每个页设置访问权限,从而实现对内存的保护。例如,可以防止某个进程访问不属于它的内存区域。
(六)页式存储的缺点
- 页表开销:页表需要占用一定的内存空间来存储映射关系。对于大型程序或需要支持大量进程的操作系统来说,页表的开销可能会比较大。
- 缺页中断:在动态内存分配的情况下,当程序访问一个尚未装入内存的页时,会产生缺页中断。操作系统需要处理这个中断,将所需的页从磁盘调入内存,这会增加程序的执行时间。
二、页式置换算法
1.先进先出(FIFO)页面置换算法
FIFO算法选择最早进入内存的页面进行置换。它维护一个页面队列,新页面进入队列尾部,缺页时从队列头部移除页面。该算法实现简单,开销小,但可能导致贝拉迪异常,即当增加分配给进程的物理块数时,缺页中断的次数反而增加。这是因为FIFO算法没有考虑页面的访问频率或重要性,只是简单地按照页面进入内存的顺序进行置换。
2.最近最少使用(LRU)页面置换算法
LRU算法选择最长时间未被访问的页面进行置换。它基于页面的使用历史进行决策,能够减少页面错误和磁盘I/O操作的数量。LRU算法通常使用链表或栈数据结构来维护页面访问顺序,每次访问页面时,将该页面移到链表头部或栈顶,缺页时从链表尾部或栈底移除页面。虽然LRU算法性能较好,但实现复杂,需要维护链表或栈,并在每次内存访问时更新数据结构。此外,LRU算法还需要较高的硬件辅助,如使用硬件计数器来跟踪页面的访问时间。
3.最优页面置换算法(OPT)
OPT算法选择未来最长时间内不会被访问的页面进行置换。然而,由于操作系统无法预知未来的页面请求,因此OPT算法主要用于理论分析,而不是实际操作系统中。OPT算法可以作为衡量其他页面置换算法性能的基准。尽管OPT算法无法实现,但它提供了一种理想化的页面置换策略,即选择未来最长时间内不会被访问的页面进行置换,以最小化页面故障次数并最大化命中次数。
4.第二次机会页面置换算法
第二次机会算法是FIFO算法的一个变种。在淘汰一个页面之前,它会检查该页面是否已经被修改过(或检查其访问位R)。如果页面未被修改(或访问位为0),则直接淘汰;如果已被修改(或访问位为1),则将其访问位清零,并将其重新插入到队列尾部,给予它第二次机会。这样,第二次机会算法避免了贝拉迪异常,因为它允许页面在未被访问时获得第二次机会。该算法实现相对简单,性能优于FIFO。
5.时钟页面置换算法(CLOCK)
CLOCK算法是第二次机会算法的一个高效实现。它将所有页面保存在一个类似钟面的环形链表中,一个指针指向最老的页面。缺页时,从指针指向的页面开始检查,如果其访问位为0,则淘汰该页面;如果为1,则清零访问位并将指针前移一位,继续检查直到找到访问位为0的页面。CLOCK算法实现简单且高效,避免了在链表中频繁移动页面的开销。它适用于需要快速响应的场景,如实时操作系统。
6.最不经常使用(LFU)页面置换算法
LFU算法选择访问次数最少的页面进行置换。它为每个页面关联一个计数器,记录该页面的访问次数。缺页时,置换计数器值最小的页面。LFU算法能够反映页面的使用情况,但可能受到初始阶段大量使用但随后不再使用的页面的影响。此外,LFU算法实现相对复杂,需要维护计数器并更新其值。在实际应用中,LFU算法可能不如LRU算法有效,因为LRU算法能够更好地利用页面的时间局部性。
7.工作集页面置换算法
工作集算法基于进程的工作集进行页面置换。工作集是指进程在过去一段时间内实际访问过的页面的集合。缺页时,找出一个不在工作集中的页面并淘汰它。工作集算法能够适应进程的内存访问模式变化,提高内存利用率和程序性能。然而,它需要维护一个工作集数据结构,并动态更新其内容。这增加了算法的复杂性和开销。
结语
保持谦逊的态度
有助于不断学习和成长
!!!
相关文章:

网络工程师 (8)存储管理
一、页式存储基本原理 (一)内存划分 页式存储首先将内存物理空间划分成大小相等的存储块,这些块通常被称为“页帧”或“物理页”。每个页帧的大小是固定的,例如常见的页帧大小有4KB、8KB等,这个大小由操作系统决定。同…...

【Leetcode 每日一题】541. 反转字符串 II
问题背景 给定一个字符串 s s s 和一个整数 k k k,从字符串开头算起,每计数至 2 k 2k 2k 个字符,就反转这 2 k 2k 2k 字符中的前 k k k 个字符。 如果剩余字符少于 k k k 个,则将剩余字符全部反转。如果剩余字符小于 2 k…...

MSA Transformer
过去的蛋白质语言模型以单个序列为输入,MSA Transformer以多序列比对的形式将一组序列作为输入。该模型将行和列注意力交织在输入序列中,并在许多蛋白质家族中使用mask语言建模目标进行训练。模型的性能远超过了当时最先进的无监督学习方法,其…...

Vue.js组件开发-实现全屏焦点图片带图标导航按钮控制图片滑动切换
使用 Vue 实现全屏焦点图片带图标导航按钮控制图片滑动切换 步骤 创建 Vue 项目:可以使用 Vue CLI 快速创建一个新的 Vue 项目。设计组件结构:创建一个包含图片展示区域和导航按钮的组件。实现图片滑动切换逻辑:通过点击导航按钮切换图片。…...

Linux系统上安装与配置 MySQL( CentOS 7 )
目录 1. 下载并安装 MySQL 官方 Yum Repository 2. 启动 MySQL 并查看运行状态 3. 找到 root 用户的初始密码 4. 修改 root 用户密码 5. 设置允许远程登录 6. 在云服务器配置 MySQL 端口 7. 关闭防火墙 8. 解决密码错误的问题 前言 在 Linux 服务器上安装并配置 MySQL …...

Vue 3 30天精进之旅:Day 10 - Vue Router
在现代单页面应用(SPA)中,路由管理是必不可少的一部分。Vue Router是Vue.js官方的路由管理库,它使得在Vue应用中实现路由变得简单而灵活。今天的学习将围绕以下几个方面展开: Vue Router概述安装和基本配置定义路由路…...

人工智能如何驱动SEO关键词优化策略的转型与效果提升
内容概要 随着数字化时代的到来,人工智能(AI)技术对各行各业的影响日益显著,在搜索引擎优化(SEO)领域尤为如此。AI的应用不仅改变了关键词研究的方法,而且提升了内容生成和搜索优化的效率&…...

keil5如何添加.h 和.c文件,以及如何添加文件夹
1.简介 在hal库的编程中我们一般会生成如下的几个文件夹,在这几个文件夹内存储着各种外设所需要的函数接口.h文件,和实现函数具体功能的.c文件,但是有时我们想要创建自己的文件夹并在这些文件夹下面创造.h .c文件来实现某些功能,…...

BMC PSL function(22)-printf()
printf() 含义:Print text formatted to the C library printf() routine specification Format printf(format,[arg1,......,argn]) Parameter ParameterDefinitionformattext, variable names, and control characters that specify the content and format of output t…...

【数据结构】_复杂度
目录 1. 算法效率 2. 时间复杂度 2.1 时间复杂度概念 2.2 准确的时间复杂度函数式 2.3 大O渐进表示法 2.4 时间复杂度的常见量级 2.5 时间复杂度示例 3. 空间复杂度 3.1 空间复杂度概念 3.2 空间复杂度示例 1. 算法效率 一般情况下,衡量一个算法的好坏是…...

pytorch实现循环神经网络
人工智能例子汇总:AI常见的算法和例子-CSDN博客 PyTorch 提供三种主要的 RNN 变体: nn.RNN:最基本的循环神经网络,适用于短时依赖任务。nn.LSTM:长短时记忆网络,适用于长序列数据,能有效解决…...

Java 16进制 10进制 2进制数 相互的转换
在 Java 中,进行进制之间的转换时,除了功能的正确性外,效率和安全性也很重要。为了确保高效和相对安全的转换,我们通常需要考虑: 性能:使用内置的转换方法,如 Integer.toHexString()、Integer.…...

力扣动态规划-14【算法学习day.108】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...

数据结构day02
1 线性表的定义和基本操作 1.1 线性表的定义 分析: 1.1.1 问题一:我们为什么探讨线性表的定义和基本操作 在研究数据结构时,需要重点关注三个方面:逻辑结构、物理结构以及数据的运算。在本节内容里,我们首先来介绍线…...

随笔 | 写在一月的最后一天
. 前言 这个月比预想中过的要快更多。突然回看这一个月,还有点不知从何提笔。 整个一月可以总结为以下几个关键词: 期许,保持期许出现休息 . 期许 关于期许,没有什么时候比一年伊始更适合设立目标和计划的了。但令人惭愧的…...

JVM方法区
一、栈、堆、方法区的交互关系 二、方法区的理解: 尽管所有的方法区在逻辑上属于堆的一部分,但是一些简单的实现可能不会去进行垃圾收集或者进行压缩,方法区可以看作是一块独立于Java堆的内存空间。 方法区(Method Area)与Java堆一样,是各个…...

一文读懂fgc之cms
一文读懂 fgc之cms-实战篇 1. 前言 线上应用运行过程中可能会出现内存使用率较高,甚至达到95仍然不触发fgc的情况,存在内存打满风险,持续触发fgc回收;或者内存占用率较低时触发了fgc,导致某些接口tp99,tp…...

MYSQL 商城系统设计 商品数据表的设计 商品 商品类别 商品选项卡 多表查询
介绍 在开发商品模块时,通常使用分表的方式进行查询以及关联。在通过表连接的方式进行查询。每个商品都有不同的分类,每个不同分类下面都有商品规格可以选择,每个商品分类对应商品规格都有自己的价格和库存。在实际的开发中应该给这些表进行…...

HTB:Administrator[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…...

开源项目Umami网站统计MySQL8.0版本Docker+Linux安装部署教程
Umami是什么? Umami是一个开源项目,简单、快速、专注用户隐私的网站统计项目。 下面来介绍如何本地安装部署Umami项目,进行你的网站统计接入。特别对于首次使用docker的萌新有非常好的指导、参考和帮助作用。 Umami的github和docker镜像地…...

FBX SDK的使用:基础知识
Windows环境配置 FBX SDK安装后,目录下有三个文件夹: include 头文件lib 编译的二进制库,根据你项目的配置去包含相应的库samples 官方使用案列 动态链接 libfbxsdk.dll, libfbxsdk.lib是动态库,需要在配置属性->C/C->预…...

VisionMamba安装
1.安装python环境 conda create -n mamba python3.10.13 -y conda activate mamba2.安装torch环境 conda install cudatoolkit11.8 -c nvidia pip install torch2.1.1 torchvision0.16.1 torchaudio2.1.1 --index-url https://download.pytorch.org/whl/cu1183.安装其他包 c…...

h2oGPT
文章目录 一、关于 h2oGPT二、现场演示特点 三、开始行动安装h2oGPT拼贴画演示资源文档指南开发致谢为什么选择 H2O.ai?免责声明 一、关于 h2oGPT 使用文档、图像、视频等与本地GPT进行私人聊天。100%私人,Apache 2.0。支持oLLaMa、Mixtral、llama. cpp…...

Win10安装MySQL、Pycharm连接MySQL,Pycharm中运行Django
一、Windows系统mysql相关操作 1、 检查系统是否安装mysql 按住win r (调出运行窗口) 输入service.msc,点击【确定】 image.png 打开服务列表-检查是否有mysql服务 (compmgmt.msc) image.png 2、 Windows安装MySQL …...

使用Pygame制作“俄罗斯方块”游戏
1. 前言 俄罗斯方块(Tetris) 是一款由方块下落、行消除等核心规则构成的经典益智游戏: 每次从屏幕顶部出现一个随机的方块(由若干小方格组成),玩家可以左右移动或旋转该方块,让它合适地堆叠在…...

【Block总结】ODConv动态卷积,适用于CV任务|即插即用
一、论文信息 论文标题:Omni-Dimensional Dynamic Convolution作者:Chao Li, Aojun Zhou, Anbang Yao发表会议:ICLR 2022论文链接:https://arxiv.org/pdf/2209.07947GitHub链接:https://github.com/OSVAI/ODConv 二…...

RK3568 opencv播放视频
文章目录 一、opencv相关视频播放类1. `cv::VideoCapture` 类主要构造方法:主要方法:2. 视频播放基本流程代码示例:3. 获取和设置视频属性4. 结合 FFmpeg 使用5. OpenCV 视频播放的局限性6. 结合 Qt 实现更高级的视频播放总结二、QT中的代码实现一、opencv相关视频播放类 在…...

《LLM大语言模型+RAG实战+Langchain+ChatGLM-4+Transformer》
文章目录 Langchain的定义Langchain的组成三个核心组件实现整个核心组成部分 为什么要使用LangchainLangchain的底层原理Langchain实战操作LangSmithLangChain调用LLM安装openAI库-国内镜像源代码运行结果小结 使用Langchain的提示模板部署Langchain程序安装langserve代码请求格…...

【搜索回溯算法篇】:拓宽算法视野--BFS如何解决拓扑排序问题
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:搜索回溯算法篇–CSDN博客 文章目录 一.广度优先搜索(BFS)解决拓扑排…...

计算机网络 (61)移动IP
前言 移动IP(Mobile IP)是由Internet工程任务小组(Internet Engineering Task Force,IETF)提出的一个协议,旨在解决移动设备在不同网络间切换时的通信问题,确保移动设备可以在离开原有网络或子网…...