第三章 硬盘逻辑结构简介
一. 硬盘逻辑结构简介
1. 硬盘参数释疑 到目前为止, 人们常说的硬盘参数还是古老的 CHS(Cylinder/Head/Sector)参数. 那么为什么要使用这些参数,它们的意义是什么?它们的取值范围是什么? 很久以前, 硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘. 也就是硬盘盘片的每一条磁道都具有相同的扇区数.由此产生了所谓的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寻址的老软件兼容 (如使用BIOSInt13H接口的软件), 在硬盘控制器内部安装了一个地址翻译器,由它负责将老式3D参数翻译成新的线性参数. 这也是为什么现在硬盘的3D参数可以有多种选择的原因(不同的工作模式, 对应不同的3D参数, 如 LBA, LARGE, NORMAL).
4. 扩展 Int 13H 简介 虽然现代硬盘都已经采用了线性寻址, 但是由于基本 Int13H 的制约, 使用 BIOS Int 13H 接口的程序, 如 DOS 等还只能访问 8 G以内的硬盘空间.为了打破这一限制, Microsoft 等几家公司制定了扩展 Int 13H 标准(Extended Int13H), 采用线性寻址方式存取硬盘, 所以突破了 8 G的限制,而且还加入了对可拆卸介质 (如活动硬盘) 的支持.
二. Boot Sector 结构简介
1. Boot Sector 的组成
Boot Sector 也就是硬盘的第一个扇区, 它由 MBR (MasterBoot 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 and0x1FF), 对于合法引导区, 它等于 0xAA55, 这是判别引导区是否合法的标志.
Boot Sector 的具体结构如下图所示:
0000 |---------------------------------------------|
| |
| Master Boot Record |
| 主引导记录(446字节) |
| |
01BD | |
01BE |---------------------------------------------|
01CD | 分区信息 1(16字节) |
01CE |---------------------------------------------|
1DD | 分区信息 2(16字节) |
01DE |---------------------------------------------|
01ED | 分区信息 3(16字节) |
01EE |---------------------------------------------|
01FD | 分区信息 4(16字节) |
|---------------------------------------------|
| 01FE | 01FF |
| 55 | AA |
|---------------------------------------------|
2. 分区表结构简介
分区表由四个分区项构成, 每一项的结构如下:
BYTE State : 分区状态, 0 =未激活, 0x80 = 激活 (注意此项)
BYTE StartHead : 分区起始磁头号
WORD StartSC : 分区起始扇区和柱面号,底字节的低6位为扇区号,
高2位为柱面号的第 9,10 位, 高字节为柱面号的低 8 位
BYTE Type : 分区类型, 如0x0B = FAT32, 0x83 = Linux 等,
00 表示此项未用,07 = NTFS
BYTE EndHead : 分区结束磁头号
WORD EndSC :分区结束扇区和柱面号, 定义同前
DWORD Relative :在线性寻址方式下的分区相对扇区地址
(对于基本分区即为绝对地址)
DWORD Sectors : 分区大小 (总扇区数)
注意: 在 DOS / Windows 系统下,基本分区必须以柱面为单位划分( Sectors * Heads 个扇区), 如对于 CHS 为 764/255/63 的硬盘,分区的最小尺寸为 255 * 63 * 512 / 1048576 = 7.844 MB.
3. 扩展分区简介 由于主分区表中只能分四个分区, 无法满足需求,因此设计了一种扩展分区格式. 基本上说, 扩展分区的信息是以链表形式存放的,但也有一些特别的地方.首先, 主分区表中要有一个基本扩展分区项,所有扩展分区都隶属于它,也就是说其他所有扩展分区的空间都必须包括在这个基本扩展分区中.对于DOS / Windows 来说, 扩展分区的类型为 0x05. 除基本扩展分区以外的其他所有扩展分区则以链表的形式级联存放, 后一个扩展分区的数据项记录在前一个扩展分区的分区表中,但两个扩展分区的空间并不重叠. 扩展分区类似于一个完整的硬盘, 必须进一步分区才能使用.但每个扩展分区中只能存在一个其他分区. 此分区在 DOS/Windows环境中即为逻辑盘.因此每一个扩展分区的分区表(同样存储在扩展分区的第一个扇区中)中最多只能有两个分区数据项(包括下一个扩展分区的数据项)
第四章 硬盘的物理安装
所谓的硬盘物理安装,指的是将硬盘装进机箱,设置跳线并接好电源线和数据线的过程。电源接口:将主机的电源与此相连,以给硬盘供电。注意“梯形”接线方向,方向错误将无法插入。主从跳线:主板上一般只有两个IDE接口,每一根接线有三个接口,其中一个接主板的IDE接口,另两个则可以接两个IDE设备,包括硬盘、光驱、刻录机等。在同一根接线上如果接两个IDE接口设备,则其中一个是主盘(Master),另一个为从盘(Slave)。究竟是作为主盘还是从盘则要通过硬盘或光驱背面的“主从跳线”进行设置,否则将无法正常使用。
一般来说,硬盘缺省的跳线设置为主硬盘,光驱的缺省设置则为从盘。具体的设置方法在硬盘或光驱的机壳上均有设置说明。数据线:数据线用于连接硬盘与主板 IDE接口,作数据传输之用。主板IDE口与硬盘数据线接口均为40针接口,而数据线则分40线与80线两种(如下图)。其中80线亦称为UDMA/66 硬盘线,主要用于Ultra ATA 66硬盘,增加的40根地线作隔离干扰之用。要发挥Ultra ATA 66硬盘的优势,UDMA/66硬盘线。Ultra ATA 33硬盘也可以使用UDMA/66硬盘线,但不会因此带来任何好处。注意,硬盘的数据线有方向之分,反接的话硬盘将无法工作。数据线的一侧有一红线,红线侧必须与IDE接口的第1/21针相连接。按以上所说设置好主从跳线并接好电源线、数据线之后,就可以把硬盘固定在机箱上的3.5"托架上。当然,你也可以先固定,再接线。硬盘可以水平安装也可以垂直安装,两者并无不同。有人说硬盘垂直安装会影响硬盘的寿命,这种说法并不科学。但需要注意的是,水平安装时裸露面(可以见到电路板的一面)要朝下,以免积聚灰尘。至此,硬盘的物理安装大功告成。
双硬盘的安装:
1、安装前的准备 目前主流IDE硬盘均为3寸硬盘,安装双硬盘时机箱需要有额外的3寸安装架。不过多数机箱只有两个3寸安装架,硬盘占一个,软驱占一个,因此只好在5寸安装架上做文章,办法是购买一副硬盘支架,将硬盘安装在支架上,然后再安装在机箱中的5寸框内。 一般而言,计算机电源输出功率都在 200W以上,加块硬盘应该没问题。但如果你已安装了双光驱可大功率显卡等设备,就要考虑电源是否还能再提供12W左右功率去支持一块硬盘,否则可能出现系统不稳定的状况。另外,还要确保有一个空闲的电源接口供硬盘使用。 绝大多数主板均提供2个IDE接口,可接4个IDE设备,硬盘、光驱、刻录机、 ZIP等设备均占用IDE口,安装双硬盘前你还需要为你的新硬盘预留一个IDE口。此外,如果你的电脑只有一条IDE数据线,赶快再买一根。
2、 双硬盘的主、从状态设置
假设你的电脑原有一个硬盘和一个光驱,通常接法有以下两个:两个硬盘使用同一根硬盘线接在主板的Primary IDE接口,速度快的设为主盘(Master),速度慢的设为从盘(Slave)。光驱接在主板的Secondary IDE接口,并设为主盘。速度快的硬盘单独接在主板的Primary IDE接口并设为主盘,光驱与第二块硬盘接在主板的Secondary IDE接口,光驱设为主盘,硬盘设为主盘。通常我们将第二块硬盘仅作为备份盘时可考虑这种接法。
3、双硬盘盘符交错的解决安装双硬盘后,我们会发现第一个硬盘(以下简称Disk1)的C盘还是C盘,不过Disk1的D盘在新系统中却变为E盘,E盘变成F盘...而第二个硬盘(以下简称Disk2)的C盘则变为新系统的D盘,Disk2的D盘、E盘等逻辑盘就排在Disk1所有盘符之后。这种情况称为盘符交错现象。 盘符交错是因为MS-DOS对硬盘的管理方法做成的。MS-DOS把第一个物理硬盘的激活的DOS分区叫做C,第二个物理硬盘的有效的激活DOS分区叫做D,第一个物理硬盘的扩展DOS分区叫做E、F等等,剩下的字母分配给第二个物理硬盘的扩展DOS分区。如果没有第二个物理硬盘,或第二个物理硬盘没有基本DOS分区,那么D就分配给第一个物理硬盘的扩展DOS分区的第一个逻辑驱动器了。
盘符交错现象会产生一系列问题,最常见的就是某些软件因为盘符变化而导致路径错误。要避免盘交错现象,对于Windows 95/98系统来说,最简单的方法莫过于利用它的“即插即用”功能。即在BIOS中将第二硬盘设为None,开机后Windows 95启动后,Windows 95/98的“即插即用”功能就可以提示检测到新硬件,并自动分配盘符给它,此时盘符的分配和很多人的期望就一致了。由于原来主硬盘上的所有软件所在的盘符都没有变化,因此在硬盘上的软件可以照常运行,盘符交错问题就解决了。
第五章 系统启动过程
系统启动过程主要由一下几步组成(以硬盘启动为例):
1. 开机
2. BIOS 加电自检 ( Power On Self Test -- POST ),内存地址为 0ffff:0000
3. 将硬盘第一个扇区 (0头0道1扇区, 也就是BootSector)读入内存地址 0000:7c00 处.
4. 检查 (WORD) 0000:7dfe 是否等于 0xaa55,若不等于,则转去尝试其他启动介质,如果没有其他启动介质则显示"No ROM BASIC" 然后死机.
5. 跳转到 0000:7c00 处执行 MBR 中的程序.
6. MBR 首先将自己复制到 0000:0600 处,然后继续执行.
7. 在主分区表中搜索标志为活动的分区.如果发现没有活动分区或有不止一个活动分区, 则转停止.
8. 将活动分区的第一个扇区读入内存地址 0000:7c00处.
9. 检查 (WORD) 0000:7dfe 是否等于 0xaa55,若不等于则显示 "Missing Operating System" 然后停止,或尝试软盘启动.
10. 跳转到 0000:7c00处继续执行特定系统的启动程序.
11. 启动系统 ...
以上步骤中 2,3,4,5 步是由 BIOS 的引导程序完成.6,7,8,9,10步由MBR中的引导程序完成.
一般多系统引导程序 (如 SmartFDISK, BootStar, PQBoot等)都是将标准主引导记录替换成自己的引导程序, 在运行系统启动程序之前让用户选择要启动的分区.
而某些系统自带的多系统引导程序 (如 lilo, NT Loader等)则可以将自己的引导程序放在系统所处分区的第一个扇区中, 在 Linux中即为 SuperBlock (其实 SuperBlock 是两个扇区).
注: 以上各步骤中使用的是标准 MBR,其他多系统引导程序的引导过程与此不同.