当前位置: 首页 > news >正文

操作系统 三(存储管理)

一、 存储系统的“金字塔”层次结构

  1. 设计原理:

cpu自身运算速度很快。内存、外存的访问速度受到限制

  1. 各层次存储器的特点:

1)主存储器(主存/内存/可执行存储器)

保存进程运行时的程序和数据,内存的访问速度远低于cpu执行指令的速度。

2)寄存器

cpu内部一些小型存储区域,暂时存放参与运算的指令、数据和运算结果等。

寄存器与处理机相同速度,完全与cpu协调工作,容量不大。

3)高速缓存

介于寄存器和内存之间,主要用于备份内存中较常用的数据,减少处理机对内存的访问次数。容量远大于寄存器,比内存小两个到三个数量级。为了缓和内存与处理机速度之间的矛盾。

4)磁盘缓存

缓和磁盘的I/O速度远低于内存的访问速度,主要用于暂时存放频繁使用的一部分磁盘数据,减少访问磁盘的次数。本身不实际存在,利用内存中的部分存储空间,暂时存放从磁盘中读出(写入)的信息。

  1. 结构的优点:

二、 装入、链接

  1. 装入

1)绝对装入

单道程序环境。编译后,产生绝对地址的目标代码。逻辑地址与实际地址完全相同。

2)可重定位装入

根据内存的具体情况,将装入模块装入内存的适当位置。所有逻辑地址与实际装入内存的物理地址不同。

把装入时对目标程序中指令和数据的逻辑地址变换为物理地址,称为重定位

不允许程序运行时在内存中移动位置。

3)动态运行时装入

一个进程可能被多次换出、换入,换入后位置通常不同。

在装入模块装入内存后,不会立即把装入模块中的相对地址变换为绝对地址,程序真正要执行时才进行地址变换。“动态重定位”

  1. 链接

  1. 静态链接

在程序运行之前,将各目标模块及所需库函数链接成一个完整的装配模块,不再拆开。

装配成一个装入模块时:①修改相对地址②变换外部调用符号

  1. 装入时动态链接

将用户源程序编译后所得一组目标模块,边装入边链接。

优点:

①便于修改和更新

②便于实现对目标模块的共享

  1. 运行时动态链接

在执行过程中,发现一个“被调用模块”还未被装入内存时,立即由os找到该模块,装入内存并链接到装入模块。

  1. 三、 动态分区分配算法(论述分析、计算)

  1. 首次适应算法

空闲分区链从链首开始顺序查找,大小满足就划分。

保留了高址部分的大空闲分区,低址部分不断被划分,留下很多碎片。

  1. 循环首次适应算法

从上次找到的空闲分区的下一个空闲分区开始查找,直至找到。若链尾空闲分区的大小不满足要求,应返回第一个空闲分区比较大小。

减少了查找空闲分区时的开销,使大的空闲分区较缺乏。

  1. 最佳适应算法

将所有的空闲分区按容量以从小到大的顺序排好,第一次找到能满足要求的空闲分区即是最佳。

存储器中会留下许多难以利用的碎片。

  1. 最坏适应算法

将空闲分区从大到小排好,挑选最大的空闲区,缺乏大的空闲分区。

产生碎片概率小,查找效率很高。

  1. 四、 重定位、对换

  1. 五、 分页存储 (综合应用)

系统为每个进程建立一个页表,给出“逻辑页号”和具体“内存块号”的对应关系,实现从页号到物理块号的地址映射。

设置页表始址寄存器、页表长度寄存器

优点:实现简单、易于共享、内碎片小、不存在外碎片----->改进:多级页表

缺点:页表长度过大、程序运行中不是所有页面都要装入内存

多级页表:页表也进行分页,内存仅存放当前使用的页表,不用的放在磁盘上。为小页表建一张页目录表。

逻辑地址:页目录、页表页、位移。

内存有效访问时间:

EAT=2t

引入快表后:EAT=a×λ+(1-a)×(t+λ)+t

t:一次内存访问时间 λ:查找快表所需时间 a:命中率

  1. 六、 段式存储

段表寄存器:段表起始地址、段表长度

  1. 七、 分段和分页区别

同:

都采用离散分配方式;

都通过地址映射机构实现地址变换

异:

页是信息的物理单位。分页是系统管理的需要,对用户不可见。

段是信息的逻辑单位。通常包含一组意义相对完整的信息。

页的大小固定,由系统决定。段的长度不固定,取决于用户所编写的程序。

分页的用户程序地址空间是一样的,用户程序地址属于单一的线性地址空间。分段是用户的行为,分段系统中,用户程序的地址空间是二维的,标志一个地址时需给出段名,段内地址。

  1. 八、 虚拟存储

  1. 定义

