磁盘的寻址分成物理方式C/H/S寻址和逻辑方式LBA Logical Block Addressing的方式。
运动的方向分成:轴向和径向。轴向就是轴的延长方向,是高的方向。径向是轴的直径方向。
C/H/S寻址的意思:
C是Cylinder,代表柱面。用10bit比特的二进制位存储,编号从0开始,范围是0-1023。
H是磁头数Header,用8位二进制位存储,编号从0开始,范围是0-255。
S是扇区数,Sector。用6位二进制位存储,编号从1开始,所以记住扇区编号从1开始。
CHS寻址是物理方式,定位磁盘的柱面号(磁道编号)、磁头号、扇区号的方式寻址。
LBA是Logical Block Addressing,逻辑块寻址模式。
CHS最大寻址是:
255✖️1023✖️63✖️512/1048576=8024.65576MB,也就是7.837GB。
磁盘厂商计算方式是:
255✖️1023✖️63✖️512/1000000=8414.46144MB=8.414GB
CHS最大寻址计算:
256✖️1024✖️63✖️512/1024576=8064MB。
厂商计算的最大寻址是:
256✖️1024✖️63✖️512/1000000=8.4GB。
硬盘读写顺序是先写完一个柱面,再进行磁头换道,读取下一个柱面的第一个盘面扇区中的数据。
假设NS为每磁道扇区数,NH为磁头数,C代表当前的柱面号,H代表当前磁头号、S代表扇区编号。那么:
LBA=NH✖️NS✖️C+NS✖️H+S-1
其中:
C=(LBA div NS)div NH;
H=(lBA div NS) mode NH;
S=(LBA mod NS) ➕1。
例如:LBA=0,则C/H/S=0/0/1。
从C/H/S到LBA的计算公式为:
LBA=(C➖CS)✖️PH ✖️PS➕(H➖HS)✖️PS➕(S➖SS)。
PH代表每个柱面磁头数。
PS代表每个磁道扇区数。
CS代表Cylinder的起始编号。
HS代表:Header磁头的起始编号。
SS代表:扇区的起始编号。
再简单一点的表达式:
LBA逻辑磁盘编号=磁头数✖️每磁道扇区数✖️当前所在柱面号➕每磁道扇区数✖️当前所在磁头号➕当前所在扇区号➖1。
因为扇区编号从1开始,所以需要减1。
对于磁盘来说,一次磁头的连续读或者写叫做一次IO。
磁头的寻道方式分成好几种:
FCFS:先到先服务First Come First Serve,按照顺序来。
SSTF:Shorest Seek Time First,距离磁头最近的一个IO磁道去读写,可是会造成IO饿死的情况。
SCAN 回旋扫描模式。
C-SCAN 单向扫描模式。
LOOK智能监察扫描摸式和C-LOOK智能监察单向扫描模式。
普通磁盘的寻道速度是:5ms。
普通IDE接口是10ms。