硬盘、闪盘、数据存储的物理探秘

1 篇文章 0 订阅
1 篇文章 0 订阅

作为一个两年经验的程序猿,有必要好好了解一下我们平时用到的数据是怎么被存下来的,又是如何读出来的,物理的本质到底是怎么回事。所以这两天晚上就上网查阅了一些资料,把这些知识整理了一下,结合自己的认识,记录于此。文中观点若有不对,欢迎留言指出。

数据的存储体

我们知道,计算机要处理的信息种类很多,有数字、文字、符号、图形、音频、视频等,这些信息在人们的眼里是不同的。但对于计算机来说,它们在内存中都是一样的,都是以二进制的形式来表示。计算机系统上面的存储设备包括硬盘、软盘、MO、CD、DVD、磁带机、U盘(闪存)等,乃至大型机器的局域网存储设备(SAN、ANS)等,都可以用来存储数据的。

本文主要介绍的是硬盘(磁盘)和闪盘(U盘或CF卡等)

硬盘(磁盘)

存储原理简述:

硬盘是在硬质盘片(一般是铝合金,以前 IBM 也尝试过使用玻璃)上涂敷薄薄的一层铁磁性材料。硬盘储存数据的原理和盒式磁带类似,只不过盒式磁带上存储是模拟格式的音乐,而硬盘上存储的是数字格式的数据。写入时,磁头线圈上加电,在周围产生磁场,磁化其下的磁性材料;电流的方向不同,所以磁场的方向也不同,用微小磁化单元的N或S表示二进制的0和1。8个0或1的组合代表一个字节或一个单位,即使表示很小的数,如 1,也需要8个,也就是 00000001。如果不改变磁性材料的磁化方向,则上面的信息就会长时间保存下去。读取时,磁头线圈切割磁场线产生感应电流,磁性材料的磁场方向不同,所以产生的感应电流方向也不同。 不管什么计算机文件,歌曲,视频,图片,文档等都是以一个二进制的序列存在的,也就是很多个"10010001110011…"这样的东西,硬盘上的存储的文件实际上就是存储着这些0和1的序列.硬盘的磁头能够按照指令读取相应位置的信号,并且能够改变指定位置的磁场方向,这就是数据的读和写。

硬盘和磁盘

传统硬盘有个很致命的问题,就是需要驱动马达去转动磁盘盘,这会造成很严重的磁盘读写延迟!想想看,你的要知道数据在那个扇区,然后在命令马达开始转动,之后再让读取头去读取正确的数据。另外,如果数据放置的比较离散(扇区分布比较广又不连续),那么读写的速度就会延迟更明显!因此,就由床架拿闪存去制作成高容量设备,这些设备的连接界面也是透过SATA或SAS,而且外型还做得跟传统磁盘一样!所以,虽然这类设备已经不能称为磁盘(因为没有读写头与磁盘盘啊!都是内存!)。但是为了方便大家称呼,所以还是称为磁盘!只是和传统磁盘不同,就称为固态硬盘。

固态硬盘最大的好处就是没有马达不需要转动,而是透过内存直接读写的特性,因此除了没数据延迟且快速之外,还省电。

注:许多人发现,计算机中显示出来的容量往往比硬盘容量的标称值要小,这是由于不同的单位转换关系造成的。我们知道,在计算机中1GB=1024MB,而硬盘厂家通常是按照1GB=1000MB进行换算的。

内部结构

如图是笔记本拆开后看到的硬盘,硬盘的内部结构非常的精密,没有专业知识和设备,拆开就报废。硬盘内部并非真空,普通硬盘内部充空气,高端的有充氦气的,高度无尘环境。硬盘通电开始转起来,以及读写时候,盘内温度升高,所以有通气孔散热。
在这里插入图片描述在这里插入图片描述 在这里插入图片描述
硬盘主要由盘片、盘片驱动器、磁头及控制装置组成。盘片由较轻质的金属(如铝)或玻璃制成,表面再涂上一层磁性材料。盘片的光洁度极高,远远超过我们生活中使用的镜子。硬盘都是密封的,内部非常干净,哪怕是一丝肉眼看不见的灰尘也会给盘面带来致命的损伤。

主要部件

1、盘片
硬盘盘片是将磁粉附着在铝合金(新材料也有用玻璃)圆盘片的表面上,这些磁粉被划分成称为磁道的诺干个同心圆,在每个同心圆的磁道上就好像有无数的任意排列的小磁铁,它们分别代表着0和1的状态。当这些小磁铁受到来自磁头的磁力影响时,其排列的方向会随之改变。利用磁头的磁力控制指定的一些小磁铁方向,使每个小磁铁都可以用来存储信息。

2、盘体
硬盘的盘体由多个盘片组成,这些盘片重叠在一起放在一个密封的盒中,他们主轴电机的带动下以很高的速度旋转,其每分钟可达3600/4500/5400/7200甚至以上。