当进程运行时,先将一部分程序装入内存,另一部分暂时留在外存,当要执行的指令不在内存时,由系统自动完成将它们从外存调入内存工作。

  1. 页表(与分页对比)

  1. 缺页中断

需要访问的页面不在内存中,产生缺页中断。os接到信号后,根据页表中给出的外存地址,将该页调入内存。

内存中有空闲块,则直接分配一页,修改页表。

内存中没有空闲块,淘汰某页,若被修改过则写回外存。

  1. 页面淘汰算法

①最佳页面置换算法(OPT)

将以后永不使用或(未来)最长时间内不会被访问的页面淘汰。

保证最低缺页率。

②先进先出(FIFO)

淘汰在内存中驻留时间最长的页面。

③最近最久未使用(LRU)

淘汰最后一次访问时间距离当前时间最长的一页。

需要记录各个页的最后使用时间。

④最少使用(LFU)

淘汰最近一段时间未使用过的一页。

缺页率:缺页中断次数/总页面访问次数

  1. 抖动、工作集

抖动:进程频繁的将页面换进和换出

进程未获得足够的物理页面,缺页率非常高,导致较低的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…...

OpenSees数值模拟从入门到进阶:理论、代码与实践

OpenSees数值模拟从入门到进阶:理论、代码与实践 摘要 OpenSees(Open System for Earthquake Engineering Simulation)作为开源的地震工程模拟系统,凭借其强大的非线性分析能力和开放的架构,已成为结构地震响应分析领域的重要工具。本文系统介绍OpenSees数值模拟的基本原…...

Redis 相关命令详解及其原理

Redis 相关命令详解及其原理 文章目录Redis 相关命令详解及其原理1. Redis 简介2. Redis 安装2.1 包管理器安装2.2 源码编译安装2.4 验证安装3. Redis 基础原理3.1 单线程模型3.2 底层数据结构概述4. 数据类型详解4.1 String(字符串)底层存储结构常用命令…...

2026最权威的降重复率工具解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 知网AI检测系统会去对文本的语义连贯性展开多维分析,会对文本的句式结构进行多维…...

intv_ai_mk11实际作品:面向管理层的OKR撰写建议与周报优化样例

intv_ai_mk11实际作品:面向管理层的OKR撰写建议与周报优化样例 1. 为什么管理者需要AI辅助撰写OKR和周报 在快节奏的商业环境中,管理者常常面临一个共同挑战:如何高效地制定清晰可衡量的目标(OKR),同时保…...

Windows音频路由终极指南:如何免费实现应用程序级音频设备管理

Windows音频路由终极指南:如何免费实现应用程序级音频设备管理 【免费下载链接】audio-router Routes audio from programs to different audio devices. 项目地址: https://gitcode.com/gh_mirrors/au/audio-router 你是否曾遇到过这样的困扰:在…...

从一次系统升级说起:聊聊Android PMS如何管理/system/app下的预装应用

Android PMS深度解析:系统预装应用的管理艺术 1. 系统预装应用的特殊地位 在Android生态系统中,预装应用占据着独特的位置。这些位于/system/app目录下的应用与普通用户应用有着本质区别: 系统级权限:预装应用通常拥有更高的系统权…...

保姆级教程:用Python复现MIT Cheetah的刚体模型与正运动学(附代码)

从零实现MIT Cheetah四足机器人刚体建模与运动学仿真 四足机器人一直是机器人领域的热门研究方向,而MIT Cheetah作为开源四足机器人中的佼佼者,其设计理念和算法实现值得每一位机器人爱好者深入研究。本文将带你从零开始,用Python完整实现MI…...

从ET1100迁移到AX58100:我的EtherCAT从站代码需要重写多少?

从ET1100迁移到AX58100:EtherCAT从站代码重构实战指南 当你的产品线需要从百兆升级到千兆EtherCAT网络,或者要支持时间敏感网络(TSN)功能时,从经典的ET1100切换到AX58100几乎是必然选择。但作为经历过完整迁移周期的开发者,我必须…...

3分钟净化微信社交圈:WechatRealFriends让200+好友检测效率提升99%的秘密

3分钟净化微信社交圈:WechatRealFriends让200好友检测效率提升99%的秘密 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/Wech…...

AlphaFold单元测试:代码质量保证

AlphaFold单元测试:代码质量保证 【免费下载链接】alphafold Open source code for AlphaFold 2. 项目地址: https://gitcode.com/GitHub_Trending/al/alphafold 引言:为什么AlphaFold需要严格的单元测试? AlphaFold作为革命性的蛋白…...