操作系统 三(存储管理)
一、 存储系统的“金字塔”层次结构

设计原理:
cpu自身运算速度很快。内存、外存的访问速度受到限制
各层次存储器的特点:
1)主存储器(主存/内存/可执行存储器)
保存进程运行时的程序和数据,内存的访问速度远低于cpu执行指令的速度。
2)寄存器
cpu内部一些小型存储区域,暂时存放参与运算的指令、数据和运算结果等。
寄存器与处理机相同速度,完全与cpu协调工作,容量不大。
3)高速缓存
介于寄存器和内存之间,主要用于备份内存中较常用的数据,减少处理机对内存的访问次数。容量远大于寄存器,比内存小两个到三个数量级。为了缓和内存与处理机速度之间的矛盾。
4)磁盘缓存
缓和磁盘的I/O速度远低于内存的访问速度,主要用于暂时存放频繁使用的一部分磁盘数据,减少访问磁盘的次数。本身不实际存在,利用内存中的部分存储空间,暂时存放从磁盘中读出(写入)的信息。
结构的优点:

二、 装入、链接
装入
1)绝对装入
单道程序环境。编译后,产生绝对地址的目标代码。逻辑地址与实际地址完全相同。
2)可重定位装入
根据内存的具体情况,将装入模块装入内存的适当位置。所有逻辑地址与实际装入内存的物理地址不同。
把装入时对目标程序中指令和数据的逻辑地址变换为物理地址,称为重定位。
不允许程序运行时在内存中移动位置。
3)动态运行时装入
一个进程可能被多次换出、换入,换入后位置通常不同。
在装入模块装入内存后,不会立即把装入模块中的相对地址变换为绝对地址,程序真正要执行时才进行地址变换。“动态重定位”
链接
静态链接
在程序运行之前,将各目标模块及所需库函数链接成一个完整的装配模块,不再拆开。
装配成一个装入模块时:①修改相对地址②变换外部调用符号
装入时动态链接
将用户源程序编译后所得一组目标模块,边装入边链接。
优点:
①便于修改和更新
②便于实现对目标模块的共享
运行时动态链接
在执行过程中,发现一个“被调用模块”还未被装入内存时,立即由os找到该模块,装入内存并链接到装入模块。
三、 动态分区分配算法(论述分析、计算)
首次适应算法
空闲分区链从链首开始顺序查找,大小满足就划分。
保留了高址部分的大空闲分区,低址部分不断被划分,留下很多碎片。
循环首次适应算法
从上次找到的空闲分区的下一个空闲分区开始查找,直至找到。若链尾空闲分区的大小不满足要求,应返回第一个空闲分区比较大小。
减少了查找空闲分区时的开销,使大的空闲分区较缺乏。
最佳适应算法
将所有的空闲分区按容量以从小到大的顺序排好,第一次找到能满足要求的空闲分区即是最佳。
存储器中会留下许多难以利用的碎片。
最坏适应算法
将空闲分区从大到小排好,挑选最大的空闲区,缺乏大的空闲分区。
产生碎片概率小,查找效率很高。
四、 重定位、对换
五、 分页存储 (综合应用)

系统为每个进程建立一个页表,给出“逻辑页号”和具体“内存块号”的对应关系,实现从页号到物理块号的地址映射。
设置页表始址寄存器、页表长度寄存器
优点:实现简单、易于共享、内碎片小、不存在外碎片----->改进:多级页表
缺点:页表长度过大、程序运行中不是所有页面都要装入内存
多级页表:页表也进行分页,内存仅存放当前使用的页表,不用的放在磁盘上。为小页表建一张页目录表。
逻辑地址:页目录、页表页、位移。
内存有效访问时间:
EAT=2t
引入快表后:EAT=a×λ+(1-a)×(t+λ)+t
t:一次内存访问时间 λ:查找快表所需时间 a:命中率
六、 段式存储
段表寄存器:段表起始地址、段表长度
七、 分段和分页区别
同:
都采用离散分配方式;
都通过地址映射机构实现地址变换
异:
①页是信息的物理单位。分页是系统管理的需要,对用户不可见。
段是信息的逻辑单位。通常包含一组意义相对完整的信息。
②页的大小固定,由系统决定。段的长度不固定,取决于用户所编写的程序。
③分页的用户程序地址空间是一样的,用户程序地址属于单一的线性地址空间。分段是用户的行为,分段系统中,用户程序的地址空间是二维的,标志一个地址时需给出段名,段内地址。
八、 虚拟存储
定义
当进程运行时,先将一部分程序装入内存,另一部分暂时留在外存,当要执行的指令不在内存时,由系统自动完成将它们从外存调入内存工作。
页表(与分页对比)

