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

目录

[一. 外部存储器](#一. 外部存储器)

(1)磁盘存储器

1.磁盘的组成

2.磁盘的性能指标

3.磁盘地址

4.硬盘的工作过程

5.磁盘阵列

(2)固态硬盘(SSD)

[二. Cache基本概念与原理](#二. Cache基本概念与原理)

[三. Cache和主存的映射方式](#三. Cache和主存的映射方式)

(1)全相连映射

(2)直接映射

(3)组相联映射

[四. Cache的替换算法](#四. Cache的替换算法)

(1)随机算法(RAND)

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

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

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

[五. Cache的写策略](#五. 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"差",因为它违背局部性原理。

为访问一次Cache所需时间,为访问一次主存所需时间。命中率H:CPU欲访问的信息已在Cache中的比率,则缺失(未命中)率M= 1-H

Cache---主存系统的平均访问时间为(设先访问Cache,若Cache未命中再访问主存):

如果设Cache和主存同时访问,Cache找到数据立即停止访问主存:

基于局部性原理,不难想到,可以把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.段页式虚拟存储器

把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,

程序对主存的调入、调出仍以页为基本传送单位。每个程序对应一个段表,每段对应一个页表。

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

相关推荐
yaosheng_VALVE13 小时前
探究全金属硬密封蝶阀的奥秘-耀圣控制
运维·eclipse·自动化·pyqt·1024程序员节
dami_king13 小时前
SSH特性|组成|SSH是什么?
运维·ssh·1024程序员节
YY_D_S_5 天前
【机组】概述精炼考点(冯诺依曼、层次结构、翻译语言、执行程序的过程、基本工作原理、运算器、控制器、存储器)
计算机组成原理·机组
一个通信老学姐5 天前
专业125+总分400+南京理工大学818考研经验南理工电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
sheng12345678rui5 天前
mfc140.dll文件缺失的修复方法分享,全面分析mfc140.dll的几种解决方法
游戏·电脑·dll文件·dll修复工具·1024程序员节
huipeng9266 天前
第十章 类和对象(二)
java·开发语言·学习·1024程序员节
earthzhang20217 天前
《深入浅出HTTPS》读书笔记(19):密钥
开发语言·网络协议·算法·https·1024程序员节
爱吃生蚝的于勒7 天前
计算机基础 原码反码补码问题
经验分享·笔记·计算机网络·其他·1024程序员节
earthzhang20218 天前
《深入浅出HTTPS》读书笔记(20):口令和PEB算法
开发语言·网络协议·算法·https·1024程序员节
一个通信老学姐8 天前
专业140+总分410+浙江大学842信号系统与数字电路考研经验浙大电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节