0


【操作系统入门到成神系列 二】磁盘比内存慢几万倍?

  • 👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,Java领域新星创作者。
  • 📝个人公众号:爱敲代码的小黄(回复 “技术书籍” 可获千本电子书籍)
  • 📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙
  • 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
  • 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
  • 🍂博主正在努力完成2022计划中:以梦为马,扬帆起航,2022追梦人

文章目录

磁盘比内存慢几万倍?

内存和硬盘都属于计算机的存储设备,断电后内存中的数据会丢失的,而硬盘不会,因为硬盘是一个 持久化的存储设备,也是一个 I/O 设备。

我们CPU内部也有存储数据的组件,比如:寄存器、CPU L1、L2、L3 Cache 也属于存储设备。

那问题来了,我们这些存储设备,谁的速度最快,谁的速度又最慢呢?

img

一、引言

本文参考 小林coding 的《图解操作系统》,也是我十分喜欢的一个公众号博主,为他打 call

老读者知道我之前再写

Kafka

的博文,为什么突然开始写操作系统的呢?

原因在于:

当我看到

Kafka

服务端的一些 IO 操作时,我发现我看不懂了,了解之后发现这里

Netty

的概念。

当我尝试了解 IO 时,我发现一些内存、磁盘的交换,搞的我焦头烂额,于是,想静下心来从头开始。

当我把 小林coding 的 《图解操作系统》看完之后,我发现对操作系统的理解更上一层楼。

用一段话,作为今天的开场白:

读书的根本目的,未必是解决现实问题,它更像一场心灵的抚慰。
一个喜欢读书的人,可能不会记得自己读过哪些书。
但是那些看过的故事、收获的感悟、浸染过的气质,就像一颗种子,会在你的身体里慢慢发芽长大,不断提升你的认知,打开你的视野。

二、存储器的层次结构

大学准备考试了,你去图书馆临时抱佛脚。那么在看书的时候,我们的大脑会思考问题,也会记忆知识点。另外,我们通常也会把常用的书摆在自己的桌子上,当我们找一本不常用的书时,需要去书架进行寻找。

图书馆的例子对比我们的存储结构:

  • 大脑思考问题:寄存器
  • 记忆知识点:L1、L2、L3 Cache
  • 常用的书:内存
  • 书架的书:磁盘

img

对于存储器,它的速度越快、能耗会越高、而且材料的成本也是越贵的,以至于速度快的存储器的容量都比较小。

存储器的级别一般如下:

img

  • 寄存器
  • CPU Cache - L1-Cache- L2-Cache- L3-Cache
  • 内存
  • SSD/HDD 硬盘

1. 寄存器

寄存器的数量通常在几十到几百之间,寄存器的访问速度非常快,一般在半个CPU时钟周期完成读写。

比如 2 GHz 主频的CPU,

时钟周期 = 1 / 2G = 0.5ns(纳秒)
  • 32 位的寄存器可以存储 4 个字节
  • 64 位的寄存器可以存储 8 个字节

2. CPU Cache

CPU Cache 使用的是一种

SRAM

的芯片,只要有电,数据就可以一直存在,而一旦断电,数据就会丢失。

一个

SRAM

芯片。一个

bit

的数据,通常需要 6 个晶体管。

CPU Cache 可以分 L1、L2、L3 三级高速缓存:

img

2.1 L1 高速缓存

时间:

2-4

个时钟周期

大小:32KB + 32KB

组成:指令缓存和数据缓存

2.2 L2 高速缓存

时间:

10-20

个时钟周期

大小:256KB

组成:数据缓存

2.3 L3 高速缓存

时间:

20-60

个时钟周期

大小:3M

组成:数据缓存

3. 内存

内存使用的是

DRAM

的芯片,一个

bit

的数据,只需要一个晶体管和一个电容就能存储。内存速度大概在

200-300

时钟周期。

4. SSD/HDD 硬盘

SSD 我们常说的固态硬盘,相对内存最大的优点是:断电后可以保存数据。内存读写速度比SSD快

10-1000

倍。

HDD 我们常说的机械硬盘,内存的读写速度比HDD快

10W

倍。

三、存储器的层级关系

CPU 不会和每一种存储器设备打交道,每一种存储器只会和他们相邻的存储器设备打交道。

比如:CPU Cache 的数据是从内存加载过来的,写回数据的时候也只写回到内存,CPU Cache 不会直接把数据写到硬盘,也不会直接从硬盘加载数据,而是先加载到内存,再从内存加载到 CPU Cache 中。

img

所以,每个存储器只和相邻的一层存储器设备打交道,并且存储设备为了追求更快的速度,所需的材料成本必然也是更高,也正因为成本太高,所以 CPU 内部的寄存器、L1、L2、L3 Cache 只好用较小的容量,相反内存、硬盘则可用更大的容量,这就我们今天所说的存储器层次结构

当然,由于存储器的和相邻的存储器打交道,我们的CPU访问内存数据的时候,会先访问寄存器,寄存器找不到会去 L1 Cache 以此类推。

img

四、存储器之间的实际价格和性能差距

img

标签: java github ide

本文转载自: https://blog.csdn.net/qq_40915439/article/details/124286981
版权归原作者 爱敲代码的小黄 所有, 如有侵权,请联系我们删除。

“【操作系统入门到成神系列 二】磁盘比内存慢几万倍?”的评论:

还没有评论