7.外部存储器,Cache,虚拟存储器

news2024/12/29 10:21:55

目录

一. 外部存储器

(1)磁盘存储器

1.磁盘的组成

2.磁盘的性能指标

3.磁盘地址

4.硬盘的工作过程

5.磁盘阵列

(2)固态硬盘(SSD)

二. Cache基本概念与原理

三. Cache和主存的映射方式

(1)全相连映射

(2)直接映射

(3)组相联映射

四. Cache的替换算法

(1)随机算法(RAND)

(2)先进先出算法(FIFO)

(3)近期最少使用算法(LRU)

(4)最不经常使用算法(LFU)

五. Cache的写策略

(1)Cache写命中

1.写回法

2.全写法

(2)Cache写不命中

1.写分配法

2.非写分配法

六. 虚拟存储器

(1)页式存储器

(2)虚拟存储器

1.页式虚拟存储器

2.段式虚拟存储器

3.段页式虚拟存储器


一. 外部存储器

计算机的外存储器又称为辅助存储器,目前主要使用磁表面存储器。
所谓“磁表面存储”,是指把某些磁性材料薄薄地涂在金属铝或塑料表面上作为载磁体来存储信息。磁盘存储器、磁带存储器和磁鼓存储器均属于磁表面存储器。

(1)磁盘存储器

磁表面存储器的优点:

  • 存储容量大,位价格低
  • 记录介质可以重复使用
  • 记录信息可以长期保存而不丢失,甚至可以脱机存档
  • 非破坏性读出,读出时不需要再生

磁表面存储器的缺点:

  • 存取速度慢
  • 机械结构复杂
  • 对工作环境要求较高
1.磁盘的组成

存储区域:一块硬盘含有若干个记录面,每个记录面划分为若干条磁道,而每条磁道又划分为若干个扇区,扇区(也称块)是磁盘读写的最小单位,也就是说磁盘按块存取。

硬盘存储器由磁盘驱动器,磁盘控制器和盘片组成。

  • 磁盘驱动器:核心部件是磁头组件和盘片组件,温彻斯特盘是一种可移动头固定盘片的硬盘存储器。
  • 磁盘控制器:是硬盘存储器和主机的接口,主流的标准有IDE、SCSI、SATA等。
2.磁盘的性能指标

①磁盘的容量:一个磁盘所能存储的字节总数称为磁盘容量。磁盘容量有非格式化容量和格式化容量之分。

  • 非格式化容量是指磁记录表面可以利用的磁化单元总数。
  • 格式化容量是指按照某种特定的记录格式所能存储信息的总量。

②记录密度:记录密度是指盘片单位面积上记录的二进制的信息量,通常以道密度、位密度和面密度表示。

  • 道密度是沿磁盘半径方向单位长度上的磁道数;
  • 位密度是磁道单位长度上能记录的二进制代码位数;注意:磁盘所有磁道记录的信息量一定是相等的,并不是圆越大信息越多,故每个磁道的位密度都不同。
  • 面密度是位密度和道密度的乘积。

③平均存取时间:平均存取时间=寻道时间(磁头移动到目的磁道)+旋转延迟时间(磁头定位到所在扇区)+传输时间(传输数据所花费的时间)。

④数据传输率:磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率。

假设磁盘转数为r(转/秒),每条磁道容量为N个字节,则数据传输率D=rN。

3.磁盘地址

4.硬盘的工作过程

硬盘的主要操作是寻址、读盘、写盘。每个操作都对应一个控制字,硬盘工作时,第一步是取控制字,第二步是执行控制字。
硬盘属于机械式部件,其读写操作是串行的,不可能在同一时刻既读又写,也不可能在同一时刻读两组数据或写两组数据。

5.磁盘阵列

RAID ( Redundant Array of lnexpensive Disks,廉价冗余磁盘阵列)是将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性和安全性。RAID的分级如下所示。在RAID1~RAID5的几种方案中,无论何时有磁盘损坏,都可以随时拔出受损的磁盘再插入好的磁盘,而数据不会损坏。

  • RAID0:无冗余和无校验的磁盘阵列。RAID0把连续多个数据块交替地存放在不同物理磁盘的扇区中,几个磁盘交叉并行读写,不仅扩大了存储容量,而且提高了磁盘数据存取速度,但RAID0没有容错能力。
  • RAID1:镜像磁盘阵列。RAID1是为了提高可靠性,使两个磁盘同时进行读写,互为备份,如果一个磁盘出现故障,可从另一磁盘中读出数据。两个磁盘当一个磁盘使用,意味着容量减少一半。
  • RAID2:采用纠错的海明码的磁盘阵列。
  • RAID3:位交叉奇偶校验的磁盘阵列。
  • RAID4:块交叉奇偶校验的磁盘阵列。
  • RAID5:无独立校验的奇偶校验磁盘阵列。

