当前位置: 首页 > 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…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层&#xf…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...