009集——磁盘详解——电脑数据如何存储在磁盘

        很多人也知道数据能够保存是由于设备中有一个叫做「硬盘」的组件存在,但也有很多人不知道硬盘是怎样储存这些数据的。这里给大家讲讲其中的原理。

        首先我们要明白的是,计算机中只有0和1,那么我们存入硬盘的数据,实际上也就是一堆0和1,换句话说,我们如果有办法记录0和1就可以记录数据了,比如我们有2个灯泡,一个不亮一个亮就可以表示01,即数字1,两个都亮11,即表示数字2,越大的数可以用越多的灯泡来表示。

      硬盘分为机械硬盘和固态硬盘,由于结构的不同它们储存数据的原理也不同。先来看机械硬盘,其最重要的结构是两面涂有磁性材料的磁盘,在工作时会以每分钟7200转的速度旋转。

   磁盘的作用就是记录数据,在盘片上有序的排列了很多的小颗粒材料,它们都是磁性物质,可以被永久磁化和改变磁极,这两个磁极就分别表示了计算机二进制中的0和1。

     写入数据时,距离盘面3纳米的磁头会利用电磁铁,改变磁盘上磁性材料的极性来记录数据,两种极性分别对应0或1。而读取数据时,旁边的读取器可以识别磁性材料的不同极性,再还原成0或1。

        由于磁盘是转动后读写数据的,所以,当初设计就是在类似磁盘同心圆上面切出一个一个的小区块,这些小区块整合成一个圆形,让机器手臂上的磁头去存取。

        这个小区块就是磁盘的最小物理储存单位,称之为扇区 (sector),大小一般是512字节,而同一个扇区组合成的圆就是所谓的磁道(track)。

这里不得不说到字节知识。

        位:"位 (bit)"是电子计算机中最小的数据单位。

每一位的状态只能是0或1。 字节:8个二进制位构成1个"字节 (Byte)",它是存储空间的基本计量单位

字节:在多数的计算机系统中,一个字节是一个8位长的数据单位,大多数的计算机用一个字节表示一个字符、数字或其他字符。 一个字节也可以表示一系列二进制位。 

位(bit)字节(Byte)(这两个不能搞错)

1B=8b

1KB=1024B

1M=1024KB

1G=1024M

1TB=1024G

        因此,磁头要想读取某个文件,必须在电机驱动下,先找到对应的磁道,再等磁盘转到对应扇区才行,一般会有十几毫秒的延迟,这就让机械硬盘在读取分散于磁盘各处的数据时,速度将大幅降低。

        相较于机械硬盘里面的复杂结构,固态硬盘就要简单许多。它主要是靠FLASH芯片来作为储存数据的介质,由主控芯片来承担数据的中转,并调配数据储存在闪存芯片上面。

   闪存的基本存储单元是浮栅晶体管,其中的浮栅被二氧化硅包裹,和上下绝缘,在断电时也能够保存电子,当电子数量高于一个中间值就表示0,低于中间值就表示1。

          晶体管每次写入数据前都要先擦除,在P极上加一个电压,浮栅中原有的电子会因为量子隧穿效应通过绝缘层被吸出来,让浮栅中的电子数量低于中间值,还原成1;如果要写入0,就在控制极加一个电压,让电子穿过绝缘层再注回浮栅,使电子数量高于中间值,表示0。

        但在读取时,闪存无法直接得知浮栅中有多少电子。因为往控制极加一定大小的电压,会导通这两个N极。控制极上的电压越大,N极间的电流也越大。然而,存储0的浮栅,相比存储1的浮栅,有更多的电子,会抵消控制极上的电压,所以控制极需要更大的电压才能导通两个N极。

        因此,当不知道浮栅中有多少电子时,就可以往控制极加一个中间值电压,如果两个N极导通,就能反推出浮栅中的电子较少,识别为1;如果没有导通,就说明浮栅中的电子较多,识别为0。

        传统的单阶存储单元SLC ,电子数量只有两种状态,只能保存一比特的数据。而多阶存储单元MLC、TLC和QLC ,它们的电子数量有4~16种状态,一个单元可保存2~4比特。

         多阶存储单元大大降低了固态硬盘单位容量的成本,但也影响了硬盘寿命和性能。这是因为晶体管擦写数据时,二氧化硅绝缘层会困住一部分电子,这些电子的累积会逐渐抵消控制极上的电压,使得控制极为了导通两个N极所需的电压越来越大,当这个偏移超过中间值,那么读取时也就无法分辨0和1。

        而多阶存储单元由于不同状态之间分得非常细,也就更容易受这种偏移的影响,所以从SLC到QLC,它们总的擦写次数呈几何级数递减。

        总结来说,机械硬盘是磁头通过磁盘旋转来读写数据的,所以磁盘读写数据的速度跟磁盘的旋转速度有很大的关系,磁盘转得越快磁头就能更快的访问到更多区域,速度自然就越快了。但也正是转速比较快,所以抗震抗摔以及抗尘能力比较差,试想每分钟几千转的磁盘震了一下或者撞上了灰尘,磁头即使只是发生了一点点小小的偏移,也会带来不可逆转的损坏。

        而固态硬盘由于没有了机械结构,完全不用担心这些的问题。但是固态硬盘也有一个硬伤就是:它是靠在存储单元里面存放电子的方式来存储数据。而电子大家知道是一个非常非常小的东西,这样如果同一个位置存放电子再擦除,如此反复长久以来就会出现不稳定的情况,比如电子会写不上。尤其是将要到来的QLC储存芯片,每个存储单元里面放了4个电子,由于电子之间也会互相影响,导致寿命大大减少。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/684497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python三级考试笔记

