资源描述:
《硬盘以及分区结构简介》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、研发部资料硬盘结构及其分区简介(版本/日期)目录背景知识简介:2硬盘结构简介:2基本INT13H调用简介:2扩展INT13H调用简介:3磁盘分区简介:4BOOTSECTOR简介4分区表结构简介4扩展分区简介5硬盘分区类型6如何找到一个逻辑分区7逻辑分区简介:8FAT16FAT32NTFS逻辑分区BOOTSECTOR8FAT16FAT32逻辑分区组成结构12NTFS逻辑分区组成结构13第18页共18页研发部资料背景知识简介:硬盘结构简介:很久以前,硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘.也就是硬盘盘片的每一条磁道都具有
2、相同的扇区数.由此人们定义硬盘参数为(CHS)参数,即磁头数(Heads),柱面数(Cylinders),扇区数(Sectors),以及相应的寻址方式。其中:磁头数表示硬盘总共有几个磁头,也就是有几面盘片,最大为255(用8个二进制位存储);柱面数表示硬盘每一面盘片上有几条磁道,最大为1023(用10个二进制位存储);扇区数(Sectors)表示每一条磁道上有几个扇区,最大为63(用6个二进制位存储);每个扇区一般是512个字节,理论上讲这不是必须的,但好象没有取别的值的;所以磁盘最大容量为:255*1023*63*512/104857
3、6=8024MB(1M=1048576Bytes)或硬盘厂商常用的单位:255*1023*63*512/1000000=8414MB(1M=1000000Bytes)在CHS寻址方式中,磁头,柱面,扇区的取值范围分别为0到Heads–1,0到Cylinders-1,1到Sectors(注意是从1开始)在老式硬盘中,由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费很多磁盘空间(与软盘一样)。为了解决这一问题,进一步提高硬盘容量,人们改用等密度结构生产硬盘。也就是说,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具
4、有实际的3D参数,寻址方式也改为线性寻址,即以扇区为单位进行寻址。为了与使用3D寻址的老软件兼容在硬盘控制器内部安装了一个地址翻译器。由它负责将老式3D参数翻译成新的线性参数。这也是为什么现在硬盘的3D参数可以有多种选择的原因(不同的工作模式,对应不同的3D参数,如LBA,LARGE,NORMAL)。基本INT13H调用简介:BIOSINT13H调用是BIOS提供的磁盘基本输入输出中断调用,它可以完成磁盘(包括硬盘和软盘)的复位,读写,校验,定位,诊断,格式化等功能.它使用的就是CHS寻址方式,因此最大识能访问8GB左右的硬盘INT13
5、H调用中AH=功能号AL=扇区数CH,CL=磁头号,扇区号DH,DL=磁头号,驱动器号ES:BX=数据缓冲区地址功能号AH:0软盘系统复位第18页共18页研发部资料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=错误代码扩展INT13H调用简
6、介:为了支持大于8G的硬盘,现在的主板BIOS提供了扩展INT13H调用,它使用的是线性寻址方式。功能号AH:41H检测是否支持扩展INT13H调用BX=55AAHAH=0支持42H读磁盘扇区DL=磁盘号DS:SI=调用结构的地址调用结构:disk_addr_pktstrucpacket_sizedb16;结构长度通常为161字节reserveddb0;保留必须为01字节block_countdw?;读取扇区数目2字节buffer_addrdd?;缓冲区地址4字节高2字节段址低2节字偏移block_numdq?;读取的绝对扇区起始号8字
7、节disk_addr_pktends成功AH=0失败AH=错误代码。43H写磁盘扇区DL=磁盘号DS:SI=调用结构的地址调用结构与读磁盘相同成功AH=0失败AH=错误代码。48H取得磁盘参数DL=磁盘号DS:SI=结果缓冲区结构如下info_sizedw26缓冲区长度26flagsdw?磁盘状态标志字cylindersdd?磁盘逻辑柱面数headsdd?磁盘逻辑磁头数sec_per_trackdd?磁盘逻辑每道扇区数sectorsdq?磁盘总扇区数sector_sizedw?磁盘每扇区字节数AH=0失败AH=错误代码第18页共18页研
8、发部资料磁盘分区简介:BOOTSECTOR简介BootSector也就是硬盘的第一个扇区,它由MBR(MasterBootRecord),DPT(DiskPartitionTable)和BootRecord