磁盘存储工作原理

磁盘构造

磁盘由多个同心圆磁道(track)组成,每个磁道被划分成多个扇区(sector)。磁头在磁盘上移动,读写数据。数据按扇区存储,通过逻辑地址(LBA)寻址。

磁盘的通俗演义

想象一张很大很大的白纸,你要在上面写日记。当你写满这张白纸之后,如果某天想查看某条日记,无疑将是个噩梦,因为白纸上没有任何格子或行分割线等,你只能通过一行一行地读取日记,搜索你要查看的那条记录。如果给白纸打上格子或行分割线,那么不但书写起来不会凌乱,而且还工整。

那么对于一张上面布满磁性介质的盘片来说,想要在它上面记录数据,如果不给它打格子划线的话,无疑就无法达到块级的记录。所以在使用之前,需要将其低级格式化,也就是划分扇区(格子)。 我们见过稿纸,上面的格子是方形阵列排布的,原因很简单,因为稿纸是方形的。那么对于圆形来说,格子应该怎么排布呢?答案是同心圆排布,一个同心圆(磁道),就类似于稿纸上的一行,而这一行之内又可以排列上很多格子(扇区)。 每个盘片上的行密度、每行中的格子(扇区)密度都有标准来规定,就像稿纸一样。

我们把稿纸放入打印机。打印机的打印头按照格子的距离精确地做着位移,并不停地喷出墨水,将字体打入纸张上的格子里。一旦一行打满,走纸轮精确地将稿纸位移到下一行,打印头在这一行上水平位移打满格子。走纸轮竖直方向位移,打印头水平方向位移、形成了方形扫描阵列能够定位到整张纸上的每个格子。

同样,把圆形盘片安装到一个电机(走纸轮)上,然后在盘片上方加一个磁头(打印喷头)。但是和打印机不同的是,做换行这个动作不是由走纸轮来完成,而是由磁头来完成,称做径(半径)向扫描,也就是在不同同心圆上作切换(换行)。同样作行内扫描这个动作是由电机(走纸轮)而不是磁头(打印头)来完成,称做线扫描(沿着同心圆的圆周进行扫描)。

形成这种角色倒置的原因,很显然是由圆形的特殊性决定的。作圆周运动毕竟比作水平竖直运动要复杂,如果让磁头沿着同心圆作线扫描,则需要将磁头放在一个可以旋转的部件上,此时磁头动而盘片不动,可以达到相同的目的,但是技术难度就复杂多了。因为磁头上有电路连接着磁头和芯片。如果让磁头高速旋转,磁头动而芯片不动,电路的连通性怎么保证?不如让盘片转动来得干脆利索。

和打印机一样,定位到某个特定的格子之后,磁头开始用磁性来对这个格子中的每个磁粒子区做磁化操作,每个磁极表示一个0或者1状态。每个格子规定可以存放 4096位这种状态,也就是 512B(很多供大型机使用的磁盘阵列上的磁盘是用520B 为一个扇区)。 这就像打印机在一个格子再次细分,形成24x24 点阵,每个坐标上的一个点都对应一种色彩。只不过对于磁盘来说只有0或者1,而对于打印机来说,可以是各种色彩中的一种(黑白打印机也只有黑或者白两种状态)。

磁盘的扇区中没有点阵,一个扇区可以看作是线性的。 它没有宽,只有长,记录是顺序的不能像打印机那样可以定位到扇区中的某个点。然而,磁盘比打印机有先天的优势。打印机只能从头到尾打印,而且打印之后不能更改。磁盘却可以对任意的格子进行写入、读取和更改等操作。打印机的走纸轮和打印喷头移动起来很慢,而且嘎嘎作响,听了都费劲。而磁盘的转速则快很多目前可以达到每分钟15000转。磁头的位移动作也非常快,它使用步进电机来精确地换行(换磁道)。但是相对于盘片的转动而言,步进的速度就慢多了,所以制约磁盘性能的主要因素就是这个步进速度(换行或者换道速度),也就是寻道速度。

