硬盘结构简介:
很久以前, 硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘. 也就是硬盘盘片的每一条磁道都具有相同的扇区数. 由此人们定义硬盘参数为(CHS)参数,即磁头数(Heads),柱面数(Cylinders),扇区数(Sectors),以及相应的寻址方式。
其中:
磁头数表示硬盘总共有几个磁头,也就是有几面盘片,最大为255 (用8个二进制位存储);
柱面数表示硬盘每一面盘片上有几条磁道, 最大为1023(用10个二进制位存储);
扇区数(Sectors) 表示每一条磁道上有几个扇区, 最大为63 (用6个二进制位存储);
每个扇区一般是 512个字节, 理论上讲这不是必须的, 但好象没有取别的值的;
所以磁盘最大容量为:255 * 1023 * 63 * 512 / 1048576 = 8024 GB ( 1M = 1048576 Bytes )
或硬盘厂商常用的单位:255 * 1023 * 63 * 512 / 1000000 = 8414 GB ( 1M = 1000000 Bytes )
在 CHS 寻址方式中, 磁头, 柱面, 扇区的取值范围分别为 0 到 Heads – 1,0 到 Cylinders - 1,1 到 Sectors (注意是从 1 开始)
在老式硬盘中,由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费很多磁盘空间 (与软盘一样)。为了解决这一问题,进一步提高硬盘容量,人们改用等密度结构生产硬盘。也就是说,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的3D参数,寻址方式也改为线性寻址,即以扇区为单位进行寻址。为了与使用3D寻址的老软件兼容在硬盘控制器内部安装了一个地址翻译器。由它负责将老式3D参数翻译成新的线性参数。这也是为什么现在硬盘的3D参数可以有多种选择的原因 (不同的工作模式, 对应不同的3D参数, 如 LBA, LARGE, NORMAL)。
磁盘分区简介:
BOOTSECTOR简介
Boot Sector 也就是硬盘的第一个扇区, 它由 MBR (Master Boot Record), DPT (Disk Partition Table) 和 Boot Record ID 三部分组成。MBR 又称作主引导记录占用 Boot Sector 的前 446 个字节 ( 0 to 0x1BD ), 存放系统主引导程序 (它负责从活动分区中装载并运行系统引导程序).
DPT 即主分区表占用 64 个字节 (0x1BE to 0x1FD), 记录了磁盘的基本分区信息,主分区表分为四个分区项,,每项 16 字节,分别记录了每个主分区的信息(因此最多可以有四个主分区).Boot Record ID 即引导区标记占用两个字节 (0x1FE and 0x1FF), 对于合法引导区,它等于 0xAA55,这是判别引导区是否合法的标志。
BOOTSECTOR的具体结构如下图所示:
Master Boot Record主引导记录(446字节) | |
分区信息1(16字节) | |
分区信息2(16字节) | |
分区信息3(16字节) | |
分区信息4(16字节) | |
55AA |
BOOTSECTOR结构图
分区表结构简介
分区表由四个分区项构成, 每一项长度为16个字节,分区表结构如下图所示:
分区状态,0=未激活,0x80=激活(注意此项) | 0 |
分区起始磁头号 | 1 |
分区起始扇区和柱面号,底字节的低6位为扇区号,高2位为柱面号的第9,10位,高字节为柱面号的低8位 | 2 |
3 | |
分区类型,如0x0B=FAT32,0x83=Linux等,0表示此项未用 | 4 |
分区结束磁头号 | 5 |
分区结束扇区和柱面号,低字节的低6位为扇区号,高2位为柱面号的第9,10位,高字节为柱面号的低8位 | 6 |
7 | |
在线性寻址方式下的分区相对扇区地址(对于基本分区即为绝对地址) | 8 |
9
|