硬盘分区结构Word文档下载推荐.docx
《硬盘分区结构Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《硬盘分区结构Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
逻辑分区简介:
8
FAT16FAT32NTFS逻辑分区BOOTSECTOR8
FAT16FAT32逻辑分区组成结构12
NTFS逻辑分区组成结构13
很久以前,硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘.也就是硬盘盘片的每一条磁道都具有相同的扇区数.由此人们定义硬盘参数为(CHS)参数,即磁头数(Heads),柱面数(Cylinders),扇区数(Sectors),以及相应的寻址方式。
其中:
磁头数表示硬盘总共有几个磁头,也就是有几面盘片,最大为255(用8个二进制位存储);
柱面数表示硬盘每一面盘片上有几条磁道,最大为1023(用10个二进制位存储);
扇区数(Sectors)表示每一条磁道上有几个扇区,最大为63(用6个二进制位存储);
每个扇区一般是512个字节,理论上讲这不是必须的,但好象没有取别的值的;
所以磁盘最大容量为:
255*1023*63*512/1048576=8024GB(1M=1048576Bytes)
或硬盘厂商常用的单位:
255*1023*63*512/1000000=8414GB(1M=1000000Bytes)
在CHS寻址方式中,磁头,柱面,扇区的取值范围分别为0到Heads–1,0到Cylinders-1,1
到Sectors(注意是从1开始)
在老式硬盘中,由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费
很多磁盘空间(与软盘一样)。
为了解决这一问题,进一步提高硬盘容量,人们改用等密度结构生产
硬盘。
也就是说,外圈磁道的扇区比内圈磁道多。
采用这种结构后,硬盘不再具有实际的3D参数,
寻址方式也改为线性寻址,即以扇区为单位进行寻址。
为了与使用3D寻址的老软件兼容在硬盘控
制器内部安装了一个地址翻译器。
由它负责将老式3D参数翻译成新的线性参数。
这也是为什么现
在硬盘的3D参数可以有多种选择的原因(不同的工作模式,对应不同的3D参数,如LBA,LARGE,NORMAL)。
BIOSINT13H调用是BIOS提供的磁盘基本输入输出中断调用,它可以完成磁盘(包括硬盘和
软盘)的复位,读写,校验,定位,诊断,格式化等功能.它使用的就是CHS寻址方式,因此最大识能访问8GB左右的硬盘
INT13H调用中
AH=功能号
AL=扇区数
CH,CL=磁头号,扇区号
DH,DL=磁头号,驱动器号
ES:
BX=数据缓冲区地址
功能号AH:
0软盘系统复位
1读软盘状态只有AH有效返回AL=状态字节
2读磁盘成功AH=0失败AH=错误代码
3写磁盘成功AH=0失败AH=错误代码
4检验磁盘扇区(ES:
BX不设置)成功AH=0失败AH=错误代码
5格式化磁道(ES:
BX=磁道地址CH,CL不设置)成功AH=0失败AH=错误代码
8取磁盘参数(只需设置AH,DL返回值方在CH,CL,DH中)成功AH=0
失败AH=错误代码
为了支持大于8G的硬盘,现在的主板BIOS提供了扩展INT13H调用,它使用的是线性寻址方
式。
功能号AH:
41H检测是否支持扩展INT13H调用BX=55AAHAH=0支持
42H读磁盘扇区
DL=磁盘号
DS:
SI=调用结构的地址
调用结构:
disk_addr_pktstruc
packet_sizedb16;
结构长度通常为161字节
reserveddb0;
保留必须为01字节
block_countdw?
;
读取扇区数目2字节
buffer_addrdd?
缓冲区地址4字节高2字节段址低2
节字偏移
block_numdq?
读取的绝对扇区起始号8字节
disk_addr_pktends
成功AH=0失败AH=错误代码。
43H写磁盘扇区
调用结构与读磁盘相同
48H取得磁盘参数
SI=结果缓冲区
结构如下
info_sizedw26缓冲区长度26
flagsdw?
磁盘状态标志字
cylindersdd?
磁盘逻辑柱面数
headsdd?
磁盘逻辑磁头数
sec_per_trackdd?
磁盘逻辑每道扇区数
sectorsdq?
磁盘总扇区数
sector_sizedw?
磁盘每扇区字节数
AH=0失败AH=错误代码
BOOTSECTOR简介
BootSector也就是硬盘的第一个扇区,它由MBR(MasterBootRecord),DPT(DiskPartition
Table)和BootRecordID三部分组成。
MBR又称作主引导记录占用BootSector的前446个字节(0to0x1BD),存放系统主引导程序
(它负责从活动分区中装载并运行系统引导程序).DPT即主分区表占用64个字节(0x1BEto0x1FD),记录了磁盘的基本分区信息,主分区
表分为四个分区项,,每项16字节,分别记录了每个主分区的信息(因此最多可以有四个主分区).
BootRecordID即引导区标记占用两个字节(0x1FEand0x1FF),对于合法引导区,它等于0xAA55
,这是判别引导区是否合法的标志。
BOOTSECTOR的具体结构如下图所示:
BOOTSECTOR结构图
分区表结构简介
分区表由四个分区项构成,每一项长度为16个字节,分区表结构如下图所示:
分区表结构图
扩展分区简介
由于主分区表中只能分四个分区,无法满足需求,因此设计了一种扩展分区格式.基本上说,
扩展分区的信息是以链表形式存放的,但也有一些特别的地方.
首先,主分区表中要有一个基本扩展分区项,所有扩展分区都隶属于它,也就是说其他所有扩展
分区的空间都必须包括在这个基本扩展分区中.对于DOS/Windows来说,扩展分区的类型为0x05(EXTENDX).除基本扩展分区以外的其他所有扩展分区则以链表的形式级联存放,后一个扩展分区的数据项记录在前一个扩展分区的分区表中,但两个扩展分区的空间并不重叠.扩展分区类似于一个完整的硬盘,必须进一步分区才能使用.但每个扩展分区中只能存在一个其他分区.此分区在DOS/Windows环境中即为逻辑盘.因此每一个扩展分区的分区表(同样存储在扩展分区的第一个扇区中)中最多只能有两个分区数据项(包括下一个扩展分区的数据项).
扩展分区的分区表存放在该分区的第一个扇区中它的结构与硬盘的BOOTSETOR基本相同,
只是没有主引导纪录,即该扇区的0-0X1BD的数据是无效的,另外它的分区表只有前面两项是有效
的。
他的最后两个字节也是合法性检测标志即55AA
下面是扩展分区的结构示意图
扩展分区的结构示意图
硬盘分区类型
0未使用分区项
1DOS12一种fat表为12位的分区主要用于早期小硬盘和部分软盘
2xenix一种linux分区
4D0S16早期硬盘分区方法,分区表项为16位,最大支持32M分区大小
5EXTEND扩展分区的一种该分区的起始扇区为前面的第一个EXTENDX分区起始扇区+该分
区的相对偏移
6BIGDOS即FAT16分区分区表为16位,每簇最大为32K,最大分区为2G
7NTFS分区
BFAT32分区分区表为32位
CFAT32X分区与FAT32基本相同
EBIGDOSX即FAT16分区扩展分区表为16位,每簇最大可以超过32K
FEXTENDX扩展分区的一种,起始扇区为该分区的相对偏移或者前面的前面的第一个
EXTENDX分区起始扇区+该分区的相对偏移;
如何找到一个逻辑分区
前面介绍了硬盘的分区结构,下面主要讲解如何找到一个硬盘的逻辑分区
首先读取硬盘BOOTSECTOR,读取该硬盘的分区表例如下面是一个15G硬盘
的BOOTSECTOR
0X00033C08ED0BC007CFB-5007501FFCBE1B7C3.....|.P.P....|
0X010BF1B065057B9E501-F3A4CBBDBE07B104...PW...........
0X02030386E007C09751383-C510E2F4CD188BF58n.|.u..........
0X03083C610497419382C-74F6A0B507B4078B...It.8,t.......
0X040F0AC3C0074FCBB07-00B40ECD10EBF288..<
.t...........
0X0504E10E84600732AFE-4610807E040B740BN..F.s*.F..~..t.
0X060807E040C7405A0B6-0775D28046020683.~..t....u..F...
0X07046080683560A00E8-21007305A0B607EBF...V...!
.s.....
0X080BC813EFE7D55AA74-0B807E100074C8A0..>
.}U.t..~..t..
0X090B707EBA98BFC1E57-8BF5CBBF05008A56.......W.......V
0XA000B408CD1372238A-C1243F988ADE8AFC.....r#..$?
.....
0XB043F7E38BD186D6B1-06D2EE42F7E23956C..........B..9V
0X0C00A77237205394608-731CB80102BB007C.w#r.9F.s......|
0X0D08B4E028B5600CD13-73514F744E32E48A.N..V...sQOtN2..
0X0E05600CD13EBE48A56-0060BBAA55B441CDV......V.`..U.A.
0X0F013723681FB55AA75-3