如果从最内同心圆换到最外同心圆,耗费的时间无疑是最长的。目前磁盘的平均寻道速度最高可以达到5ms多,不同磁盘的寻道速度不同,普通IDE磁盘可能会超过10ms。有了这个磁盘记录模型,我们就该研究怎么将这个模型抽象虚拟化出来,让向磁盘写数据的人感觉使用起来非常方便。就像打印机一样,点一下打印,一会纸就蹭蹭地往外冒。下面还是要一层一层地来做,不能直接就抽象到这么高的层次。

首先,要精确寻址每个格子就一定需要给每个格子一个地址。早期的磁盘都是用“盘片,磁道,扇区”来寻址的,一个磁盘盒子中可能不止一片盘片,就像一沓稿纸中有好几张纸一样。个盘片上的某一“行”也就是某个磁道,应该可以再区分。一个磁道上的某个扇区也可以区分。到这,就是最终可寻址的最小单位了,而不能再精确定位到一个扇区中的某个点了。磁头只能顺序地写入或者读取出这些点,而不能只更新或者读取其中某个点。也就是说磁头只能一次成批写入或者读取出一个扇区的内容,而不能读写半个或者四分之一个扇区的内容。

后来的扇区寻址体系变了,因为后来的磁盘中每个磁道的扇区数目不同了,外圈由于周长比较长,所以容纳的扇区可以很多,干脆采用了逻辑地址来对每个扇区编址,将具体的盘片、磁道和扇区,抽象成LBA(Logical Block Address,顺序编址) 。LBA1表示0号盘片0号磁道的0号扇区,依此类推,LBA 地址到实际的盘片、磁道和扇区地址的映射工作由磁盘内部的逻辑电路来查询ROM 中的对应表而得到,这样就完成了物理地址到逻辑地址的抽象、虚拟和映射。寻址问题解决之后,就应该考虑怎么向磁盘发送需要写入的数据了。针对这个问题,人们抽象出一套接口系统,专门用于计算机和其外设交互数据,称为 SCSI 接口协议,即小型计算机系统接口。 下面举个例子来说明,比如某时刻要向磁盘写入512B 的数据,磁盘控制器先向磁盘发一个命令,表明要准备做IO 操作了,而且说明了附带参数(是否启用磁盘缓存、完成后是否中断通知CPU等),磁盘应答说可以进行,控制器立即将所要IO 的类型(读/写)和扇区的起始地址以及随后扇区的数量(长度)发送给磁盘,如果是写 IO,则随后还要将需要写入的数据发送给磁盘,磁盘将这块数据顺序写入先前通告的扇区中。

磁盘存储工作原理概述

  • 磁盘存储与纸张类比:
    磁盘存储类似于一张没有格子或行分割线的白纸,写满后查找困难。
    低级格式化为磁盘打上格子,确保块级记录,提高写入效率。
  • 磁盘格子排布:
    圆形磁盘上的格子采用同心圆排布,类似于稿纸上的行,每行包含多个扇区。
    标准规定磁盘的行密度和每行中的扇区密度,确保数据记录的规范和高效。
  • 磁盘写入过程:
    磁盘写入类似于打印机的操作,但换行是由磁头完成的,称为径向扫描。
    磁头使用磁性对每个扇区的磁粒子进行磁化操作,每个格子记录4096位数据。
  • 对数据读写步骤:
    • 寻道
      通过转动传动臂来径向的定位磁道。
    • 旋转磁盘
      定位初始扇区。
    • 数据传送
      对磁盘数据进行读/写操作。
  • 磁盘记录模型抽象:
    磁盘使用逻辑地址(LBA)寻址,将具体的盘片、磁道和扇区抽象成顺序编址的逻辑地址。
    SCSI接口协议用于计算机和磁盘交互数据,控制器发送命令和数据给磁盘进行读写操作。
  • 磁盘性能制约因素:
    磁盘转速和步进速度是主要影响磁盘性能的因素,寻道速度决定了数据访问的速度。
    磁盘内部电路和逻辑电路的组合确保了数据的准确记录和快速访问。
posted @ 2024-04-22 20:25  岸南  阅读(286)  评论(0)    收藏  举报