资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
硬盘结构及分区简介资料类硬盘结构及其分区简介(版本/日期)目 录背景知识简介:硬盘结构简介:基本INT 13H 调用简介:扩展INT 13H 调用简介:磁盘分区简介:BOOTSECTOR简介分区表结构简介扩展分区简介硬盘分区类型如何找到一个逻辑分区逻辑分区简介:FAT16 FAT32 NTFS逻辑分区BOOTSECTORFAT16 FAT32逻辑分区组成结构NTFS逻辑分区组成结构背景知识简介:硬盘结构简介: 很久以前, 硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘. 也就是硬盘盘片的每一条磁道都具有相同的扇区数. 由此人们定义硬盘参数为(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)。基本INT 13H 调用简介:BIOS INT 13H 调用是 BIOS 提供的磁盘基本输入输出中断调用, 它可以完成磁盘(包括硬盘和软盘)的复位, 读写, 校验, 定位, 诊断, 格式化等功能.它使用的就是 CHS 寻址方式, 因此最大识能访问 8 GB 左右的硬盘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=错误代码扩展INT 13H 调用简介:为了支持大于8G的硬盘,现在的主板BIOS提供了扩展INT 13H调用,它使用的是线性寻址方式。功能号AH: 41H 检测是否支持扩展INT 13H调用 BX=55AAH AH=0支持42H 读磁盘扇区 DL=磁盘号DS:SI=调用结构的地址调用结构:disk_addr_pktstrucpacket_sizedb16 ; 结构长度通常为16 1字节reserveddb0 ; 保留 必须为0 1字节block_countdw?; 读取扇区数目 2字节buffer_addrdd? ; 缓冲区地址4字节 高2字节段址低2节字偏移block_numdq?; 读取的绝对扇区起始号8字节disk_addr_pkt ends成功AH=0 失败AH=错误代码。43H 写磁盘扇区DL=磁盘号DS:SI=调用结构的地址 调用结构与读磁盘相同成功 AH=0 失败AH=错误代码。48H 取得磁盘参数DL=磁盘号DS:SI= 结果缓冲区结构如下info_size dw 26缓冲区长度 26flags dw ? 磁盘状态标志字cylinders dd ? 磁盘逻辑柱面数heads dd ? 磁盘逻辑磁头数sec_per_track dd ? 磁盘逻辑每道扇区数sectors dq ? 磁盘总扇区数sector_size dw ? 磁盘每扇区字节数AH=0 失败AH=错误代码磁盘分区简介: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的具体结构如下图所示:00001BD1BE1CD1CE1DD1DE1ED1FE1FD1FEMaster Boot Record主引导记录(446字节)分区信息 1(16字节) 分区信息 2(16字节) 分区信息 3(16字节) 分区信息 4(16字节) 55AABOOTSECTOR结构图分区表结构简介分区表由四个分区项构成, 每一项长度为16个字节,分区表结构如下图所示:0123456789ABCDEF分区状态, 0 = 未激活, 0x80 = 激活 (注意此项)分区起始磁头号分区起始扇区和柱面号, 低字节的低6位为扇区号,高2位为柱面号的第 9,10 位, 高字节为柱面号的低 8 位分区类型,如0x0B=FAT32, 0x83=Linux等,0表示此项未用分区结束磁头号分区结束扇区和柱面号, 低字节的低6位为扇区号,高2位为柱面号的第 9,10 位, 高字节为柱面号的低 8 位在线性寻址方式下的分区相对扇区地址(对于基本分区即为绝对地址)分区大小 (总扇区数)注意: 在 DOS / Windows 系统下, 基本分区必须以柱面为单位划分 ( Sectors * Heads 个扇区), 如对于 CHS 为 764/255/63 的硬盘, 分区的最小尺寸为 255 * 63 * 512 / 1048576 = 7.844 MB.分区表结构图扩展分区简介由于主分区表中只能分四个分区, 无法满足需求, 因此设计了一种扩展分区格式. 基本上说, 扩展分区的信息是以链表形式存放的, 但也有一些特别的地方.首先, 主分区表中要有一个基本扩展分区项, 所有扩展分区都隶属于它,也就是说其他所有扩展分区的空间都必须包括在这个基本扩展分区中. 对于DOS / Windows 来说, 扩展分区的类型为 0x05(EXTENDX). 除基本扩展分区以外的其他所有扩展分区则以链表的形式级联存放,后一个扩展分区的数据项记录在前一个扩展分区的分区表中, 但两个扩展分区 的空间并不重叠.扩展分区类似于一个完整的硬盘, 必须进一步分区才能使用. 但每个扩展分区中只能存在一个其他分区. 此分区在 DOS/Windows 环境中即为逻辑盘. 因此每一个扩展分区的分区表 (同样存储在扩展分区的第一个扇区中)中最多只能有两个分区数据项(包括下一个扩展分区的数据项).扩展分区的分区表存放在该分区的第一个扇区中它的结构与硬盘的BOOTSETOR基本相同,只是没有主引导纪录,即该扇区的0-0X1BD的数据是无效的,另外它的分区表只有前面两项是有效的。他的最后两个字节也是合法性检测标志即55AA下面是扩展分区的结构示意图主扩展分区扩 展分 区 表 分区项 1分区项 2逻辑盘1扩展分区2扩 展分 区 表 分区项 1分区项 2逻辑盘2扩展分区3扩 展分 区 表 分区项 1分区项 2逻辑盘3扩展分区的结构示意图硬盘分区类型0未使用分区项1 DOS12一种fat表为12位的分区主要用于早期小硬盘和部分软盘2 xenix一种linux分区4D0S16早期硬盘分区方法,分区表项为16位,最大支持32M分区大小5 EXTEND扩展分区的一种该分区的 起始扇区为前面的第一个EXTENDX分区起始扇区+该分区的相对偏移6 BIGDOS即FAT16分区 分区表为16位,每簇最大为32K,最大分区为2G7 NTFS分区BFAT32分区 分区表为32位CFAT32X分区与FAT32基本相同EBIGDOSX即FAT16分区扩展 分区表为16位,每簇最大可以超过32KFEXTENDX扩展分区的一种,起始扇区为该分区的相对偏移或者 前面的前面的第一个EXTENDX分区起始扇区+该分区的相对偏移;如何找到一个逻辑分区前面介绍了硬盘的分区结构,下面主要讲解如何找到一个硬盘的逻辑分区首先读取硬盘BOOTSECTOR,读取该硬盘的分区表例如下面是一个15G硬盘的BOOTSECTOR0X000 33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C 3.|.P.P.|0X010 BF 1B 06 50 57 B9 E5 01-F3 A4 CB BD BE 07 B1 04 .PW.0X020
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号