网络工程师 (8)存储管理

一、页式存储基本原理

(一)内存划分

       页式存储首先将内存物理空间划分成大小相等的存储块,这些块通常被称为“页帧”或“物理页”。每个页帧的大小是固定的,例如常见的页帧大小有4KB、8KB等,这个大小由操作系统决定。同时,操作系统会为每个页帧分配一个唯一的编号,即页帧号。

(二)程序划分

       与内存物理空间的划分相对应,页式存储也将要运行的程序的逻辑地址空间划分成大小与页帧相同的“页”。这些页在逻辑上连续,但在物理内存中可以不连续存放。每个页也被分配一个唯一的编号,即页号。

(三)页表管理

       页式存储通过页表来管理逻辑页与物理页帧之间的映射关系。页表是一个数据结构,它记录了每个逻辑页对应的物理页帧号。当程序访问某个逻辑地址时,操作系统会首先查找页表,找到该逻辑地址对应的物理页帧号,然后结合页内偏移量(即逻辑地址中除去页号的部分)来确定最终的物理地址。

(四)内存分配与访问

  1. 内存分配:当程序被装入内存时,操作系统会根据程序的逻辑页大小,将程序的页逐一装入到内存中的空闲页帧中。这个过程可以是静态的(即程序执行前全部装入),也可以是动态的(即程序执行过程中根据需要装入)。
  2. 内存访问:当程序运行时,它会产生对内存的逻辑地址访问请求。操作系统会利用页表将这些逻辑地址转换为物理地址,然后访问相应的内存位置。

(五)页式存储的优点

  1. 提高内存利用率:由于页的大小是固定的,且页在内存中可以不连续存放,因此页式存储能够更有效地利用内存空间,减少内存碎片。
  2. 支持虚拟内存:页式存储是虚拟内存技术的基础之一。通过页表,操作系统可以实现逻辑地址与物理地址的分离,从而支持比物理内存更大的虚拟内存空间。
  3. 便于内存保护:页式存储可以为每个页设置访问权限,从而实现对内存的保护。例如,可以防止某个进程访问不属于它的内存区域。

(六)页式存储的缺点

  1. 页表开销:页表需要占用一定的内存空间来存储映射关系。对于大型程序或需要支持大量进程的操作系统来说,页表的开销可能会比较大。
  2. 缺页中断:在动态内存分配的情况下,当程序访问一个尚未装入内存的页时,会产生缺页中断。操作系统需要处理这个中断,将所需的页从磁盘调入内存,这会增加程序的执行时间。

二、页式置换算法

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.工作集页面置换算法

       工作集算法基于进程的工作集进行页面置换。工作集是指进程在过去一段时间内实际访问过的页面的集合。缺页时,找出一个不在工作集中的页面并淘汰它。工作集算法能够适应进程的内存访问模式变化,提高内存利用率和程序性能。然而,它需要维护一个工作集数据结构,并动态更新其内容。这增加了算法的复杂性和开销。

 结语  

保持谦逊的态度

有助于不断学习和成长

!!!

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

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

相关文章

[EAI-026] DeepSeek-VL2 技术报告解读

Paper Card 论文标题:DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding 论文作者:Zhiyu Wu, Xiaokang Chen, Zizheng Pan, Xingchao Liu, Wen Liu, Damai Dai, Huazuo Gao, Yiyang Ma, Chengyue Wu, Bin…

(动态规划路径基础 最小路径和)leetcode 64

视频教程 1.初始化dp数组&#xff0c;初始化边界 2、从[1行到n-1行][1列到m-1列]依次赋值 #include<vector> #include<algorithm> #include <iostream>using namespace std; int main() {vector<vector<int>> grid { {1,3,1},{1,5,1},{4,2,1}…

cf1000(div.2)

Minimal Coprime最小公倍数 输入&#xff1a; 6 1 2 1 10 49 49 69 420 1 1 9982 44353 输出&#xff1a; 1 9 0 351 1 34371 代码

【单细胞第二节:单细胞示例数据分析-GSE218208】

GSE218208 1.创建Seurat对象 #untar(“GSE218208_RAW.tar”) rm(list ls()) a data.table::fread("GSM6736629_10x-PBMC-1_ds0.1974_CountMatrix.tsv.gz",data.table F) a[1:4,1:4] library(tidyverse) a$alias:gene str_split(a$alias:gene,":",si…

事务04之死锁,锁底层和隔离机制原理

死锁和事务底层原理 文章目录 死锁和事务底层原理一&#xff1a;MySQL中的死锁现象1&#xff1a;何为死锁1.1&#xff1a;死锁的概念1.2&#xff1a;死锁产生的四个必要条件&#xff1a; 2&#xff1a;MySQL的死锁2.1&#xff1a;死锁的触发2.2&#xff1a;MySQL的死锁如何解决…

Maven的单元测试

1. 单元测试的基本概念 单元测试&#xff08;Unit Testing&#xff09; 是一种软件测试方法&#xff0c;专注于测试程序中的最小可测试单元——通常是单个类或方法。通过单元测试&#xff0c;可以确保每个模块按预期工作&#xff0c;从而提高代码的质量和可靠性。 2.安装和配…

VirtualBox:跨磁盘导入已存的vdi磁盘文件顺便测试冷迁移

