**前言:**本节将带领友友们认识计算机外设中的------磁盘。 目的是为后面学习文件系统打好基础。认识磁盘我们将从------磁盘的组成、磁盘的逻辑结构两个方面进行讲解。 下面开始我们的学习吧。
ps:本节适合所有阶段的友友们学习哦, 友友们可以在本篇内容中很好的了解到磁盘!!!
目录
[硬件传送数据, 这个数据本质是什么?](#硬件传送数据, 这个数据本质是什么?)
磁盘的组成
我们的磁盘是我们的电脑(一些比较老的电脑)中唯一的机械设备, 也是一个外设。
而我们使用的计算机又叫做电子计算机, 也就是说, 在计算机之中, 整个设备的流动从设备到设备之间, 从整个计算机内部都是使用电子和光电信号的形式进行传递,这就预示着这些设备的传输速度其实是非常快的。 而我们机械设备使用的是高速的马达类似的机械设备进行运动, 这些运动是机械运动, 但是再怎么快也快不过光电的速度, 也就是光速。 所以机械设备的效率相对来说一定是比较低下的。
磁盘的外表
磁盘的盘面和光盘类似, 磁盘是两面光滑, 而光盘是一面光滑。
下面是光盘和磁盘的对照图:
磁盘各个组件:
下面是磁盘的各个组件
这里有一个点就是,磁头和盘面不接触, 而中间的这个距离相对于磁头和盘面就类似于一架波音747在贴地1米的地方急速飞行。
磁盘损坏
而这种磁盘不适合人进行搬运。 因为磁头和盘面的距离很小, 一旦磁盘发生震动。 这里可以想象一下波音747在贴地1米的地方飞行, 然后突然下雨, 或者来个东西吓一吓这个飞机。 那么就很可能发生事故。 对应磁盘就是磁头刮花磁盘表面, 而我们的磁盘保存的是一系列二进制序列。 一旦刮花磁盘, 就有可能造成我们数据的丢失或者二进制序列排列的混乱, 进而导致数据错乱。
这就造成了一种情况, 对于一些老式的电脑来说, 可能我们会遇到今天的软件用的很好, 但是明天用不了了。 今天电脑下载的软件第二天用不了了的情况。
这些问题的本质原因都是因为磁盘发生了损坏, 所以我们平时使用的笔记本现在很少使用机械磁盘, 其实就是这个原因。
未来我们进行数据存储, 其实数据本质上存储在磁盘的表面, 当我们存数据的时候, 数据会从磁盘通电的地方, 从这个地方向另一端的电脑主板, cpu等设备流动。 cpu, 电脑主板等地方是磁盘的内部, 在磁盘的内部, 这些数据就会通过磁头向磁盘的盘片进行充放电。 然后这些二进制数据就会被写到这个盘片上。
硬件传送数据, 这个数据本质是什么?
计算机只认识二进制, 计算机里面有各种各样的硬件, 比如磁盘, 网卡, 声卡等等, 既然计算机只认识二进制,那么是不是这些硬件也只认识二进制呢?------答案是正确的, 为什么?
因为我们每一种设备, 最终都是和我们对应的各种线连接的。 当我们的数据总线, IO总线上面有光电信号的时候, 我们的信号在我们的电线当中表现出来的光电信号其实就是有和无。 或者强和弱, 或者疏和密。 不管什么方式表达, 但是本质上其实就是利用这种方式进行传送二进制。
磁盘------永久性存储介质
磁盘叫做永久性存储介质。(内存叫做掉电易失存储介质)
磁盘里面的二进制与磁盘的存储关系------这里我们可以使用吸铁石的例子进行理解这个关系。 我们都知道吸铁石具有南北极。 南极S, 北极N。 但是有的技术人员呢, 可以给吸铁石通电, 让吸铁石的南北极调换。 那么这个吸铁石的南北极调换后, 就可以当作一个0或者1字符。 我们知道我们的磁头会在盘片上面左右移动。 而我们的盘片就可以当作无数个的小吸铁石组成的。 磁头指向的地方就是一个小吸铁石, 并且通电后这个小吸铁石会形成一个0或者1字符。 那么磁头的移动, 会经过无数个小吸铁石, 就会形成一系列01序列。 这就是我们所说的二进制序列!!!------也就是说, 磁头可以通过电器能量向盘面写上一系列01数据!!!
磁盘的安全问题
我们知道, 磁盘虽然是永久性存储介质, 但是磁盘也是有使用寿命的, 四五年乃至更多年之后, 磁盘的数据就有可能丢失。 对于一些大型互联网公司来说, 他们的磁盘可能有几万甚至几十万乃至更多块。 那么当他们进行磁盘的数据拷贝, 替换磁盘的时候就有可能得到磁盘中的数据,就会给社会造成影响以及混乱。 所以这些磁盘在废弃之前必须进行数据的擦除, 擦除可以使用物理擦除, 高温下磁盘的数据会被销毁, 但是成本太高。 而另一种方式是用软件层面的擦除。 就是将磁盘上面的数据全部写0或者写1. 虽然肯定会有局部的影子数据保留。 但是多进行几次软件层面的数据擦除, 就可以基本符合标准。 而这些软件层面的擦除一般就是厂家连带磁盘一起提供的用户接口。 用户想要擦除数据的时候就直接调用相关的接口就可以。 ------这就是磁盘的安全问题。
磁盘的存储构成
如下图:
知道了扇区的概念之后, 那么我们就可以摘掉, 假如我们想要修改一个字节。 那么就要将这个字节所在的扇区全部拿到内存中。
要把数据存在到磁盘, 第一个解决的问题就是定位扇区: 先定位哪一面(定位用哪一个磁头), 然后再定位哪一个磁道, 最后再定位哪一个扇区。
同时, 多个盘面中半径的磁道组合起来, 就能形成一个柱面。 就如同下图:
我们知道, 盘片是告诉旋转的, 而磁头是左右摆动的。 但是问题来了, 请问, 磁盘为什么要这么运动呢? 这里可以直接出结论------就是磁头左右摆动和盘片告诉移动本质上就是一个定位扇区的过程, 磁头的左右摆动确定磁道, 而盘片的高速移动确定扇区。
那么, 再请问, 磁盘的效率由什么决定呢? ------磁盘的整个效率问题由: 磁头的选择(哪一面)、磁道的确认、扇区的确认。
如果我们的数据在盘片上是乱放着的, 无序的。 那么势必导致机械运动当中上下摆动和顺时针旋转次数更加频发。 那么到底什么是磁盘高效或者低效呢? ------运动越少, 效率越高。 运动越多, 效率越低(在软件设计上, 设计者, 一定要有意识的将相关数据放在一起)。
磁盘的逻辑结构
磁盘的逻辑结构是一个线性结构。 呈长条状。
这个长条分为一段一段的。 每一段都代表着一面。 并且这些段等长。
我们知道其实每一个磁盘里面都有一个一个的磁道。 并且这些磁道最内部半径最小, 然后向外逐渐增大。 也就是说, 这每一段也可以细分成为一个一个的小段落, 用来表示一个个磁道。 并且这些段落逐渐增长或者逐渐变短。 如图绿色线条:
然后呢, 这些磁道又可以细分成为一个一个地扇区。 如图三色线条:
那么我们就可以将上面的内容抽象成为一个基于扇区的数组。
CHS寻址方式
我们知道, 每个磁道的扇区个数是相等的, 大小是不相等的。 那么具体的寻址是怎么寻的呢? ------假如我们有2w个扇区, 每个盘有200个磁道, 每一个磁道有100个扇区。
寻址过程:
如果一个扇区的编号是28888。
那么我们确定盘面就是28888 / 20000 = 1。 //这个1就是盘面的编号。
那么确定扇区就是先 28888 % 20000 = 8888. 然后再 8888 / 100 = 88。 就能得出在第89个扇区。 8888 % 100 = 88, 就能得出在89个磁道的第88个扇区。
而上面的C(磁道) 就是88, H(磁头) 就是1, S(扇区) 就是89. 然乎我们就把上面的我们的逻辑上面的扇区地址转化为了我们的物理地址。 同时物理地址也可以使用CHS的值转化为逻辑扇区地址。
这里的逻辑地址扇区地址是操作系统能够认识的, 方便操作系统找到磁盘的内容所使用的地址, 也就是那个抽象出来的扇区数组, 这个数组的下标,也就是逻辑扇区地址, 也叫LBA地址。 是操作系统抽象出来的, 当物理上面, 磁盘上面的CHS地址使用的时候, 操作系统就会进行计算, 然后转化为LBA地址找到对应的内容。 在磁盘上面的是CHS地址进行标识, 而系统上面使用LBA地址。 这样的话就可以实现: 操作系统不需要了解磁盘结构, 对于操作系统来说, 所有的磁盘都是线性的。 那么操作系统就可以使用LBA地址访问磁盘里面的任何一个扇区!!!同时LBA里面的任何一个扇区也可以经过算法转化为CHS地址。(这里LBA 被叫做logical block adress。 ------逻辑块地址)
回归到硬件:不仅仅CPU有"寄存器", 其他设备(外设也有), 磁盘也有。 ------磁盘里面的寄存器主要有控制寄存器、数据寄存器、状态寄存器。
而整个的磁盘传输数据的过程如下图:
- 第一步就是cpu先向磁盘的控制寄存器中写入r/w指令------》确定IO的方向。
- 第二步就是cpu向数据寄存器中传送数据, 传送的这个数据就是要向磁盘中写入的数据。
- 第三步就是cpu向地址寄存器中传输想要存入的磁盘地址。 地址寄存器拿到这个地址后, 磁盘就按照地址寄存器中的地址将数据写入到磁盘中。
- 第四步就是用来检查状态是否成功。
以上就是本节内容。希望能对友友们有所帮助。