第一部分 简 介
一. 硬盘结构简介
1. 硬盘参数释疑
到目前为止,人们常说的硬盘参数还是古老的 CHS (Cylinder/Head/Sector)参数。那么为什么要使用这些参数,它们的意义是什么?它们的取值范围是什么? 逆@风@者 很久以前(long long ago ...),硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数。由此产生了所谓的3D参数 (Disk Geometry)。即磁头数(Heads),柱面数(Cylinders),扇区数(Sectors),以及相应的寻址方式。 其中:
磁头数(Heads) 表示硬盘总共有几个磁头,也就是有几面盘片,最大为 255 (用 8 个二进制位存储); 柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道,最大为 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开始)。
2. 基本 Int 13H 调用简介
BIOS Int 13H 调用是 BIOS 提供的磁盘基本输入输出中断调用,它可以完成磁盘(包括硬盘和软盘)的复位,读写,校验,定位,诊断,格式化等功能。它使用的就是 CHS 寻址方式,因此最大识能访问 8 GB 左右的硬盘( 本文中如不作特殊说明,均以 1M = 1048576 字节为单位)。
3. 现代硬盘结构简介
在老式硬盘中,由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费很多磁盘空间 (与软盘一样)。为了解决这一问题,进一步提高硬盘容量,人们改用等密度结构生产硬盘。也就是说,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的3D参数,寻址方式也改为线性寻址,即以扇区为单位进行寻址。 为了与使用3D寻址的老软件兼容 (如使用BIOS Int13H接口的软件),在硬盘控制器内部安装了一个地址翻译器,由它负责将老式3D参数翻译成新的线性参数。这也是为什么现在硬盘的3D参数可以有多种选择的原因 (不同的工作模式,对应不同的3D参数,如 LBA,LARGE,NORMAL)。
4. 扩展 Int 13H 简介
虽然现代硬盘都已经采用了线性寻址,但是由于基本 Int 13H 的制约,使用 BIOS Int 13H 接口的程序,如 DOS 等还只能访问 8 G 以内的硬盘空间。为了打破这一限制,Microsoft 等几家公司制定了扩展 Int 13H 标准(Extended Int13H),采用线性寻址方式存取硬盘,所以突破了 8 G 的限制,而且还加入了对可拆卸介质 (如活动硬盘) 的支持。
二. Boot Sector 结构简介
1. Boot Sector 的组成
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,这是判别引导区是否合法的标志。 Boot Sector 的具体结构如下图所示:
Offset 0000H
Offset 01BDH
Offset 01BEH
Offset 01CDH Offset 01CEH
Offset 01DDH Offset 01DEH
Offset 01EDH Offset 01EEH
Offset 01FDH Offset 01FEH
Offset
本文章更多内容:1 - 2 - 下一页>> |