缺页中断
需要访问的页面不在内存中,产生缺页中断。os接到信号后,根据页表中给出的外存地址,将该页调入内存。
内存中有空闲块,则直接分配一页,修改页表。
内存中没有空闲块,淘汰某页,若被修改过则写回外存。
页面淘汰算法
①最佳页面置换算法(OPT)
将以后永不使用或(未来)最长时间内不会被访问的页面淘汰。
保证最低缺页率。
②先进先出(FIFO)
淘汰在内存中驻留时间最长的页面。
③最近最久未使用(LRU)
淘汰最后一次访问时间距离当前时间最长的一页。
需要记录各个页的最后使用时间。
④最少使用(LFU)
淘汰最近一段时间未使用过的一页。
缺页率:缺页中断次数/总页面访问次数
抖动、工作集
抖动:进程频繁的将页面换进和换出
进程未获得足够的物理页面,缺页率非常高,导致较低的cpu利用率。
工作集:某段时间内进程访问的页面集合

相关文章:
操作系统 三(存储管理)
一、 存储系统的“金字塔”层次结构设计原理:cpu自身运算速度很快。内存、外存的访问速度受到限制各层次存储器的特点:1)主存储器(主存/内存/可执行存储器)保存进程运行时的程序和数据,内存的访问速度远低于…...
day34 贪心算法 | 860、柠檬水找零 406、根据身高重建队列 452、用最少数量的箭引爆气球
题目 860、柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个…...
使用canvas给上传的整张图片添加平铺的水印
写在开头 哈喽,各位倔友们又见面了,本章我们继续来分享一个实用小技巧,给图片加水印功能,水印功能的目的是为了保护网站或作者版权,防止内容被别人利用或白嫖。 但是网络中,是没有绝对安全的,…...
[安装之4] 联想ThinkPad 加装固态硬盘教程
方案:保留原有的机械硬盘,再加装一个固态硬盘作为系统盘。由于X250没有光驱,这样就无法使用第二个2.5寸的硬盘。还好,X250留有一个M.2接口,这样,就可以使用NGFF M.2接口的固态硬盘。不过,这种接…...
Java数据类型、基本与引用数据类型区别、装箱与拆箱、a=a+b与a+=b区别
文章目录1.Java有哪些数据类型2.Java中引用数据类型有哪些,它们与基本数据类型有什么区别?3.Java中的自动装箱与拆箱4.为什么要有包装类型?5.aab与ab有什么区别吗?1.Java有哪些数据类型 8种基本数据类型: 6种数字类型(4个整数型…...
GoLang设置gofmt和goimports自动格式化
目录 设置gofmt gofmt介绍 配置gofmt 设置goimports goimports介绍 配置goimports 设置gofmt gofmt介绍 Go语言的开发团队制定了统一的官方代码风格,并且推出了 gofmt 工具(gofmt 或 go fmt)来帮助开发者格式化他们的代码到统一的风格…...
【k8s】如何搭建搭建k8s服务器集群(Kubernetes)
搭建k8s服务器集群 服务器搭建环境随手记 文章目录搭建k8s服务器集群前言:一、前期准备(所有节点)1.1所有节点,关闭防火墙规则,关闭selinux,关闭swap交换,打通所有服务器网络,进行p…...
DIDL4_前向传播与反向传播(模型参数的更新)
前向传播与反向传播前向传播与反向传播的作用前向传播及公式前向传播范例反向传播及公式反向传播范例小结前向传播计算图前向传播与反向传播的作用 在训练神经网络时,前向传播和反向传播相互依赖。 对于前向传播,我们沿着依赖的方向遍历计算图并计算其路…...
链表学习之链表划分
链表解题技巧 额外的数据结构(哈希表);快慢指针;虚拟头节点; 链表划分 将单向链表值划分为左边小、中间相等、右边大的形式。中间值为pivot划分值。 要求:调整之后节点的相对次序不变,时间复…...
(考研湖科大教书匠计算机网络)第五章传输层-第一、二节:传输层概述及端口号、复用分用等概念
获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:传输层概述(1)概述(2)从计算机网络体系结构角度看传输层(3)传输层意义二&am…...
C#:Krypton控件使用方法详解(第七讲) ——kryptonHeader
今天介绍的Krypton控件中的kryptonHeader,下面开始介绍这个控件的属性:控件的样子如上图所示,从上面控件外观来看,这个控件有三部分组成。第一部分是前面的图片,第二部分是kryptonHeader1文本,第三部分是控…...
5年软件测试工程师分享的自动化测试经验,一定要看
今天给大家分享一个华为的软件测试工程师分享的关于自动化测试的经验及干货。真的后悔太晚找他要了, 纯干货。一定要看完! 1.什么是自动化测试? 用程序测试程序,用代码取代思考,用脚本运行取代手工测试。自动化测试涵…...
什么是猜疑心理?小猫测试网科普小作文
什么是猜疑心理?猜疑心理是说一个人心中想法偏离了客观事实,牵强附会,往往是指不好的一面,对别人的一言一行都充满了不良的解读,认为这些对自己都有针对性,目的性,对自己都是不利的。猜疑心理重…...
Redis命令行对常用数据结构String、list、set、zset、hash等增删改查操作
1.Redis命令的小套路 - NX:not exist - EX:expire - M:multi 2.基本操作 ①切换数据库 Redis默认有16个数据库。 115 # Set the number of databases. The default database is DB 0, you can select 116 # a different one on a per-con…...
mycobot 使用教程
(1) 树莓派4B ubuntu系统调整swap空间与使SD卡快速扩容参考:https://www.bilibili.com/read/cv14825069https://blog.csdn.net/weixin_45824920/article/details/114381292?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edef…...
JVM学习总结,虚拟机性能监控、故障处理工具:jps、jstat、jinfo、jmap、Visual VM、jstack等
上篇:JVM学习总结,全面介绍运行时数据区域、各类垃圾收集器的原理使用、内存分配回收策略 参考资料:《深入理解Java虚拟机》第三版 文章目录三,虚拟机性能监控、故障处理工具1)jps:虚拟机进程状况工具2&…...
指针笔记(指针数组和指向数组的指针,数组中a和a的区别等)
指针数组和指向数组的指针 int *p[4]和int (*p)[4]有何区别? 前者是一个指针数组,数组大小为4,每一个元素都是一个指向int的指针 后者是指向int[4]类型数组的指针 以上代码若运行会报如下错误 main函数中定义的a数组本质是一个指向int[2]的…...
MySQL ---基础概念
目录 餐前小饮:什么是服务器?什么是数据库服务器? 一、数据库服务软件 1. 常见数据库产品 2.如何开启和停止MySQL服务 二、数据库术语及语法 1.数据库术语 2.SQL语法结构 3.SQL 语法要点 三、SQL分类 1.数据定义语言(D…...
【基础】Flink -- ProcessFunction
Flink -- ProcessFunction处理函数概述处理函数基本处理函数 ProcessFunction按键分区处理函数 KeyedProcessFunction定时器与定时服务基于处理时间的分区处理函数基于事件时间的分区处理函数窗口处理函数 ProcessWindowFunction应用案例 -- Top N处理函数概述 为了使代码拥有…...
JavaEE|网络编程基础与Socket套接字
文章目录一、为什么需要网络编程二、什么是网络编程三、网络编程中的基本概念1.发送端和接收端2.请求和响应3.客户端和服务端4.常见的客户端服务端模型四、Socket套接字概念及分类1.概念2.分类1)流套接字:使用传输层TCP协议2)数据报套接字&am…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...
