|
CHS 模式不能管理超过 8064MB 的硬盘,所以提出了更加简便的 LBA 寻址方式。在 LBA 所表示的地址不再是硬盘的实际物理地址(在 CHS 中由柱面,磁头和扇区决定的地址)。LBA 将 CHS 的三维寻址方式转变为一维的线性寻址,它将 C/H/S 这几个参数按照一定的方式转变为线性编号,这样避免了 CHS 的繁琐寻址方式,从而提高了系统效率。在访问磁盘时,硬盘控制器会将这种逻辑地址转换为磁盘的物理地址。
从 CHS 到 LBA 的转换公式:LBA = (( C x HPC ) + H ) x SPT + S - 1 LBA:逻辑扇区号(逻辑块地址)
C :柱面号;
H :磁头号;
S :扇区号;
HPC :每个柱面上的最大磁头数。
SPT:每个磁道上的最大扇区数。
按照上面公式,那么对于通常所说的 MBR 位于 0 磁道 0 柱面 1 扇区(磁盘也正是从这里开始寻址),此时 S = 1, LBA = 0 。
下面是假设每个柱面对应有 16 个磁头,然后对 LBA 和 CHS 进行换算后的对照表:
LBA 值 | 对应 CHS | 0 | 0, 0, 1 | 1 | 0, 0, 2 | 2 | 0, 0, 3 | 62 | 0, 0, 63 | 945 | 0, 15, 1 | 1007 | 0, 15, 63 | 1008 | 1, 0, 1 | 1070 | 1, 0, 63 | 1071 | 1, 1, 1 | 1133 | 1, 1, 63 | 1134 | 1, 2, 1 | 2015 | 1, 15, 63 | 2016 | 2, 0, 1 | 16,127 | 15, 15, 63 | 16,128 | 16, 0, 1 | 32,255 | 31, 15, 63 | 32,256 | 32, 0, 1 | 16,450,559 | 16319, 15, 63 | 16,514,063 | 16382, 15, 63 |
根据上面的 LBA 公式和上面的表格的计算值,我们可以逆推出由 LBA 求 CHS 的公式:
1. 当 C=1 时, SPT * HPC 就是一个完整柱面的扇区总数,所以要求的当磁头处于某个位置时所在的柱面,可由以下式子得出:
2. (LBA / SPT) 表示当前 LBA 位置一共跨越了多少个磁道,而 HPC 表示一个柱面上一共有多少个磁头(一个磁头对应一个磁道),所以用 (LBA / SPT) 的结果对 HPC 做求模运算,那么就知道了当前所在的 LBA 位置是对应着哪个磁头,所以求 H 位置的公式如下:
3. 求当前所处的扇区位置比较好理解,即用 LBA 对 SPT 求模,然后将其结果加 1 即可,因为对于 CHS 来说,初始扇区是从 0 柱面,0 磁道,1扇区起算,所以有以下公式: |
|