【愚公系列】软考中级-软件设计师 006-计算机系统知识(存储系统)

举报
愚公搬代码 发表于 2024/01/26 21:22:06 2024/01/26
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2023年华为云十佳博主,2022年CSDN博客之星TOP2,2022年华为云十佳博主等。🏆《博客内容》:.NET、Java、...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2023年华为云十佳博主,2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏


🚀前言

计算机系统中的存储系统指的是用于存储和访问数据的硬件和软件组件。存储系统的主要目的是提供计算机系统运行所需的数据和程序的长期存储和快速访问。

存储系统主要包括以下几种类型:

  1. 主存储器(主存):也称为内存,是计算机中用于存储程序指令和数据的临时存储器。主存通常由动态随机存取存储器(DRAM)芯片组成,具有较快的读写速度。主存储器是计算机进行数据处理的关键组件。

  2. 辅助存储器(外存):也称为二级存储器,用于长期存储数据和程序。常见的辅助存储器包括硬盘驱动器、光盘和闪存驱动器等。辅助存储器的容量通常比主存储器大得多,但访问速度较慢。

  3. 高速缓存(Cache):是位于主存储器和处理器之间的存储器层次结构中的一级缓存。高速缓存用于存储最近使用的数据和指令,以提高处理器的数据访问速度。高速缓存通常由静态随机存取存储器(SRAM)构成,具有较快的读写速度。

  4. 虚拟存储器:是一种将辅助存储器扩展到主存储器的技术。虚拟存储器使用页面置换算法将主存储器中的数据和指令分成固定大小的页面,当某个页面不再被频繁使用时,可以将其置换到辅助存储器中,以释放主存储器空间。

  5. 存储器控制器:是连接计算机系统的存储器和处理器的关键组件。存储器控制器负责管理数据在各个存储层次之间的传输和调度。

存储系统的设计和优化对计算机系统的性能和效率具有重要影响。不同类型的存储器组件在容量、访问速度、成本和可靠性等方面具有不同的特点,需要根据应用需求进行选择和配置。

🚀一、存储系统

🔎1.多级存储结构

多级存储结构是计算机系统中常见的一种存储器层次结构,由多层不同速度和容量的存储设备组成,每一层都有其特定的功能和访问速度。多级存储结构一般包括以下几层:

  1. CPU寄存器:位于CPU内部的最快速度的存储器,用于存放指令和数据。寄存器的容量有限,但其访问速度非常快。

  2. 缓存存储器:位于CPU和主存之间的存储器,用于缓存主存中经常访问的数据和指令。缓存存储器的容量较小,但其访问速度比主存快很多。

  3. 主存(内存):用于存放程序和数据的主要存储设备。主存的容量较大,但其访问速度相对较慢。

  4. 辅助存储器:包括硬盘、磁带等外部存储设备,用于长期存储大量的程序和数据。辅助存储器的容量很大,但其访问速度相对主存较慢。

多级存储结构通过将数据从辅助存储器逐级加载到CPU寄存器,利用不同层次存储器之间的访问速度差异,提高了计算机系统的整体性能。
在这里插入图片描述
在这里插入图片描述

🔎2.cache

🦋2.1 cache的概念

计算机系统中的缓存(Cache)是一种高速存储器,用于暂时存储来自主存(RAM)的数据,以提高CPU访问数据的速度。缓存采用了快速的SRAM(静态随机访问存储器)技术,与主存相比,它具有更低的访问延迟和更高的带宽。

缓存的设计遵循了局部性原理,即计算机在某个时间点访问的数据和指令很可能在将来的某个时间点再次访问。缓存通过将最经常访问的数据和指令存储在靠近CPU的高速存储器中,可以减少对主存的读取次数,从而提高系统性能。

计算机系统中通常存在多级缓存,其中L1缓存是最接近CPU的一级缓存,通常包括数据缓存和指令缓存。L2缓存位于L1缓存之外,其容量较大,但速度稍慢。还可以有更多级的缓存,如L3缓存和L4缓存。缓存的层次结构主要是为了平衡容量和速度两个因素。

缓存采用了缓存行的概念,即一次从主存中读取的数据块大小。常见的缓存行大小为64字节或128字节。当CPU请求某个地址的数据时,缓存会先查看是否在缓存行中,如果是,则称为命中(Cache Hit),直接返回缓存中的数据;如果不在缓存行中,则称为不命中(Cache Miss),缓存需要从主存中加载相应的数据块,并将其存储到相应的缓存行中,然后再返回数据给CPU。

缓存还使用了缓存替换算法来决定在缓存满时应该替换哪些数据。常见的替换算法包括最近最少使用(LRU)、最不经常使用(LFU)和随机替换等。

