操作系统简介:存储管理

news2024/12/23 5:46:51

存储管理

  • 1. 基本概念
  • 2. 存储管理方案
    • 2.1 分区存储管理
    • 2.2 分页存储管理
    • 2.3 分段存储管理
    • 2.4 虚拟存储管理
      • 页面置换算法

存储器管理的对象是主存储器(主存、内存)。存储管理的主要功能包括 分配和回收主存空间、提高主存的利用率、扩充主存、对主存信息实现有效保护

1. 基本概念

  • 存储器结构
    存储器的功能是保存数据,存储器的发展方向是高速度、大容量和小体积。
    一般存储器的结构有“寄存器-主存-外存”结构和“寄存器-缓存-主存-外存”结构,如图所示。
    在这里插入图片描述
    存储组织的功能是在存储技术和CPU寻址技术许可的范围内组织合理的存储结构,使得各层次的存储器都处于均衡的繁忙状态。
  1. 虚拟地址。对程序员来说,数据的存放地址是由符号决定的,故称为符号名地址,或者名地址。它是从0号单元开始编址,并顺序分配所有的符号名所对应的地址单元。由于符号名地址不是主存中的真实地址,因此也称为相对地址、程序地址、逻辑地址或称虚拟地址。
  2. 地址空间。程序中由符号名组成的空间称为名空间。源程序经过汇编或编译后形成二进制的目标程序。在目标程序中,程序指令和数据的位置按照字或字节单位根据它们的相对顺序来确定,称为相对地址。把程序中由相对地址组成的空间叫做逻辑地址空间,逻辑地址空间通过地址再定位机构转换到绝对地址空间,绝对地址空间也叫物理地址空间。
  • 地址重定位
    将逻辑地址转换成主存物理地址的过程称为地址重定位。在可执行文件装入时,需要解决可执行文件中地址(指令和数据)与主存地址的对应关系,由操作系统中的装入程序(Loader)和地址重定位机构来完成。地址重定位分为静态地址重定位和动态地址重定位

2. 存储管理方案

存储管理的主要目的是解决多个用户使用主存的问题。其管理方案主要包括分区存储管理、分页存储管理、分段存储管理、段页式存储管理以及虚拟存储管理

2.1 分区存储管理

分区存储管理是早期的存储管理方案,其基本思想是把主存的用户区划分成若干个区域,每个区域分配给一个用户作业使用,并限定它们只能在自己的区域中运行,这种主存分配方案就是分区存储管理方式。按分区的划分方式不同,可分为固定分区、可变分区和可重定位分区

  1. 固定分区:静态分区方法,系统生成时固定生成,每个区域可以不等,操作系统通过主存分配情况表管理主存。
  2. 可变分区:可变分区分配需要两种管理表格:已分配表和未分配表。请求和释放分区主要有4种算法:最佳适应算法、最差适应算法、首次适应算法和循环首次适应算法
  3. 可重定位分区。基本思想是移动所有已分配好的分区,使之成为连续区域。当请求空间不足时发生。
  • 分区保护
    目的是防止未经校核的用户访问分区,常用如下两种方式:上界/下界寄存器保护(上界寄存器≤物理地址≤下界寄存器)、基址/限长寄存器保护(基址寄存器≤物理地址<基址寄存器+限长寄存器)。

2.2 分页存储管理

分页存储管理方案是对分区存储管理方案的优化。

  • 纯分页存储管理
  1. 分页原理
    将一个进程的地址空间划分成若干个大小相等的区域,称为页。相应地,将主存空间划分成与页相同大小的若干个物理块,称为块或页框。为进程分配主存时,可将进程中若干页分别装入多个不相邻接的块中。

  2. 地址结构
    分页系统的地址结构如图所示,由两部分组成:前一部分为页号P;后一部分为偏移量 W,即页内地址。图中的地址长度为 32 位,其中 0-11 位为页内地址(每页的大小为 4KB),12~31 位为页号,所以允许的地址空间大小最多为1MB 个页。
    在这里插入图片描述

  3. 页表
    将进程的每一页离散地分配到内存的多个物理块中后,系统应保证能在内存中找到每个页面所对应的物理块。为此,系统为每个进程建立了一张页面映射表,简称页表,如图所示。
    在这里插入图片描述

  4. 地址变换机构
    地址变换机构的基本任务是利用页表把用户程序中的逻辑地址变换成内存中的物理地址,即将用户程序中的页号变换成内存中的物理块号。

  • 快表
    从地址映射的过程可以发现,页式存储管理至少需要两次访问内存,第一次是访问页表,得到数据的物理地址;第二次是存取数据。若采用间接寻址访问数据,还需要再进行地址变换。为了提高访问内存的速度,可以在地址映射机构中增加一组高速寄存器,用来保存页表,这种方法需要大量的硬件开销。另一种方法是在地址映射机构中增加一个小容量的联想存储器,联想存储器由一组高速存储器组成,称为快表,用来保存当前访问频率高的少数活动页的页号及相关信息。

