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

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

磁盘比内存慢几万倍?

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

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

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

一、引言

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

老读者知道我之前再写 Kafka 的博文,为什么突然开始写操作系统的呢?

原因在于:当我看到 Kafka 服务端的一些 IO 操作时,我发现我看不懂了,了解之后发现这里 Netty 的概念。


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


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

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

读书的根本目的,未必是解决现实问题,它更像一场心灵的抚慰。

一个喜欢读书的人,可能不会记得自己读过哪些书。

但是那些看过的故事、收获的感悟、浸染过的气质,就像一颗种子,会在你的身体里慢慢发芽长大,不断提升你的认知,打开你的视野。

二、存储器的层次结构

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

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

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



25f007c9e5e5cb40d0af1c72cadaa258.png

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

存储器的级别一般如下:


  • 寄存器
  • 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 三级高速缓存:


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 倍。

DD 我们常说的机械硬盘,内存的读写速度比HDD快 10W 倍。

三、存储器的层级关系

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

比如:CPU Cache 的数据是从内存加载过来的,写回数据的时候也只写回到内存,

,CPU Cache 不会直接把数据写到硬盘,也不会直接从硬盘加载数据,而是先加载到内存,再从内存加载到 CPU Cache 中。


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

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


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










相关文章
|
1天前
|
算法 程序员 调度
深入理解操作系统的内存管理机制
【5月更文挑战第9天】 在现代计算机系统中,操作系统的内存管理是一个至关重要的部分,它直接影响到系统的性能和稳定性。本文将深入探讨操作系统的内存管理机制,包括物理内存的管理、虚拟内存的概念和应用,以及内存分配和回收的策略。通过对这些内容的深入理解,我们可以更好地理解操作系统的工作原理,提高我们的编程效率和质量。
|
1天前
|
算法 安全 UED
深入理解操作系统的内存管理机制
【5月更文挑战第9天】 在本文中,我们将探讨操作系统的核心组件之一——内存管理。不同于传统的摘要概述,我们将直接切入主题,首先介绍内存管理的基础知识,然后深入讨论操作系统如何处理内存分配、内存保护以及虚拟内存技术。通过分析具体实例和案例研究,文章旨在为读者提供一个清晰的框架,以理解内存管理在现代操作系统中的实现和重要性。
2 0
|
2天前
|
存储 内存技术
深入理解操作系统的内存管理机制
【5月更文挑战第9天】操作系统的内存管理机制是计算机科学中的核心概念,它负责协调和管理计算机的内存资源,确保系统的稳定性和效率。本文将深入探讨操作系统的内存管理机制,包括内存分配、内存保护和虚拟内存等关键技术,帮助读者更好地理解和掌握操作系统的运行原理。
|
2天前
|
运维 Linux Docker
Docker详解(十三)——Docker容器的内存和磁盘I/O限制配置
Docker详解(十三)——Docker容器的内存和磁盘I/O限制配置
11 1
|
4天前
|
安全 Linux Python
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
|
4天前
|
数据安全/隐私保护 Python Windows
Volatility2.6内存取证工具安装及入门-2
Volatility2.6内存取证工具安装及入门
Volatility2.6内存取证工具安装及入门-2
|
4天前
|
安全 Python Linux
Volatility2.6内存取证工具安装及入门-1
Volatility2.6内存取证工具安装及入门
Volatility2.6内存取证工具安装及入门-1
|
7天前
|
算法 安全 Linux
深入理解操作系统的内存管理:原理与实践
【5月更文挑战第4天】 在现代计算领域,操作系统的内存管理是保证系统稳定、高效运行的关键。本文旨在深入剖析操作系统内存管理的基本原理,包括虚拟内存、物理内存、分页机制和内存交换等概念。同时,文章将探讨如何通过优化内存分配策略,提升系统性能及响应速度。此外,还将讨论当前流行的操作系统(如Linux和Windows)中内存管理的创新技术及其应用案例。
|
7天前
|
算法 安全 Java
深入理解操作系统的内存管理
【5月更文挑战第3天】 本文深入探讨了操作系统中的内存管理机制,包括内存分配、回收以及虚拟内存技术。文章首先介绍了内存管理的重要性和基本概念,然后详细分析了各种内存分配策略和算法,如首次适应、最佳适应和最坏适应等。接着,文章讨论了内存回收的方法,如引用计数和垃圾回收。最后,文章详细介绍了虚拟内存技术,包括分页、分段和段页式等。
|
10天前
|
算法 安全
深入理解操作系统的内存管理
【4月更文挑战第30天】 在现代计算领域,操作系统的内存管理是确保系统稳定、高效运行的关键组成部分。本文旨在提供一个全面的视角,以探索操作系统如何通过复杂的数据结构和算法实现对内存资源的有效分配、管理和保护。我们将深入分析内存管理的四个核心概念:虚拟内存、物理内存、内存分配与回收以及内存保护。文章不仅涵盖理论模型和操作原理,还将介绍一些实际操作系统中采用的技术,例如分页、分段和请求调页系统。通过对这些概念和技术的深入剖析,读者将获得对操作系统内存管理机制的深刻理解。