目录 1.背景 2.目的 3.步骤 3.1 安装在移动硬盘上 3.2.接管现有主机磁盘上的虚拟机 3.3接管迁移到移动硬盘的虚拟机 4. 结论 1.背景 电脑重新做了系统&#xff0c;然后找不到virtualbox的启动程序了&#xff0c;另外电脑磁盘由于存储了其他文件已经爆红&#xff0c;无法…

二级C语言:二维数组每行最大值与首元素交换、删除结构体的重复项、取出单词首字母

目录 一、程序填空 --- 二维数组每行最大值与首元素交换 题目 分析 知识点 --- 交换语句 二、程序修改 --- 删除结构体的重复项 题目 分析 三、程序设计 --- 取出单词首字母 题目 分析 前言 本章讲解&#xff1a;二维数组每行最大值与首元素交换、删除结构体的重复项…

优盘恢复原始容量工具

买到一个优盘&#xff0c;显示32mb&#xff0c;我见过扩容盘&#xff0c;但是这次见到的是缩容盘&#xff0c;把2g的容量缩成32MB了&#xff0c;首次见到。。用芯片查询工具显示如下 ChipsBank(芯邦) CBM2199E 使用以下工具&#xff0c;恢复原始容量。。 其他CMB工具可能不行…

面对企业文件交换难题,镭速跨网文件交换系统是如何解决的?

在当今这个数字化快速发展的时代&#xff0c;企业越来越依赖于数据交换来维持其业务运作。无论是内部网络之间的沟通还是与外部合作伙伴的数据共享&#xff0c;高效且安全的跨网文件交换都显得尤为重要。然而&#xff0c;在实际操作中&#xff0c;许多企业面临着各种各样的挑战…

黑马点评 - 商铺类型缓存练习题(Redis List实现)

首先明确返回值是一个 List<ShopType> 类型那么我们修改此函数并在 TypeService 中声明 queryTypeList 方法&#xff0c;并在其实现类中实现此方法 GetMapping("list")public Result queryTypeList() {return typeService.queryTypeList();}实现此方法首先需要…

计算机毕业设计Python+CNN卷积神经网络高考推荐系统 高考分数线预测 高考爬虫 协同过滤推荐算法 Vue.js Django Hadoop 大数据毕设

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

知识库管理如何推动企业数字化转型与创新发展的深层次探索

内容概要 在当今数字化转型的大背景下&#xff0c;知识库管理日益显现出其作为企业创新发展的核心驱动力的潜力。这种管理方式不仅仅是对信息的存储与检索&#xff0c;更是一种赋能&#xff0c;以提升决策效率和员工创造力。企业能够通过系统地整合和管理各类知识资源&#xf…

【Leetcode】463. 岛屿的周长

一、题目描述 给定一个KaTeX parse error: Undefined control sequence: \x at position 4: row\̲x̲\col的二维网格地图 g r i d grid grid&#xff0c;其中&#xff1a; g r i d [ i ] [ j ] 1 grid[i][j]1 grid[i][j]1表示陆地&#xff0c; g r i d [ i ] [ j ] 0 grid[…

企业微信远程一直显示正在加载

企业微信远程一直显示正在加载 1.问题描述2.问题解决 系统&#xff1a;Win10 1.问题描述 某天使用企业微信给同事进行远程协助的时候&#xff0c;发现一直卡在正在加载的页面&#xff0c;如下图所示 2.问题解决 经过一番查找资料后&#xff0c;我发现可能是2个地方出了问题…

【Block总结】ODConv动态卷积,适用于CV任务|即插即用

一、论文信息 论文标题&#xff1a;Omni-Dimensional Dynamic Convolution作者&#xff1a;Chao Li, Aojun Zhou, Anbang Yao发表会议&#xff1a;ICLR 2022论文链接&#xff1a;https://arxiv.org/pdf/2209.07947GitHub链接&#xff1a;https://github.com/OSVAI/ODConv 二…

英语语法 第一天

I’m a student. 我是个学生 我是个新东方的学生 I’m a student of New Oriental School 我爱你 I love you 我在心中爱你 I love you in my heart. 这是一朵花 This is a flower 这是一朵在公园里的花 This is a flower in the park.(修饰部分在修饰词后面) 主干…

doris:高并发导入优化(Group Commit)

在高频小批量写入场景下&#xff0c;传统的导入方式存在以下问题&#xff1a; 每个导入都会创建一个独立的事务&#xff0c;都需要经过 FE 解析 SQL 和生成执行计划&#xff0c;影响整体性能每个导入都会生成一个新的版本&#xff0c;导致版本数快速增长&#xff0c;增加了后台…

智联出行公司布局中国市场,引领绿色出行新潮流

近日&#xff0c;智联共享科技有限公司&#xff08;智联出行ZSTL&#xff09;正式入驻中国香港市场&#xff0c;开启中国地区“合伙人”战略部署&#xff0c;其线上服务平台也于同日上线。 作为共享单车领域的先行者&#xff0c;智联出行公司此举标志着其全球化布局的重要进展&…

PythonFlask框架

文章目录 处理 Get 请求处理 POST 请求应用 app.route(/tpost, methods[POST]) def testp():json_data request.get_json()if json_data:username json_data.get(username)age json_data.get(age)return jsonify({username: username测试,age: age})从 flask 中导入了 Flask…