2.3 分段存储管理

分段存储管理是在分页管理基础上为了实现信息共享而提出。段是信息的逻辑单位,允许若干个进程共享一个或多个段,可简单地实现段的保护。
在分段存储管理方式中,作业的地址空间被划分为若干段,每段是一组完整的逻辑信息,如主程序段、子程序段、数据段及堆栈段等,每段都有自己的名字,都是从零开始编址的一段连续的地址空间,各段长度不等。分段系统的地址结构如图所示,逻辑地址由段号(名)和段内地址两部分组成,在该地址结构中,允许一个作业最多有64K段,每段的最大长度为64KB。
在这里插入图片描述

2.4 虚拟存储管理

如果一个作业的部分内容装入主存便可开始启动运行,其余部分暂时留在磁盘上,需要时再装入主存。这样,可以有效地利用主存空间。从用户角度看,该系统所具有的主存容量将比实际主存容量大得多,人们把这样的存储器称为虚拟存储器。虚拟存储器是为了扩大主存容量而采用的一种设计方法,其容量是由计算机的地址结构决定的。

  • 程序局部性原理:程序在执行时将呈现出局部性规律,即在一段时间内,程序的执行仅局限于某个部分。程序的局限性表现在时间局限性空间局限性两个方面。
  • 虚拟存储器的实现
    虚拟存储器具有请求调入功能置换功能,可以把作业的一部分装入主存使其开始运行,能从逻辑上对主存容量进行扩充。虚拟存储器的逻辑容量由主存和外存容量之和以及 CPU 可寻址的范围来决定,其运行速度接近于主存速度,成本接近于外存。虚拟存储器实现主要有以下3 种方式。
    1. 请求分页系统。以页为单位调入和置换来执行程序。
    2. 请求分段系统。以段为单位
    3. 请求段页式系统。
  • 请求分页管理的实现
    请求分页是在纯分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储系统,是目前常用的一种虚拟存储器的方式。
    在请求分页系统中,每当所要访问的页面不在主存时,便产生一个缺页中断,请求调入所缺的页。缺页中断与一般中断的主要区别在于:缺页中断在指令执行期间产生和处理中断信号,而一般中断在一条指令执行结束后,下一条指令开始执行前检查和处理中断信号;缺页中断返回到被中断指令的开始重新执行该指令,而一般中断返回到下一条指令执行;一条指令在执行期间,可能会产生多次缺页中断。

页面置换算法

