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

设计原理:
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…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...