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

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

目录

一. 外部存储器

(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.段页式虚拟存储器

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

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

相关文章:

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

目录 一. 外部存储器 (1)磁盘存储器 1.磁盘的组成 2.磁盘的性能指标 3.磁盘地址 4.硬盘的工作过程 5.磁盘阵列 (2)固态硬盘(SSD) 二. Cache基本概念与原理 三. Cache和主存的映射方式 &#xff…...

UITableView的style是UITableViewStyleGrouped

一般情况下,UITableViewStylePlain和UITableViewStyleGrouped是UITableView常用到的style, 之前都是用到的时候,遇到问题直接用度娘,差不多就够用了,今天在修复UI提出的间隙问题,来回改,总觉得…...

Java17新增特性

前言 前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15、Java16 的特性进行了介绍,对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 Java14新增特性 Java15新增特性 Java16新增特…...

VR全景技术在城市园区发展中有哪些应用与帮助

引言: 在数字化时代的浪潮中,虚拟现实(VR)全景技术逐渐融入各个领域,也为城市园区展示带来了全新的可能性。 一.VR全景技术简介 虚拟现实全景技术是一种通过全景图像和视频模拟真实环境的技术。通过相关设…...

在 SQL 中,当复合主键成为外键时应该如何被其它表引用

文章目录 当研究一个问题慢慢深入时,一个看起来简单的问题也暗藏玄机。在 SQL 中,主键成为外键这是一个很平常的问题,乍一看没啥值得注意的。但如果这个主键是一种复合主键,而另一个表又引用这个键作为它的复合主键,问…...

Ps:通过显示大小了解图像的打印尺寸

在 Photoshop 中,如果想了解文档窗口中的图像打印出来之后的实质大小,只要知道两个数值即可。 第一个数值是图像分辨率(也称“文档分辨率”)的大小,可在Ps菜单:图像/图像大小 Image Size对话框中查询或设置…...

Linux - 驱动开发 - watchdog - SMP机制下多核确活

说明 理论上:不管IC是单核还是多核,只要watchdog有被循环feed,就不会触发超时重启,因此watchdog在SMP机制下的多核环境显得比较宽松,只要任意核存活(喂狗)就不会重启设备。 实际情况 有客户反…...

概念解析 | LoRA:低秩矩阵分解在神经网络微调中的魔力

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:基于低秩矩阵分解的神经网络微调方法LoRA LoRA:低秩矩阵分解在神经网络微调中的魔力 Low-Rank Adaptation of Large Language Models LoRA由如下论文提出,详细信息请参见论文原…...

量子计算和量子通信技术:引领潜力无限的未来

近年来,随着量子计算和量子通信技术的迅速发展,它们在各个领域的广泛应用前景引起了人们的极大兴趣。本文将深入探讨量子计算和量子通信技术的普遍应用,以及它们预示的未来,同时提出业内人士需要注意的事项。 介绍:量子…...

nodejs+vue+python+PHP+微信小程序-安卓- 电影在线订票系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…...

LightDB23.4支持mysql aes_encrypt/aes_decrypt/hex/unhex函数

背景介绍 为了兼容mysql数据库的功能,在LightDB23.4版本上支持hex/unhex/aes_encrypt/aes_decrypt函数。 函数原型如下: hex(data bytea) returns textunhex(data varchar) returns byteaaes_encrypt(data bytea, key bytea) returns byteaaes_encryp…...

uniapp——项目day04

购物车页面——商品列表区域 渲染购物车商品列表的标题区域 1. 定义如下的 UI 结构: 2.美化样式 渲染商品列表区域的基本结构 1. 通过 mapState 辅助函数,将 Store 中的 cart 数组映射到当前页面中使用: import badgeMix from /mixins/tab…...

7-爬虫-中间件和下载中间件(加代理,加请求头,加cookie)、scrapy集成selenium、源码去重规则(布隆过滤器)、分布式爬虫

0 持久化(pipelines.py)使用步骤 1 爬虫中间件和下载中间件 1.1 爬虫中间件(一般不用) 1.2 下载中间件(代理,加请求头,加cookie) 1.2.1 加请求头(加到请求对象中) 1.2.2 加cookie 1.2.3 加代理 2 scrapy集成selenium 3 源码去重…...

创建自己的nas服务,从远端拉取所需文件

一、前言 创建一个nas文件存储,然后需要的时候随时从远端或者其他终端拉取所需文件是不是一件很帅气的工作。 二、准备工作 一台服务器(云的更好),没了。 首先安装docker和docker-compose 此处省略docker的安装(改天更新)&…...

智慧化城市内涝的预警,万宾科技内涝积水监测仪

随着城市化进程的加速,伴随的是城市内涝问题日益凸显。频繁的暴雨和积水给市民的生活带来了诸多不便,也给城市的基础设施带来了巨大压力。如何解决这一问题,成为智慧城市建设的重要课题和政府管理的工作主题,只要内涝问题得到缓解…...

7-18 调用一个函数

分数 2 作者 Yiping 单位 广东东软学院 现有如下程序,请将注释后带??的代码补充完整: import mathdef normalize(normal):x normal[0]y normal[1]z normal[2]s math.sqrt(x**2 y**2 z**2)x / sy / sz / sreturn (x, y, z)if __name__ __mai…...

VB.net TCP服务端监听端口接收客户端RFID网络读卡器上传的读卡数据

本 示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) Imports System.Threading Imports System.Net Imports System.Net.Sockets Public Class Form1Dim ListenSocket As SocketDim Dict As New Dictionary(Of…...

Springboot 集成 MongoDB

在SpringBoot项目中集成MongoDB后的一些基本操作。 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 本文介绍的内容是Springboot如何集成MongoDB,以及对MongoDB进行基本的增加、查询数据的操作。 提示:以下是本篇…...

AM@定积分的定义求某些类型的极限

文章目录 定积分定义求极限步骤例 定积分表示为极限 定积分定义求极限 容易从定积分的定义: ∫ a b f ( x ) d x \int_{a}^{b}f(x)\mathrm{d}x ∫ab​f(x)dx lim ⁡ λ → 0 ∑ i 1 n f ( ξ i ) Δ x i \lim\limits_{\lambda\to{0}}\sum_{i1}^{n}f{(\xi_{i})}\Delta{x_i} λ→…...

Perl爬虫程序的框架

Perl爬虫程序的框架,这个框架可以用来爬取任何网页的内容。 perl #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use HTML::TreeBuilder; # 创建LWP::UserAgent对象 my $ua LWP::UserAgent->new; # 设置代理信息 $ua->proxy(http, ); …...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

ESP32读取DHT11温湿度数据

芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​:Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

抽象类和接口(全)

一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...