3、磁头
磁头是硬盘中最昂贵、最精密的部分。磁头装在磁头支架上,它们像梳子的齿一般伸进各自负责的盘片间隔中。磁头支架在特殊的电机驱动下,可以使磁头在盘片上不同的地方来回移动。硬盘的磁头用来读取或者修改盘片上磁性物质的状态,一般说来,每一个磁面都会有一个磁头,从最上面开始,从0开始编号。磁头在停止工作时,与磁盘是接触的,但是在工作时呈飞行状态。磁头采取在盘片的着陆区接触式启停的方式,着陆区不存放任何数据,磁头在此区域启停,不存在损伤任何数据的问题。读取数据时,盘片开始旋转,由于对磁头运动采取了精巧的空气动力学设计,此时磁头处于离盘面数据区0.2–0.4微米高度的飞行状态。既不与盘面接触造成磨损,又能可靠的读取数据。

4、电机
硬盘内的电机都为无刷电机,在高速轴承支撑下机械磨损很小,可以长时间连续工作。高速旋转的盘体产生了明显的陀螺效应,所以工作中的硬盘不宜运动,否则将家中轴承的工作负荷。硬盘磁头的寻道伺服电机多采用音圈式旋转或者直线运动步进电机,在私服跟踪的调节下精确地跟踪盘片的磁道,所以在硬盘工作时不要有冲击碰撞,搬动时要小心轻放。

如何读取数据?

当需要从磁盘读取数据时,系统会将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读的数据在哪个磁道,哪个扇区。为了读取这个扇区的数据,需要将磁头放到这个扇区上方,为了实现这一点,磁头需要移动对准相应磁道,这个过程叫做寻道,所耗费时间叫做寻道时间,然后磁盘旋转将目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间。索引一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作。与主存不同(详见本文最后一栏“主存的存取原理”),磁盘I/O存在机械运动耗费,因此磁盘I/O的时间消耗是巨大的。由于存储介质的特性,磁盘本身存取就比主存慢很多,再加上机械运动耗费,磁盘的存取速度往往是主存的几百分分之一,因此为了提高效率,要尽量减少磁盘I/O。为了达到这个目的,磁盘往往不是严格按需读取,而是每次都会预读,即使只需要一个字节,磁盘也会从这个位置开始,顺序向后读取一定长度的数据放入内存
这样做的理论依据是计算机科学中著名的局部性原理:
1、当一个数据被用到时,其附近的数据也通常会马上被使用;
2、程序运行期间所需要的数据通常比较集中。

由于磁盘顺序读取的效率很高(不需要寻道时间,只需很少的旋转时间),因此对于具有局部性的程序来说,预读可以提高I/O效率。

预读的长度一般为页(page)的整倍数。页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(在许多操作系统中,页得大小通常为4k),主存和磁盘以页为单位交换数据。当程序要读取的数据不在主存中时,会触发一个缺页异常,此时系统会向磁盘发出读盘信号,磁盘会找到数据的起始位置并向后连续读取一页或几页载入内存中,然后异常返回,程序继续运行。

为什么会出现读写错误情况?

磁盘在进行写操作时,通过磁头的电流强度不断发生变化,影响到盘片的磁场,这一过程因为用到电磁感应,所以磁头发热量较大。但是盘片本省是不会发热的,因为盘片上的永磁体是冷性的,不会因为磁场变化而发热。磁头热量是可以辐射传导的,那么高热量对磁盘上的永磁是否会有伤害?其实伤害是很小的,永磁体消磁的温度,渊源高于硬盘正常情况下产生的温度。所以高温会影响到磁头电阻感应灵敏度,这才导致读写错误,和永磁体没有关系。

硬盘上放一块磁铁会怎么样?

首先硬盘有没有运行,如果是在运行,外部磁场会干扰磁头的正常运动,会划坏硬盘,这种属于物理损坏,无法修复!如果是没有运行的硬盘,那一块磁铁是不会使硬盘中的数据消失的!这个美国有人专门针对这个问题做过实验,实验结果是 :需要很强很强的磁场才能是数据消失,最后实验用的是电磁起重机使数据消失的。但生活中我们还是尽量的不要让硬盘和磁铁靠得太近。

同一个文件在硬盘空间上一定是连续存放的吗?

计算机里储存的普通文件,都是由一组数据块组成的,这些数据块的大小都是统一的。在最理想的情况下,计算机将这些文件的数据块放进硬盘时,每一个文件的数据块都是一块接着一块连续存放的。我们可以将这种文件称为连续文件。

在这种理想状况下,计算机如果想要在硬盘上找到一个文件的内容,只需要找到该文件的第一个数据块,然后按照顺序往下找到第二个、第三个,直到这个文件的结尾数据块即可。

然而在实际应用中,同一个文件在硬盘空间上,不一定都连续存放在一起。我们在使用计算机的过程中常常要增加、删除、修改存在硬盘上的文件。慢慢的,原来存放着文件的硬盘空间就出现了许多空隙,而每个空隙的大小可能相当于几个数据块的大小。