在进程运行过程中,如果发生缺页而内存中又无空闲块时,为了保证进程能正常运行,就必须从内存中调出一页程序或数据送入磁盘的对换区。置换算法的好坏将直接影响系统的性能,不适当的算法可能会导致刚被换出的页很快又被访问,需重新调入,使得系统频繁地更换页面,以致一个进程在运行中把大部分时间花费在页面置换工作上,称该进程发生了**“抖动”(Thrashing,也称颠簸)**。请求分页系统的核心问题是选择合适的页面置换算法。常用的页面置换算法如下所述。

  1. 最佳置换算法:选择那些永不使用,或者是在最长时间内不再被访问的页面置换出去。但是要确定哪一个页面是未来最长时间内不再被访问的,很难估计。
    在这里插入图片描述
    发生9次缺页中断,发生了6次页面置换。

  2. 先进先出置换算法:总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。但是可能发生Belady现象,是指如果对一个进程未分配它所要求的全部页面,有事就会出现分配的页面数增加但缺页率反而增加的异常现象。
    在这里插入图片描述
    发生15次缺页中断,发生了12次页面置换。

  3. 最近最少使用置换算法:选择最近最少使用的页面予以淘汰,系统在每个页面设置一个访问字段,用于记录这个页面自上次被访问以来所经历的时间T,当要淘汰一个页面时,选择T最大的页面。
    在这里插入图片描述
    产生了12次缺页中断,发生了9次页面置换。

  4. 最近未用置换算法
    NRU 算法是将最近一段时间未引用过的页面换出。这是一种 工RU 的近似算法。该算法为每个页面设置一位访问位,将内存中的所有页面通过链接指针连成一个循环队列。当某页被访问时,其访问位置 1。在选择一页淘汰时,就检查其访问位,如果是0,就选择该页换出;若为 1,则重新置为 0,暂不换出该页,在循环队列中检査下一个页面,直到找到访问位为0的页面为止。该算法只有一位访问位,只能用它表示该页是否已经使用过,若未使用过,则可将其置换出去。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】探索机器学习在旅游业的革新之旅

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习在旅游需求分析中的应用&#x1f31e;用户行为数据分析&#x1f319;旅客偏好预测模型⭐…

【Spring】为什么不建议使用@Autowired

【Spring】为什么不建议使用Autowired 开篇词&#xff1a;干货篇&#xff1a;1.知识回顾2.Autowired和其他注入方式的对比1.Autowired 注入&#xff08;字段注入&#xff09;2.构造器注入3.Setter 方法注入 3.为什么spring官方不推荐使用1. 违反封装原则2. 依赖关系不明确3. 难…

yolo V8训练 长条状目标

1、说明 目标数据集合中有很多长条状图片&#xff0c;如果直接Resize 会严重拉伸&#xff0c;因此采用把长条图像裁剪成2段&#xff0c;然后将裁剪后的2段图片拼接在一起。 2、代码 2.1 C 代码 &#xff08;部署&#xff0c;模型推理时C &#xff09; #include <stdio.h…

讯飞星火极速超拟人交互技术:语音端到端,8 月底开放;昆仑万维发布 AI 短剧平台 SkyReels丨RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

Linux驱动开发基础(中断)

所学来自百问网 目录 1. 嵌入式中断系统 2. 中断处理流程 3. 异常向量表 4. Linux系统对中断的处理 4.1 ARM 处理器程序运行的过程 4.2 保护现场 5. Linux 系统对中断处理的演进 5.1 硬件中断和软件中断 5.2 中断拆分(上半部和下半部) 5.2.1 tasklet 5.2.2 工作队列…

iPad协议08算法新版

iPad协议是一种模拟iPad端微信的人工操作&#xff0c;并与微信服务器进行通信的协议。该协议涉及到一些关键点&#xff0c;包括PB协议、mmtls、07加密算法、rqt算法、aes加密、rsa加密等。只要理解了这些关键点&#xff0c;就可以模拟官方微信的所有功能&#xff0c;并且还可以…

基于STM32开发的智能家用能源管理系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化能源监测与数据处理能源管理与控制Wi-Fi通信与远程监控应用场景 家庭能源使用优化智能电力监控常见问题及解决方案 常见问题解决方案结论 1. 引言 随着能源需求的不断增长和环境保…

redis随笔记

缓存穿透。key不存在。恶意攻击、代码问题。加布隆过滤器&#xff0c;或者为空就返回。 缓存失效&#xff08;击穿&#xff09;。key刚好过期。缓存时间随机数。 缓存雪崩。缓存层宕机&#xff0c;一下子袭击数据库。缓存高可用、限流熔断、提前演练。 布隆过滤器就是一个key…

文档透明加密软件是什么?有哪些功能?一文给您详解!

文档透明加密软件是一种在不影响用户正常操作习惯的前提下&#xff0c;自动对电子文档进行加密和解密的技术解决方案。 其核心特点在于“透明性”&#xff0c;即用户在打开、编辑或保存文档时&#xff0c;无需进行任何额外的加密或解密操作&#xff0c;这些过程均在系统后台自…

