当前位置: 技术问答>linux和unix
读写软盘扇区的算法
来源: 互联网 发布时间:2015-11-05
本文导语: 在一个读软盘扇区的函数中,作者用下面的公式进行计算: 设扇区号为 x ; ┌ 柱面号 = y >> 1 ; x ┌ 商 y ┤ ; -------------- => ┤ └ 磁...
在一个读软盘扇区的函数中,作者用下面的公式进行计算:
设扇区号为 x
; ┌ 柱面号 = y >> 1
; x ┌ 商 y ┤
; -------------- => ┤ └ 磁头号 = y & 1
; 每磁道扇区数 │
; └ 余 z => 起始扇区号 = z + 1
但这样,如果有一个扇区是在磁头0,23磁道的第5个上。那它的商就是22,再除2就不对了吧?
设扇区号为 x
; ┌ 柱面号 = y >> 1
; x ┌ 商 y ┤
; -------------- => ┤ └ 磁头号 = y & 1
; 每磁道扇区数 │
; └ 余 z => 起始扇区号 = z + 1
但这样,如果有一个扇区是在磁头0,23磁道的第5个上。那它的商就是22,再除2就不对了吧?
|
按照sect[柱面][磁头][扇区]是有道理的。
由于磁头寻道需要一定的时间,所以应该尽量把一个柱面上的扇区逻辑上放在一起,这样找到一个正确的磁道后访问的连续扇区最多。如果按照sect[2][80][18],那么每访问18个扇区后就要重新寻道,如果按照sect[80][2][18],那么每访问36个扇区后才重新寻道,访问整个软盘的速度将提高1倍。相同的道理,硬盘的磁头数远大于软盘,速度的差别就更大了。所以必然按照CHS这样的顺序来定位
由于磁头寻道需要一定的时间,所以应该尽量把一个柱面上的扇区逻辑上放在一起,这样找到一个正确的磁道后访问的连续扇区最多。如果按照sect[2][80][18],那么每访问18个扇区后就要重新寻道,如果按照sect[80][2][18],那么每访问36个扇区后才重新寻道,访问整个软盘的速度将提高1倍。相同的道理,硬盘的磁头数远大于软盘,速度的差别就更大了。所以必然按照CHS这样的顺序来定位
|
Cylinder-head-sector,简称CHS,是约定的定址方法。所以是sect[80][2][18]而不是sect[2][80][18]。