Python三级考试笔记【源源老师】 三级标准 一、 理解编码、数制的基本概念,并且会应用。 1. 能够进行二进制、十进制以及十六进制之间的转换; 2. 理解Python中的数制转换函数。 二、 掌握一维数据的表示和读写方法,能够编写程序处理一维数据…

【C++】C++11上

C11上 1.C11简介2.统一的列表初始化2.1 {} 初始化2.2 initializer_list 3.变量类型推导3.1auto3.2decltype3.3nullptr 4.范围for循环5.final与override6.智能指针7. STL中一些变化8.右值引用和移动语义8.1左值引用和右值引用8.2左值引用与右值引用比较8.3右值引用使用场景和意义…

【算法设计与分析】搜索旋转排序数组

📝个人主页:五敷有你 🔥系列专栏:算法分析与设计 ⛺️稳中求进,晒太阳 题目 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k&#xff…

什么是“感知机”?

感知机(神经网络和支持向量机的理论基础) 概念:简单来说,感知机就是一个旨在建立一个线性超平面对线性可分的数据集进行分类的线性模型 分类: 单层感知机多层感知机( Multi-Layer Perceptron&#xff0c…

【lesson55】线程同步

线程同步 同步:在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步 例一:我们之前的抢票代码,一个线程把票全抢完了,它错了吗?没错…

Qt Creator 继承分文件编写代码流程实现简单案列

Qt Creator 继承分文件流程实现简单案列 打开Qt Creator&#xff0c;新建c项目 添加类 完成之后&#xff0c;会自动生成.h和.cpp文件 一、animal.h文件 主要用来写类&#xff0c;包括成员变量和函数 #ifndef ANIMAL_H #define ANIMAL_H #include <iostream> #inclu…

高效货运 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 老李是货运公司承运人&#xff0c;老李的货车额定载货重量为wt&#xff1b;现有两种货物&#xff0c;货物A单件重量为wa&#xff0c;单件运费利润为pa&#xff0c…

【matalab】基于Octave的信号处理与滤波分析案例

一、基于Octave的信号处理与滤波分析案例 GNU Octave是一款开源软件&#xff0c;类似于MATLAB&#xff0c;广泛用于数值计算和信号处理。 一个简单的信号处理与滤波分析案例&#xff0c;说明如何在Octave中生成一个有噪声的信号&#xff0c;并设计一个滤波器来去除噪声。 首…

从数字孪生到智慧城市:科技引领下的城市未来展望

一、引言 随着科技的飞速发展&#xff0c;数字孪生和智慧城市已成为当今世界城市发展的重要趋势。数字孪生通过建立物理世界的数字模型&#xff0c;为城市管理和规划提供了前所未有的可能性&#xff1b;而智慧城市则借助先进的信息通信技术&#xff0c;使城市运行更加高效、便…

python调用智谱ai 大模型的完整步骤 (国内的 AI 大模型 对话)

要使用Python调用智谱AI的API进行异步调用&#xff0c;您需要遵循以下步骤&#xff1a; 1. **获取API密钥**&#xff1a; - 您需要从智谱AI平台获取一个API密钥&#xff08;API Key&#xff09;&#xff0c;这个密钥将用于所有API请求的身份验证。 2. **安装…

Springmvc 的参数绑定之list集合

标签中name属性的值就是pojo类的属性名 参数绑定4 list [对象] <form action"teaupd.do" method"post"> <c:forEach items"${list}" var"tea" varStatus "status"> 教师编号&#xff1a;<input…

C语言学习day14:跳转语句

今天学习的跳转语句主要是三种&#xff1a; break continue goto 上一篇文章已经说过了break和continue break&#xff1a;结束这个循环 continue&#xff1a;结束当前的循环迭代&#xff0c;进行下一次的迭代 看看二者代码的区别 代码&#xff08;break&#xff09;&am…

嵌入式I2C 信号线为何加上拉电阻(图文并茂)

IIC 是一个两线串行通信总线&#xff0c;包含一个 SCL 信号和 SDA 信号&#xff0c;SCL 是时钟信号&#xff0c;从主设备发出&#xff0c;SDA 是数据信号&#xff0c;是一个双向的&#xff0c;设备发送数据和接收数据都是通过 SDA 信号。 在设计 IIC 信号电路的时候我们会在 SC…

相机图像质量研究(19)常见问题总结:CMOS期间对成像的影响--Sensor Noise

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

C# VS2022+WinForm+Oracle19.3+Excel,根据数据库表定义书生成SQL

目标&#xff1a; 用Excel写数据库的表的定义书&#xff0c;用该工具生成SQL&#xff0c;在客户端执行&#xff0c;把表结构导入数据库&#xff0c;生成真正的表 Github代码下载 目录 0.完成下面开发环境的准备1 操作系统Win11 专业版 21H22 oracle 19.33 Visual Studio Commun…

C++,stl,常用遍历查找算法

目录​​​​​​​ 1.常用遍历算法 for_each transform 2.常用查找算法 find find_if adjacent_find binary_search count count_if 1.常用遍历算法 for_each #include<bits/stdc.h> using namespace std;void print(int v) {cout << v << ; }…

AVL_Cruise后处理(中文

下载 https://download.csdn.net/download/jintaihu/68332464

Linux--编译器-gcc/g++使用

目录 前言 1.看一段样例 2.程序的翻译过程 1.第一个阶段&#xff1a;预处理 2.第二个阶段&#xff1a;编译 3.第三个阶段&#xff1a;汇编 4.第四个阶段&#xff1a;链接 3.程序的编译为什么是这个样子&#xff1f; 4. 关于编译器 5.链接&#xff08;动静态链接&#x…

Three.js学习7:dat.GUI 参数控制

-----------------------------华丽的分割线--------------------- 相关代码均已上传到 gitee 中&#xff1a;myThree: 学习 Three.js &#xff0c;努力加油~&#xff01; Gitee 静态演示地址&#xff1a;Three JS 演示页面 -----------------------------华丽的分割线------…

TCP_IP(6)

网络层 在复杂的网络环境中确定一个合适的路径. IP协议 与TCP协议并列,都是网络体系中最核心的协议. 基本概念 主机:配有IP地址,但是不进行路由控制的设备; 路由器:即配有IP地址,又能进行路由控制; 节点:主机和路由器的统称; 协议头格式 4位版本号(version):指定IP协议的版…