(2)固态硬盘(SSD)

固态硬盘的结构:

固态硬盘读写的基本单位:页

固态硬盘以块(block)为单位"擦除",擦干净的块,其中的每页都可以写一次,读无限次。所以在修改一个页的数据时,先把块内其他页的数据复制到别的块,然后把原来块擦除,最后向其他数据复制到的块写入新页,闪存翻译层会修改地址和物理位置的映射关系。所以固态硬盘的写操作远远慢于读操作,此外固态硬盘支持随机访问。

二. Cache基本概念与原理

实际上,Cache被集成在CPU内部。Cache用SRAM实现,速度快,成本高。

程序访问的空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的(Eg:数组元素、顺序执行的指令代码)。
程序访问的时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息(Eg:循环结构的指令代码)。
基于局部性原理,不难想到,可以把CPU目前访问的地址“周围”的部分数据放到Cache中。

在矩阵按行存储的情况下,程序B的表现就比程序A“差”,因为它违背局部性原理。

t_c为访问一次Cache所需时间,t_m为访问一次主存所需时间。命中率H:CPU欲访问的信息已在Cache中的比率,则缺失(未命中)率M= 1-H
Cache—主存系统的平均访问时间为(设先访问Cache,若Cache未命中再访问主存):t=Ht_c+(1-H)(t_c+t_m)
如果设Cache和主存同时访问,Cache找到数据立即停止访问主存:t=Ht_c+(1-H)t_m

基于局部性原理,不难想到,可以把CPU目前访问的地址“周围”的部分数据放到Cache中。如何界定“周围”?——将主存的存储空间“分块”,如:每1KB为一块。主存与Cache之间以“块”为单位进行数据交换。

注:操作系统中,通常将主存中的一个“块”也称为—个页/页面/页框”,Cache中的“块”也称为“行”。

三. Cache和主存的映射方式

如何区别Cache和主存数据块的映射方式?

(1)全相连映射

(2)直接映射

因为是和Cache总块数取余,所以从二进制的角度看,主存块号后几位就是Cache块号,所以标记主存块号地址可以少标记几位:

(3)组相联映射

和直接映射类似:

四. Cache的替换算法

(1)随机算法(RAND)

(2)先进先出算法(FIFO)

抖动现象:频繁的换入换出现象(刚被替换的块很快又被调入)

(3)近期最少使用算法(LRU)

LRU算法基于“局部性原理”,近期被访问过的主存块,在不久的将来也很有可能被再次访问,因此淘汰最久没被访问过的块是合理的。LRU算法的实际运行效果优秀,Cache命中率高。若被频繁访问的主存块数量>Cache行的数量,则有可能发生抖动。如:1,2,3,4,5,1,2,3,4,5...

(4)最不经常使用算法(LFU)

LFU算法:曾经被经常访问的主存块在未来不一定会用到(如:微信视频聊天相关的块),并没有很好地遵循局部性原理,因此实际运行效果不如LRU。

五. Cache的写策略

解决Cache与主存内容可能不一致的情况。此时分两种情况:

(1)Cache写命中
1.写回法

写回法(write-back)——当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存(增设一个“脏位”表示其是否被修改)。写回法减少了访存次数,但存在数据不一致的隐患。

2.全写法

全写法(写直通法,write-through)——当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲(write buffer)。访存次数增加,速度变慢,但更能保证数据一致性。

使用写缓冲,CPU写的速度很快,若写操作不频繁,则效果很好。若写操作很频繁,可能会因为写缓冲饱和而发生阻塞。

(2)Cache写不命中
1.写分配法

写分配法(write-allocate)——当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache中修改。通常搭配写回法使用。

2.非写分配法

非写分配法(not-write-allocate)——当CPU对Cache写不命中时只写入主存,不调入Cache。搭配全写法使用。

多级Cache

六. 虚拟存储器

(1)页式存储器

页式存储:一个程序(进程)在逻辑上被分为若干个大小相等的“页面”,“页面”大小与“块”的大小相同。每个页面可以离散地放入不同的主存块中(否则,在内存种找到连续的,空闲的块,会使得内存利用率很低)。