使用cache改善系统性能的依据是程序的局部性原理

  • 时间局部性:被引用过一次的存储器位置在未来会被多次引用,主要体现是主要是循环。
  • 空间局部性:如果一个存储器的位置被引用,那么将来他附近的位置也会被引用,主要体现是顺序执行的过程。
    在这里插入图片描述
    在这里插入图片描述

🦋2.2 cache的地址映像方法

地址映射方法 描述 优点 缺点
直接映射 主存的块与 Cache块的对应关系是固定的 硬件电路设计、地址变换比较简单 冲突率较高灵活性差
全相联映射 主存与 Cache均分成大小相同的块,允许主存的任一块可以调入 Cache存储器的任何一个块的空间中 冲突率较低、主存的块调入Cache的位置不受限制,十分灵活 电路难于设计和实现,只适用于小容量的cache;无法从主存块号中直接获得 Cache的块号,变换比较复杂,速度比较慢
组相联映射 将 Cache中的块再分成组,组采用直接映像方式而块采用全相联映像方式。即主存任何区的0组只能存到 Cache的o组中1组只能存到 Cache的1组中,依此类推组内的块则采用全相联映像方式,即一组内的块可以任意存放。即主存一组中的任一块可以存入cache相应组的任一块中 直接相联与全相联的折中 直接相联与全相联的折中

在这里插入图片描述

🦋2.3 cache替换算法

☀️2.3.1 cache页面淘汰算法

算法 描述 优点 缺点
FIFO 淘汰最早被缓存的页面 实现简单 对长时间驻留在缓存中的数据不友好,可能导致高缓存命中率的数据被淘汰
LRU 淘汰最久未使用的页面 适用于热点数据,能够保留经常访问的数据 实现较复杂,需要维护访问时间的记录
LFU 淘汰访问频次最低的页面 适用于长时间内不变的数据,能够保留经常被访问的数据 对频繁变化的数据不友好,可能导致访问频次高的数据被淘汰
LRU-K 基于最近一段时间内的访问情况进行淘汰 能够平衡最近访问和长期访问的数据 实现较复杂,需要维护最近访问的记录
LRU-2 维护两个队列,淘汰最久未使用的页面 简化了LRU的实现,提高了淘汰效率 不适用于有循环访问模式的数据
随机算法 随机选择一个页面进行淘汰 实现简单,对所有数据公平,不会有特定数据被频繁淘汰的问题 缺乏策略性,可能导致缓存命中率低

在这里插入图片描述

☀️2.3.2 cache的读写过程

  • 写直达:同时写Cache与内存

  • 写 回:只写Cache,淘汰页面时,写回内存

  • 标记法:只写入内存,并将标志位清零,若用到此数据,只需要再次调取

🔎3.磁盘管理

在这里插入图片描述

🦋3.1 机械磁盘两组运动

机械磁盘存在两组运动,即旋转运动和线性运动。

  • 旋转运动:机械磁盘内部有一个可旋转的磁盘盘片,通过电机驱动,磁盘盘片以高速旋转。数据的读写头会随着盘片的旋转,移动到指定的磁道上进行数据读写操作。

  • 线性运动:机械磁盘的读写头不仅可以随着盘片的旋转运动,还可以在磁盘的半径方向上进行线性移动。通过线性运动,读写头可以准确地定位到指定的磁道上进行数据读写操作。

这两组运动的配合使得机械磁盘能够实现精确定位和高速数据读写。旋转运动提供了高速读写数据的能力,而线性运动则提供了准确定位到指定磁道的能力。

🦋3.2 机械磁盘存取时间

机械磁盘存取时间指的是计算机读取或写入数据到机械硬盘所需的时间。机械磁盘由盘片和机械臂组成,当计算机需要读取或写入数据时,机械臂会移动到盘片上特定的位置,并且盘片需要旋转到特定的扇区。因此,机械磁盘存取时间主要由以下几个因素决定:

  1. 寻道时间(Seek Time):即机械臂从当前位置移动到所需磁道的时间。机械臂的移动速度决定了寻道时间的长短。

  2. 延迟时间(Latency Time):即盘片旋转到所需扇区的时间。盘片的转速越高,延迟时间越短。

  3. 数据传输时间(Transfer Time):即数据从磁盘读取或写入的时间。传输时间取决于数据的大小和磁盘的传输速度。

机械磁盘存取时间可以表示为:

存取时间 = 寻道时间 + 延迟时间 + 数据传输时间

机械磁盘相对于固态硬盘来说,存取时间较长。固态硬盘不需要机械臂移动和盘片旋转,因此存取时间更短,速度更快。

在这里插入图片描述


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。