在这里插入图片描述
在这里插入图片描述
如果这时候创建了一个比较大的文件,大到硬盘里没有足够的连续空间去容纳这个文件,那么这个大文件只能拆成几部分来填充这些空隙。久而久之,硬盘空间中的文件就可能是由很多零碎的文件段组成的。这种分布得很零碎的文件又被称为碎片文件。计算机如果想要找到这种碎片文件的内容,所花费的时间可要比找连续的文件多得多了。

频繁地删除、修改文件或者硬盘剩余容量过小,都可能产生碎片文件。虽然少量碎片文件对计算机影响不大,但如果碎片文件过多,还是会使硬盘在读文件的时候消耗不少时间,导致计算机运行速度变慢。因此将碎片文件恢复成连续的文件还是很有必要的,有些操作系统就提供磁盘碎片整理程序帮助用户整理碎片文件。

磁盘碎片整理就是将可移动的每个文件或文件夹合并集中移动到磁盘上的某个位置,便于每个文件或文件夹占据磁盘驱动器上邻近的单独空间,同时通过释放与合并得到一些可用空间。

硬盘和软盘的区别是什么?

首先硬盘和软盘都属于磁盘。
硬盘的容量比较大,也就是说能记录的信息比较多,而且一般都装在机箱里面。软盘的容量就相对比较小了,一般放在机箱外面。硬盘在机箱里面负责储存数据,而软盘用来搬运数据。硬盘的容量大,软盘的容量小,这就是硬盘和软盘的区别,另外硬盘的存取速度比软 盘快得多。
在这里插入图片描述
电脑的分区刚开始只有A盘和B盘,这两个就属于软盘,人们都把文件和应用程序储存在软盘里,用的时候再安装。但是现在我们的计算机里面都没有这两个盘了。因为软盘的存储空间太小,无法满足人们的需要。A盘存储大小是1.44MB,大小是3.5英寸软盘,主要是用于存储操作系统文件。而B盘的存储空间只有360K,大小是5.2英寸的软盘,根本无法储存多少文件,处于一用就满的状态。随着计算机技术的发展,硬盘出现了,人们按照英文字母的排列顺序将它们依次命名为C盘、D盘等。由于硬盘都有几百MB以上的容量,A盘和B盘便都遭到了淘汰。

闪盘(U盘或CF卡等)

闪盘是通过内部的电路开和关的状态来存储的,内部有很多的电子元器件,它们体积都很小。这些元器件就是电路,通过电路的电压变化,要么是 0V,要么是 5V,只有这两种电压。5V 是通电,用1来表示,0V 是断电,用0来表示。所以,一个元器件有2种状态,0 或者 1。

闪盘存储能力的决定因素:

跟芯片制造的技术有关,市面上的FlashROM闪存芯片从0.35微米到0.09微米工艺都有,芯片制程越小的的芯片在固定的面积里面集成的晶体管等电子微设备就越多,所以容量也就越大,并且功耗也会降低。简单的说,你在一个2CM平方的纸上写字,最多能20、30个,别人用放大镜,放大倍数越大,写的字就越多,但是纸本身并没有改变大小。说白了也就是由电子元器件的多少决定,元器件越多,存储能力就越强。

硬盘存储和闪盘存储的比较

闪盘和硬盘比,硬盘的制造工艺不同,硬盘的记录是靠磁力,是机械的,U盘里面的ROM芯片是微电子技术,2种方式不同,ROM芯片虽然很小,但是,制程越小的芯片,它的容量就越大,除非发生根本上的变化,目前想要改变和突破ROM芯片的容量上限,也就必须从纳米技术来实现!硬盘存储量比闪盘大,但是闪盘使用方便,内部集成度可以很高,抗摔性能比硬盘好得多。

对RAM和ROM的认识

一、ROM

ROM是只读内存(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,资料并且不会因为电源关闭而消失。

二、RAM(主存)

RAM(random access memory)随机存储器(也叫主存)。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 按照存储信息的不同,随机存储器又分为静态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM)。ram和运行软件相关,ram越大,手机运行就越快,能运行的软件就越多。

主存存取原理

目前计算机使用的主存基本都是随机读写存储器(RAM),现代RAM的结构和存取原理比较复杂,这里本文抛却具体差别,抽象出一个十分简单的存取模型来说明RAM的工作原理。
在这里插入图片描述
从抽象角度看,主存是一系列的存储单元组成的矩阵,每个存储单元存储固定大小的数据。每个存储单元有唯一的地址,现代主存的编址规则比较复杂,这里将其简化成一个二维地址:通过一个行地址和一个列地址可以唯一定位到一个存储单元。如图展示了一个4 x 4的主存模型。

主存的存取过程如下:

当系统需要读取主存时,则将地址信号放到地址总线上传给主存,主存读到地址信号后,解析信号并定位到指定存储单元,然后将此存储单元数据放到数据总线上,供其它部件读取。

写主存的过程类似,系统将要写入单元地址和数据分别放在地址总线和数据总线上,主存读取两个总线的内容,做相应的写操作。

这里可以看出,主存存取的时间仅与存取次数呈线性关系,因为不存在机械操作,两次存取的数据的“距离”不会对时间有任何影响,例如,先取A0再取A1和先取A0再取D3的时间消耗是一样的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿联盟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值