逻辑地址与物理地址:

页表:逻辑块号→主存块号。CPU执行的机器指令中,使用的是“逻辑地址”,因此需要通“页表”将逻辑地址转为物理地址。页表的作用:记录了每个逻辑页面存放在哪个主存块中。

查询页表需要进行一次访问内存的操作。仿照Cache和内存的思想:Cache——快表,存经常访问的页表项;页表——就是上面的页表。但注意区别:快表中存储的是页表项的副本;Cache中存储的是主存块的副本。

增加了快表之后,CPU访存如下:

(2)虚拟存储器
1.页式虚拟存储器

应用程序的使用:也不必调入全部数据到内存中。

  • 逻辑页号:程序分页的页号。
  • 主存块号:分页在运行内存中的存储位置。
  • 外存块号:分页在外存(硬盘)中的存储位置。
  • 有效位:分页是否被调入内存。
  • 访问位:访问次数,在淘汰页时可以实现诸如LRU等算法。
  • 脏位:这一页数据是否被修改过,否则写回辅存时要注意。
2.段式虚拟存储器

3.段页式虚拟存储器

把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,
程序对主存的调入、调出仍以页为基本传送单位。每个程序对应一个段表,每段对应一个页表。

虚拟地址:段号+段内页号+页内地址

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

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

相关文章

RabbitMQ-基础篇-黑马程序员

代码: 链接: https://pan.baidu.com/s/1nQBIgB_SbzoKu_XMWZ3JoA?pwdaeoe 提取码:aeoe 微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调…

OCR转换技巧:如何避免图片转Word时出现多余的换行?

在将图片中的文字识别转换为Word文档时,我们很多时候时会遇到识别内容的一个自然段还没结束就换行的问题,这些就是我们常说的多余换行的问题。为什么会产生这个问题呢?主要是由于OCR返回的识别结果是按图片上的文字换行而换行,而不…

解决Mac配置maven环境后,关闭终端后环境失效的问题(适用于所有终端关闭后环境失效的问题)

目录 问题的原因 解决方式一、每次打开终端时输入:"source ~/.bash_profile",这个方式比较繁琐 解决方式二、我们终端输入"vim ~/.zshrc"打开".zshrc"文件 1、我们输入以下代码: 2、首先需要按 " i…

【java:牛客每日三十题总结-7】

java:牛客每日三十题总结 总结如下 总结如下 执行流程如下:创建HttpServlet时需要覆盖doGet()和doPost请求 2. request相关知识 request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据;request.…

保姆级使用vuedraggable三方组件

第一步 引入vuedraggable npm i vuedraggable -S 第二步 直接使用&#xff0c;源码如下 <template><draggableclass"list-group"tag"ul"v-model"list"v-bind"{animation: 1000,group: description,disabled: false,ghostClass:…

软路由R4S+iStoreOS实现公网远程桌面局域网内电脑

软路由R4SiStoreOS实现公网远程桌面局域网内电脑 文章目录 软路由R4SiStoreOS实现公网远程桌面局域网内电脑简介 一、配置远程桌面公网地址配置隧道 二、家中使用永久固定地址 访问公司电脑具体操作方法是&#xff1a;2.1 登录页面2.2 再次配置隧道2.3 查看访问效果 简介 上篇…

Load-balanced-online-OJ-system 负载均衡的OJ系统项目

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 本项目Github地址 - Load-balanced-o…

pdf增强插件 Enfocus PitStop Pro 2022 mac中文版功能介绍

Enfocus PitStop Pro mac是一款 Acrobat 插件&#xff0c;主要用于 PDF 预检和编辑。这个软件可以帮助用户检查和修复 PDF 文件中的错误&#xff0c;例如字体问题、颜色设置、图像分辨率等。同时&#xff0c;Enfocus PitStop Pro 还提供了丰富的编辑工具&#xff0c;可以让用户…

ESP32网络开发实例-BME280传感器数据保存到InfluxDB时序数据库

BME280传感器数据保存到InfluxDB时序数据库 文章目录 BME280传感器数据保存到InfluxDB时序数据库1、BM280和InfluxDB介绍2、软件准备3、硬件准备4、代码实现在本文中,将详细介绍如何将BME280传感器数据上传到InfluxDB中,方便后期数据处理。 1、BM280和InfluxDB介绍 InfluxDB…

08【保姆级】-GO语言的函数、包、错误处理

