硬盘寻址
Posted 锦衣admin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬盘寻址相关的知识,希望对你有一定的参考价值。
硬盘寻址
内存读写数据时需要到硬盘内进行。
CHS寻址模式
CHS寻址介绍:
早期硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数。由此产生了所谓的CSH 3D参数 (Disk Geometry)。即磁头数(Heads),柱面数(Cylinders),扇区数(Sectors),以及相应CHS寻址方式:使用时分别读取三个参数,然后再送到磁盘控制器去执行。系统用8b来存储磁 头地址,用10b来存储柱面地址,用6b来存储扇区地址。
CHS寻址模式将硬盘划分为磁头(Heads)、柱面(Cylinder)、扇区(Sector)。
- 磁头(Heads):每张磁片的正反两面各有一个磁头,一个磁头对应一张磁片的一个面。因此,用第几磁 头就可以表示数据在哪个磁面。
- 柱面(Cylinder):所有磁片中半径相同的同心磁道构成“柱面",意思是这一系列的磁道垂直叠在一起,就形成一个柱面的形状。简单地理解,柱面数=磁道数。
- 扇区(Sector):将磁道划分为若干个小的区段,就是扇区。虽然很小,但实际是一个扇子的形状,故称为扇区。每个扇区的容量为512字节。
CHS寻址计算方式过程:
由于早期磁盘的每个磁道的扇区数一样多(外圈磁颗粒稀疏,耐用性强),整体磁盘空间大小也不大。所以在设计时用了24位来表示:10+8+6:
- C, (柱面数) 可编程数为 2^10 =1024
- H, (磁头数) 可编程数为 2^8 =256
- S, (扇区数) 可编程数为 2^6 =64
- 由于1位用于特殊作用,均需要减1 即最大寻址空间为:
255 * 1023 * 63 * 512 / 1048576 = 7.837 GB ( 1M =1048576 Bytes ) - 或硬盘厂商常用的单位:
255 * 1023 * 63 * 512 / 1000000 = 8.414 GB ( 1M =1000000 Bytes )
CHS寻址方式的容量由CHS三个参数决定:硬盘容量 = 柱面数 × 磁头数 × 扇区数 × 512(扇区字节)
LBA寻址模式
LBA寻址介绍:
由于要求每个磁道的扇区数相等,而外道的周长要大于内道,所以外道的记录密度要远低于内道,不仅造成了硬盘空间的浪费,也限制了硬盘的容量。为了解决这一问题,进一步提高硬盘容量,人们改用等密度结构生产硬盘。也就是说,外圈磁道的扇区比内圈磁道多,采用这种结构后,硬盘不再具有实际的CHS参数,寻址方式也改为线性寻址(LBA寻址 ),即以扇区为单位进行寻址。
其中物理特性里,主要的几个关键参数均有改变:
- 磁盘面的磁颗粒更高密+磁头更稳定更细(影响C)
- 磁盘面的磁颗粒均匀分布(影响S)
- 磁盘增加磁盘盘面(影响H)
在LBA地址中,地址不再表示实际硬盘的实际物理地址(柱面、磁头和扇区)。LBA编址方式将 CHS这种三维寻址方式转变为一维的线性寻址,它把硬盘所有的物理扇区的C/H/S编号通过一定的规则转变为一线性的编号,系统效率得到大大提高,避免了烦琐的磁头/柱面/扇区的寻址方式。在访问硬盘时,由硬盘控制器将这种逻辑地址转换为实际硬盘的物理地址。
但一些古老的软件仍然使用CHS寻址方式(如使用BiosInt13H接口的软件),为了兼容这样的程序,在硬盘控制器内部安装了一个地址翻译器,可以通过它将老式CHS参数翻译成新的线性参数。
LARGE 大硬盘模式,在硬盘的柱面超过 1024 而又不为 LBA 支持时采用。LARGE 模式采用的方法是把柱面数除以 2,把磁头数乘以 2,其结果总容量不变。
LBA寻址计算过程:
设NS为每磁道扇区数,NH为磁头数,C、H、S分别表示磁盘的柱面、磁头和扇区编号,LBA表示逻辑扇区号,div为整除计算,mod为求余计算,则:
-
LBA=NH×NS×C+NS×H+S-1
-
C=(LBA div NS)div NH
-
H=(LBA div NS)mod NH
-
S=(LBA mod NS)+1
例如 LBA = 0 则 CHS = 0/0/1从C/H/S到LBA的计算公式:
- LBA=(C-CS)PHPS+(H-HS)*PS+(S-SS)
以上是关于硬盘寻址的主要内容,如果未能解决你的问题,请参考以下文章