【深度学习】【多模态】使用MiniCPM-V 2.6进行图片OCR

文章目录 ocr评价ocr 下载项目:https://huggingface.co/openbmb/MiniCPM-V-2_6 准备一个图片’test.jpg’。 将下面的python中的目录地址换成MiniCPM-V-2_6项目所在地址。然后执行: # test.py import torch from PIL import Image from transformers import AutoModel, Aut…

网络主播被正式认定为国家新职业

网络主播这一职业正式获得国家认可&#xff0c;标志着这一工作已成为一项正当且受认可的职业&#xff0c;而不再只是灵活就业的选项。近日&#xff0c;人力资源和社会保障部公布了新增的19个新职业信息&#xff0c;其中包括网络主播。对于从事直播行业的人来说&#xff0c;这是…

zabbix实战-磁盘空间告警

1.创建监控项 选择&#xff1a;键值&#xff1a;vfs.fs.size[fs,<mode>] 。 直接写 vfs.fs.size[fs,<mode>]是不出数据的。我们要写具体的值 &#xff1a;vfs.fs.size[/,free] &#xff0c;这个表示查看根的剩余空间。 2.创建图形 为磁盘剩余空间监控项创建图形&am…

cdn刷新预热

1、访问 cdn 控制台的 刷新预热 页面&#xff0c;填写需要刷新预热的url地址 阿里云&#xff1a; 腾讯云&#xff1a; 2、通过调用cdn的api接口刷新预热 阿里云&#xff1a; 调用RefreshObjectCaches-刷新缓存_CDN(CDN)-阿里云帮助中心 调用PushObjectCache-预热URL_CDN(CD…

前端宝典九:React Native从入门到精通实战

本文主要介绍 React Native新旧框架对比React与React Native区别React Native性能优化 其中第3点React Native性能优化的拆包分包&#xff0c;是项目实战中使用过的&#xff0c;在这里整理分享&#xff0c;如果没有用过的小伙伴会觉得晦涩难懂&#xff0c;建议按照在实际项目…

【等保测评】IIS模拟测评

一、身份鉴别 a)应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别信息具有复杂度要求并定期更换&#xff1b; 结果记录&#xff1a;此项不适用&#xff0c;IIS中间件无管理控制台&#xff0c;身份鉴别功能依赖于所部署的服务器 b)应具有…

计算机毕业设计 心理健康服务系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

创新驱动发展,SiLM5768LCG-DG 支持输入输出同相逻辑 带互锁功能的六通道数字隔离器 科技稳健赋能,工业汽车应用安全升级!

SiLM5768Lx系列带互锁功能的六通道数字隔离器选型表: SiLM5768LCG-DG:支持输入输出同相逻辑 SiLM5768LNCG-DG:支持输入输出反相逻辑 数字隔离器广泛应用于工业、汽车和通信等领域&#xff0c;为系统中的强电和弱电电路提供了安全、可靠的电气隔离解决方案&#xff0c;确保强…

【TCP】核心机制:延时应答、捎带应答和面向字节流

文章目录 延时应答捎带应答面向字节流粘包问题方案一&#xff1a;指定分隔符方案二&#xff1a;指定数据的长度 TCP 报头首部长度保留&#xff08;6 位&#xff09;选项序号确认序号 延时应答 尽可能降低可靠传输带来的性能影响 提升性能>让滑动窗口变大 如果我们立即返回 …

Chat App 项目之解析(二)

Chat App 项目介绍与解析&#xff08;一&#xff09;-CSDN博客文章浏览阅读76次。Chat App 是一个实时聊天应用程序&#xff0c;旨在为用户提供一个简单、直观的聊天平台。该应用程序不仅支持普通用户的注册和登录&#xff0c;还提供了管理员登录功能&#xff0c;以便管理员可以…

Docker最佳实践进阶(二):Docker Compose部署SpringCloud微服务项目

大家好&#xff0c;在上篇文章中博主演示了Dockerfile常用的命令&#xff0c;以及如何利用Dockerfile构建镜像&#xff0c;生成容器服务&#xff0c;但是在实际应用环境中&#xff0c;特别是在微服务架构中&#xff0c;一个应用系统可能包含多个微服务&#xff0c;每个微服务可…