08【保姆级】-GO语言的函数、包、错误处理 一、 函数基本介绍1.1 基本概念1.2 包的概念1.3 包使用的注意事项和细节1.4 函数的调用机制1.5 函数的递归调用1.6 函数使用的注意事项和细节讨论1.7 init函数1.8 匿名函数1.8.1 匿名函数使用方式1.8.2 全局匿名函数 1.9 闭包1.9.1 闭…

基于flask+bootstrap4实现的注重创作的轻博客系统项目源码

一个注重创作的轻博客系统 作为一名技术人员一定要有自己的博客&#xff0c;用来记录平时技术上遇到的问题&#xff0c;把技术分享出去就像滚雪球一样会越來越大&#xff0c;于是我在何三博客的基础上开发了[l4blog]&#xff0c;一个使用python开发的轻量博客系统&#xff0c;…

微信小程序广告banner、滚动屏怎么做?

使用滑块视图容器swiper和swiper-item可以制作滚动屏&#xff0c;代码如下&#xff1a; wxml: <swiper indicator-dots indicator-color"rgba(255,255,255,0.5)" indicator-active-color"white" autoplay interval"3000"><swiper-ite…

达梦数据库安装

一、官网参考文档 达梦数据库官网&#xff1a;https://www.dameng.com/ &#xff0c;参考文档如下&#xff1a; 最后的文档地址为&#xff1a;Docker安装 | 达梦技术文档 二、dcoker安装 docker基本按照官网来就行&#xff0c;点击相应的链接下载镜像包。 复制到linux中&#x…

基于卷积神经网络和客源注意力机制的OD客流预测模型

文章信息 论文题目为《An origin–destination passenger flow prediction system based on convolutional neural network and passenger source-based attention mechanism》&#xff0c;该文于2023年发表于Expert Systems With Applications期刊上。文章提出一种基于乘客源注…

成都瀚网科技有限公司抖音带货正规

随着互联网的蓬勃发展&#xff0c;越来越多的公司开始利用网络平台进行产品销售。其中&#xff0c;抖音作为一款广受欢迎的短视频平台&#xff0c;已经成为众多商家眼中的“香饽饽”。在这场电商狂欢中&#xff0c;成都瀚网科技有限公司&#xff08;以下简称“瀚网科技”&#…

果园自主跟随碎枝机器人

开发背景 农业扶贫项目—— 开发一款适用于猕猴桃果园的跟随碎枝机器人。 在猕猴桃的种植培育过程中&#xff0c;一项非常重要的环节便是剪枝&#xff0c;通常有冬剪和夏剪。以往果农剪完枝条后要将散落于地的枝条归拢后统一粉碎还田。这需要专门收集地面上的枝条并将其归拢到…

Ubuntu环境下为串口设置别名

本文介绍Ubuntu环境下为串口设置别名。 Ubuntu环境下&#xff0c;有时候开发调试会使用到USB转串口&#xff0c;本文介绍在不同使用场景下为串口设置别名的方法。主要分为绑定设备ID和绑定USB端口号。 1.绑定设备ID 绑定设备ID适用于USB转串口的设备ID唯一的情况&#xff0c…

线性代数本质系列(一)向量,线性组合,线性相关,矩阵

本系列文章将从下面不同角度解析线性代数的本质&#xff0c;本文是本系列第一篇 向量究竟是什么&#xff1f; 向量的线性组合&#xff0c;基与线性相关 矩阵与线性相关 矩阵乘法与线性变换 三维空间中的线性变换 行列式 逆矩阵&#xff0c;列空间&#xff0c;秩与零空间 克莱姆…

MySQL的SQL预编译及防SQL注入

文章目录 1 SQL语句的执行处理1.1 即时SQL1.2 预处理SQL1.2.1 预编译SQL的实现步骤1.2.2 预编译SQL的C使用举例1.2.3 MYSQL_BIND()函数中的参数类型&#xff1a; 2 SQL注入2.1 什么是SQL注入2.2 如何防止SQL注入 1 SQL语句的执行处理 SQL的执行可大致分为下面两种模式&#xf…

Linux环境实现mysql所在服务器定时同步数据文件到备份服务器(异地容灾备份场景)

目录 概述 1、建立ssh连接 1.1、操作mysql所在服务器 1.2、操作备份文件服务器 2、创建脚本实现备份以及传输 3、配置定时任务 概述 应对异地容灾备份场景&#xff0c;mysql所在服务器和本分服务器需要建立ssh连接&#xff0c;每天mysql服务器通过定时任务执行脚本&…