FAT文件系统的组织结构

FAT文件系统的组织结构

1. 软盘数据的逻辑存储
软盘无须低级格式化和分区操作,只需用FORMAT命令做高级格式化即可。经过格式化操作之
后,系统将在软磁盘上建立以下的数据结构:
(1) 引导记录(DBR):位于0面0道1扇区,说明磁盘结构信息。
(2) 文件分配表(FAT):用于记录磁盘空间的分配情况,指示硬盘数据信息存
放的柱面及扇区的信息指针。其表项可以是以下四种表示方式之一:
A.一个数字,代表指向另一个簇的指针。
B.数字0,表示一个未使用的簇
C.一个坏扇区标记
D.文件结束标记符EOF
(3) 文件根目录表FDT:一个指示以存入数据信息的索引。记录磁盘上存储文
件的大小,位置,日期和时间等数据。
(4) 数据区:存放数据信息。
2. 硬盘中的数据组织
刚刚从厂商处购来的新硬盘既无任何数据,也不能写入任何数据,必须先进行低级格
式化,FDISK分区,FORMAT高级格式化后方可使用。对硬盘的这一系列初始化工作,称之为
硬盘准备。过程如下:
低级格式化---------------FDISK分区-------------------FORMAT高级格式化
(1)低级格式化:对硬盘划分磁道和扇区,在扇区的地址域上标注地址信息,并剔出坏磁
道。
(2)FDISK:允许整个物理硬盘在逻辑上划分成多个分区(最多4个),以实现多个操作系
统共享硬盘空间。如果将整个物理盘全部划归DOS/WINDOWS管理,则FDISK分区的作用是将一
个物理盘划分一个主分区和一个扩展分区,然后再将扩展分区划分成一个或多个逻辑盘。在
硬盘上建立分区表的同时,FDISK把主引导记录MBR写到硬盘的主引导记录(柱面0,磁头0,
扇区1),并激活一个用户指定的分区。
(3)FORMAT:在DOS分区空间划分逻辑扇区,生成DOS引导扇区(即逻辑0扇区)DBR,文件
分配表FAT和根文件目录表FDT。
硬盘在DOS/WINDOWS的管理下,数据信息由MBR,DBR,FAT,FDT和数据区5
个部分组成。与软盘的数据结构相比较,硬盘多了一个数据区MBR(Master Boot
Record)。
MBR称为硬盘主引导记录。它是由FDISK建立在硬盘柱面0,磁头0,扇区1的硬盘引导记录数
据区,用于硬盘启动时将系统控制权转给用户指定的,并在分区表中登记了的某个操作系统
区。
MBR DBR FAT1 FAT2 根目录 数据区
MBR位于0柱,0头,1扇区 DBR从逻辑0扇区开始
FAT1从逻辑1扇区开始
硬盘FAT32文件系统的数据组织结构:
MBR DBR DBR副本 保留扇区 FAT1 FAT2 根目录FDT 数据区
MBR位于0柱,0头,1扇区 DBR从逻辑0扇区开始
DBR副本从逻辑6扇区开始 FAT1从逻辑32扇区开始
  硬盘的数据区结构与软盘相比较有两点主要区别:
(1) 多了一个独立于操作系统的MBR
(2) 硬盘的FAT1,FAT2和根目录FDT的大小及起止扇区并不固定,它于逻辑盘的容量有
关。
虽然硬盘的FAT1,FAT2和根目录FDT表的大小与起始扇区号和逻辑盘的容量有关。但是,根
目录FDT的大小总为32个扇区。;
二、硬盘主引导记录(DBR)及其结构
硬盘的0柱面,0磁头,1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录
(MBR)。该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的,并在分
区表中登记了某个操作系统分区。
主引导记录记录磁盘最重要的结构信息。主引导记录是硬磁盘作分区时建立的(Fdisk)。主
引导记录包括一小段执行代码(主引导代码)、磁盘特征和硬盘分区表。主引导记录(以及后
面介绍的引导扇区)结束的两个字节必须是引导自举标记0x55AA。
磁盘特征位于0x01B8, 指定磁盘操作系统。
软盘无主引导记录。软盘的第一个扇区是引导扇区。虽然每个硬盘包含一个主引导记录, 只
有其拥有活动主分区时才用主引导代码。
主引导代码实现下列功能:
* 扫描分区表查找活动分区;
* 寻找活动分区的起始扇区;
* 将活动分区的引导扇区读到内存;
* 执行引导扇区的运行代码。
* 如果主引导代码未完成这些功能, 系统显示下列错误信息:
* Invalid partition table
* Error loading operating system
* Missing operating system
1. MBR的读取
硬盘的引导记录(MBR)是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命
令来读取它。
2. MBR的组成
一个扇区的硬盘主引导记录MBR由4个部分组成:
(1)主引导程序(偏移地址0000H~0088H),它负责从活动分区中装载并运行系统引导程
序。
(2)出错信息数据区偏移地址(0089~00E1为出错信息,10E2H~10BD全为0字节)
(3)分区表(DPT,Disk Partition Table).含4个分区项偏移地址01BEH~01FDH,每个
分区表项长16个字节,共64字节为分区项1,分区项2,分区项3,分区项4).其中,加下划线的16
个字节数据就是分区项1(即主分区)的参数.
(4)结束标志偏移地址(01EFH~01FFH的两个字节值为结束标志55AA,如果该标志错误系统就
不能启动).
3. MBR中的分区信息结构
占用512个字节的MBR中,偏移地址01BEH~01FDH的64个字节,为4个分区项内容(分区信息
表)。它是由磁盘介质类型及用户在使用FDISK定义分区时确定的。在实际应用中FDISK对一
个硬盘划分的主分区可少于4个,但最多不少于4个。每个分区表的项目是16个字节。
4. 主要功能及其工作流程
启动PC机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H。然后读系统磁
盘0柱面,0磁头,1扇区的主引导记录MBR内容到内存指定单元0:7C00首址开始的区域,并
执行MBR程序段。
硬盘的引导记录是不属于任何一个操作系统的,它先于所有的操作系统而被调入内存并发挥
作用,然后才将控制权交给主分区内的操作系统,并让主分区信息表来管理硬盘。
MBR程序段的主要功能如下:
(1) 检查硬盘分区表是否完好
(2) 在分区表中寻找可引导的活动分区
(3) 将活动分区的第一逻辑扇区内容装入内存。在DOS/WINDOWS分区中,此扇区内容称为
DOS引导记录。
三、引导记录及其结构
磁盘的逻辑0扇区都称为DOS引导扇区,又称为BOOT区。我们可以用DEBUG中的L命令读出DBR
扇区的内容。在DEBUG中,L命令的格式是:
-L 内存缓冲区地址,盘号, 起始扇区号, 要读取的扇区数 回车其中,磁盘A,B,C,D,
E…..的盘号分别为0,1,2,3,4…….
例如,进入DEBUG后,将D盘DBR扇区的读入内存CS:100的命令为:-L 100,3,0,1 回车
1. DBR扇区的结构
经由FORMAT高级格式化写到该扇区的内容成为DOS引导记录DBR,其主要功能是完成
DOS/WINDOWS系统的自举。以FAT16的硬盘DBR为例,它由以下5个部分组成:
(1) 跳转指令,占用3个字节的跳转指令将跳至引导代码,其内容随DOS版本变化。
(2) 厂商标识和DOS版本号。该部分总共占用8个字节,其内容随DOS版本而不同。
(3) BPB(BIOS Paramenter Block, BIOS参数块)。BPB从第12字节起占用19个字节。
(4) DOS引导程序。DOS引导程序既是占用480字节的BOOT代码,负责完成DOS的3个系统文
件的装入工作。这部分内容随DOS版本不同而变化。
(5) 结束标志字,结束标志占用2个字节,其值为AA55。
以上5个部分共占用512个字节也正好是一个扇区,因此,称它DOS引导扇区或BOOT区。在该
区间的内容中,除了第5部分结束标志字是固定不变之外,其余4个部分都是不确定的,第
1,2,4部分都因DOS版本的不同而不同,第三部分的内容也将随DOS版本及硬盘的逻辑盘参
数的变化而变化。
DOS引导记录中的BPB参数块从第12(0BH)字节起占用21个字节,这是磁盘的重要参数区。
保留扇区:由操作系统指定的被保留用作引导区的扇区数。
介质描述:向操作系统提供的所用磁盘的性质。介质描述的值是DOS所能识别的十六进制
数,不同的介质具有不同的介质描述值。硬盘的介质描述符为"F8"。
隐含扇区数:一般用于硬盘分区,所以在软盘中该值为0,在硬盘分区中,它表示从磁盘起
始扇区至当前分区之前的总扇区数。
硬盘的每一个分区都是一个独立的"逻辑驱动器",DOS将每个分区都视为一个从0开始的连续
扇区块。每个分区的隐含扇区取决于该分区以前的扇区总数。一般来说,分区1的隐含扇区
数为17。
DBR的主要功能:
DOS/windows系统在引导的时候,DBR是第一个(除硬盘的MBR之外)需装载的程序段。DBR装
入内存后,即开始执行该引导程序段,其主要任务是装载DOS的系统隐藏文件IO.SYS。
DBR程序段所完成的主要任务如下:
(1) 重新设置引导驱动器
(2) 将根目录的第一个扇区(即根目录FDT中的前16个文件项)装载到内存;
(3) 检查FDT中的前两个文件是否DOS的两个系统隐藏文件。
(4) 将其中一个系统隐藏文件IO.SYS装载到内存。
(5) 将控制权交给该系统隐藏文件IO.SYS。
四,文件分配表FAT
  文件分配表FAT(File Allocation Tabel)是文件管理系统用来给每个文件分配磁盘物理
空间的表格,它告诉操作系统,文件存放在磁盘什么地方。
  文件分配表型文件系统是微软操作系统最传统和应用最广的文件系统。标准的 FAT 使
用 16 位寻址方式, Windows 95 OSR2中引入 FAT32 方案。FAT16 簇数的上限是 2 的 16
次即 65536 个, 每簇扇区数的上限是 64 个, 因此其分区空间的上限为 2G(Windows
NT/2000 每簇扇区数可为 128, FAT16 空间扩充到 4G); FAT32 簇使用 32 位寻址方式, 其
中高 4 位保留, 实际簇数最多为 2 的 28 次, 同时受当前磁盘物理结构和工业标准的限
制,一个磁盘或磁盘阵列中扇区最大个数为 2 的 32 次, 空间为 2 的 41 次即2TB。
Windows 2000 将 FAT32 卷的大小限制为 32GB。
  文件系统的全部目的是跟踪文件, 具体描述即需要说明整个磁盘分区中每个存储单元
(簇)的使用情况、文件数据的簇存储情况(连续或碎片)以及树型目录结构的描述。FAT 实际
上是一个卷中所有簇使用情况的映射表, 每个文件/目录都同表中的若干项对应联系, 并在
目录中进行索引。FAT32 是 FAT 的扩展, 支持 32位寻址, 保留了簇映射和目录索引的基本
结构。
文件分配表(FAT)有表标识和簇映射(旧称表目)的集合组成。一个完全相同的镜像副本连续
存储在主 FAT 表后。
表标识符包括磁盘介质描述符( 1 字节)和填充字节, 总计占两个簇的簇映射区域(这大概也
就是 FAT 文件系统簇号由 2 开始的原因 ?), 填充字节一般为 FFFAT32 的填充字节中还包
含"脏位", 即系统启动时执行磁盘检查(FAT-ChkDsk/NTFS-AutoChk)。
FAT 实际上由 FAT12 和 FAT16 构成, 其簇映射值分别为 12 和 16 位, 其他的全部存储逻
辑均相同, 当总簇数大于 4080(FF0h)时为标准的 16 位 FAT。FAT 簇映射中, 0000 表示空
簇, FFFF 表示簇链结束, FFF7 表示坏簇, 其余值表示其后续簇的簇号。FAT12 和 FAT32
的存储策略同 FAT16 类似, 例如 FAT12的结束簇为 FFF, FAT32 的坏簇为 0FFFFFF7 等(注
意 FAT32 的高 4 位保留)。
  FAT 具有紧凑和高速的优点。通过对磁盘的数字化描述, FAT 记录了每个文件的位置和
区域。自然这些优点的得到是有代价的, FAT 的代价是寻址空间的局限(2GB)和簇内空间的
浪费, FAT32 的 FAT 表则占据了过多的磁盘空间, 如果操作系统操作一个相对大的分区依
然试图将整个 FAT 表放进内存, 其占据的空间和时间资源将相当可观, 同时会导致系统的
脆弱, 特别是磁盘碎片很多时, 甚至可能造成系统的崩溃, 至少将影响正常系统的健壮。
引导扇区 BIOS 参数表`
  磁盘 BIOS 参数表(BPB)描述磁盘的逻辑结构, 是 DOS 文件系统在磁盘上存取文件的依
据, 文件存取中的簇与逻辑扇区之间的相互映射以及逻辑扇区与物理扇区之间的相互映射都
需要借助于该表。 磁盘 BIOS 参数表存放于每个格式化磁盘的起始即磁盘引导扇区, 对于
软盘为第一扇区, 对于硬盘为分区第一扇区, 从第 12 字节开始。
下表为典型的 FAT32 引导扇区 BIOS 参数表(FAT16 包括 FAT12):
偏移 长 典型数值 适用 名称 描述
0X0B 2 0002     每扇区字节数 硬件扇区的大小。有效值为512、1024、2048和4096,
一般为512
0X0D 1 08     每簇扇区数 数据区每个簇的扇区数。操作系统只能访问有限的簇数,通
过对每簇扇区数的修改访问容量叫大的卷。每卷簇扇区数取决于卷容量,其有效值在1至128
间(2的整幂数。Windows2000限制FAT32分区最大限度为32GB,但可访问其他操作系统如
Windows95OSR2建立的更大分区。
0XOE 2 2000     保留扇区数 包括引导扇区内的从卷开始到第一个FAT的扇区数。典型
的FAT32保留扇区数为32,FAT为1。
OX10 1 02     FAT数目 卷的FAT拷贝数目,为2
OX11 2 0000 FAT16 根目录入口数 根目录存储的32字节文件和目录名入口个数。硬盘
一般为512,其中的一个为卷标。FAT32中此值为0
OX13 2 0000 FAT16 (小)扇区数 卷扇区数为16(<65536)时。否则为0,扇区数在
扇区数中定义FAT32中此值为0
OX15 1 F8     介质描述符 硬盘为OXF8,高密度3.5英寸软盘为OXF0。Windows2000已不
用。
OX16 2 0000 FAT16 每个FAT扇区数 每个FAT扇区数,卷中每个FAT占据的扇区数。操
作系统使用隐含扇区数,保留扇区数和本参数。计算根目录起始地址,并根据根目录入口地
址数计算数据区起始地址。FAT32为0。
OX18 2 3F00     每磁道扇区数 磁盘每道物理扇区数。INT13H访问磁盘用的参数,在多
磁头和柱面卷中折算到磁道中。
OX1A 2 FF00     磁头数 磁盘每道磁头数。例如3.5英寸1.44MB软盘的磁头数为2
OX1C 4 EE39D700     隐含扇区数 卷引导扇区前的扇区数。用于在引导过程中计算根目
录和数据区的绝对地址,此值一般仅相关于INT13H可访问的介质,在非分区介质中必须为
0。
OX20 4 7F324E00     (大)扇区数 如果(小)扇区数为0,在此表明卷扇区总数。如
果(小)扇区数非0,则此参数为0。
OX24 8 83130000 FAT32 每个FAT扇区数 FAT32卷中每个FAT占据的扇区数。操作系统
使用隐含扇区数,保留扇区数和本参数,计算根目录起始地址,并根据根目录入口数计算数
据区起始地址
OX28 2 0000 FAT32 扩展标志 两字节结构包括:0..3位:活动FAT数目(从0开始,
不是1),仅在无镜像有效4..6位:保留7位:0代表FAT在任何时刻镜像至所有的FAT,1代表
仅有一个活动的FAT(关联于0..3位)8..15位:保留
0X2A 2 0000 FAT32 文件系统版本 高字节为主版本号,低字节为辅版本号。用于将来
FAT32升级时区分版本,如果此值非0,低版本Windows不妨问卷
OX2C 4 02000000 FAT32 根目录簇号 根目录的首簇号,一般为2,但有可能不是
0X30 2 0100 FAT32 文件系统信息扇区号 在FAT32保留扇区中存放文件系统信息结构
的扇区号。典型的值为1。引导扇区的文件系统信息结构备份于该扇区,但不保持刷新
0X34 2 0600 FAT32 引导扇区备份 非0值表示引导扇区备份在隐含扇区的位置,典型
值为6,不推崇其他值
OX40 1 80     物理驱动器号 描述BIOS物理磁盘编号。软盘为0X00,硬盘为80,一般
BIOS INT13H调用磁盘时用。此值只对可启动设备有效。
OX41 1 00     保留 此值为0
0X42 1 29     扩展标志 扩展引导标志必须为0X28或OX29
0X43 4 A88B3652     卷序列号 格式化磁盘时随机随机生成的序列号,用于帮助分区磁

0X47 11 NO NAME     卷标 曾经使用,卷标现以特殊入口方式存于根目录
OX52 8 FAT32     文件系统类型 FAT16或FAT32文字域

原始的磁盘基数表(现操作系统已放弃)
磁盘基数表存放磁盘进行 I/O 操作时用于控制硬件的基本参数, 位于引导扇区的 21h 字
节。表中每项对应一个字节。
偏移 含义
21 高 4 位为步进速率, 低 4 位磁头卸载时间
22 马达等待时间(延迟关闭)
23 每扇区字节数(0-128,1-256,2-512,3-1024 等)
24 每道扇区数
25 扇区间间隔字节数
26 每扇区字节数(当24为0时)
27 格式化操作对扇区间隔的填充字节
28 格式化操作对扇区数据区的填充字节
29 寻道后磁头稳定时间
2A 执行命令的最长等待时间
2B    
1. FAT表的大小及位置
  FAT在磁盘上是安排在紧接DOS引导扇区DBR之后的,在FAT16中,它总是从磁盘的逻辑1
扇区开始。
  在磁盘上共有FAT表的两个拷贝(一个是基本FAT表FAT1,另一个是FAT表的备份
FAT2),两者在磁盘上前后紧排在一起,其大小根据分区的大小不同而变化。FAT表之后紧
接着是根目录,根目录之后是数据区。在硬盘中,FAT16的文件分配表仍然是存放在逻辑1扇
区开始的若干个扇区内,一个文件分配表占用多少个扇区根据硬盘分区和逻辑盘的容量大小
情况的不同而不同。
2. 文件的簇号链
  磁盘格式划后,用户文件是以簇为单位存放在数据区中的,一个文件至少占用一个簇,
当一个文件占用多个簇时,这些簇的簇号是不一定连续的,但这些簇号之间有由存储该文件
时确定了的顺序,即每个文件都有其特定的簇号链。
  在磁盘上的每一个可用的簇在FAT中就只有一个登记项,通过在对应簇号的登记项内填
入表项值来表明数据区中的该簇是以占用,空闲或是已损坏的。损坏的簇是在格式化的过程
中,通过FORMAT命令发现的,在一个簇中,只要有一个扇区有问题,该簇就不能使用了。磁
盘上的簇在FAT中的表项占12,16或32位。在FAT16文件系统中,每簇在FAT中所取表项值是
占12位还是16位与所用磁盘的容量有关,12位表项值可表示4096个簇,若磁盘的簇数大于
4096,则必须用16位表项值。一般来说,软盘和小于20740个扇区的硬盘DOS分区用12位映射
一个簇,如多于20740个扇区的硬盘分区,则采用16位的FAT。
五,文件目录表
  每张经过格式化的,并且装文件的磁盘,包括360K,1.2M及各种规格的硬盘,都在磁盘
中建立了一张文件目录表,记录着整个磁盘上所有文件的有用信息,所以我们了解它的结构
很有好处。在文件目录表中,每个文件占32个字节(用PC-TOOLS或DEBUB读出时占两行),
各个字节的含义是这样的:
0-7 字节:文件名,共8个字节,不足8个的用29填满,其中第一个字节为00时,表示此项未
用,为E5时表示此项已经删除。
8-10 字节:扩展名,占3个字节,无扩展名或不足3个的用20填充。
11 字节,表示文件属性。具体含义是:20为归档文件,01为只读文件,不能对其进行修改
和删除。02为隐含,不能为用DIR命令进行查找,04为系统文件,也不能用DIR命令进行查
找。10表示此项为子目录,而不是文件。28表示此项为磁盘的卷标,即磁盘的名字,不是文
件。
12-21 共10个字节为保留字段,没有使用。
22-23 为建立文件的时间。
24-25 为建立文件的日期。
26-27 为文件占用的第一个簇号,即起始簇。
28-31 共4个字节为此文件的长度。
  不同的磁盘目录表在磁盘中的位置和长度也不相同,360K磁盘目录表在磁盘的相对5号
扇区到11号扇区共7个扇区;1.2M磁盘在相对15号扇区到28号扇区共14个扇区而30M硬盘在相
对123号扇区到154号扇区用DEBUG或PCTOOLS工具软件。例如用DEBUG调出A盘中1.2M磁盘目录
表:

  用PCTOOLS(5.0)读写更加方便。运行后,按F3进入磁盘服务状态,再按E进入编辑磁
盘功能,选择A盘,按F2后再按R进入选择目录区,此时磁盘的目录表到后按F3进入全屏幕编
辑状态,修改完毕,按F5再按U存盘。
掌握了目录表的结构和修改方法,我们可以利用它来做一些工作,下面仅举几例。修改目录
项的文件名部分,可以在文件名中间出现空格和小写字母。如果用此方法修改的是文件名,
则此文件在DOS下不能正常调用,如果修改的是子目录名,则此子目录也不能正常的进入,
因为文件名和子目录名中是不能出现空格的,空格作为命令的分隔符。这就达到了保密的效
果,自己用时,只需再将名字改为正常的名字即可。如果用此方法修改硬盘的卷标项为一些
小写字母,那么可以防止硬盘被误格式化,因为硬盘格式化时必须输入卷标名,而在一般情
况下卷标是不能输入小写字母的。真要进行格式化时,再把卷标改为正常即可。如果误删了
文件,而磁盘又没进行其它写操作,在没有其它软件恢复时,可以修改目录表此项的第一个
字节,把E5改为其它,就可以恢复误删文件(此方法并不是恢复文件的最好方法,对于
ASCII文件较好,而一些可执行文件易出错)。
  另外可以修改属性位,如果把某些文件修改成隐含的或只读的,可以防止他人删除和修
改,并且可以防止病毒感染。在加密子目录时,为了防止PCTOOLS的查找,可以把子目录的
长度项改为无穷大后即最后一项改为FF。其它项如时间、日期等,都可以按照自己的需要进
行修改。
六,分区表
  分区表决定磁盘操作系统的基本设置, 包括分区类型和位置。每个分区表长16 字节,
从主引导记录的 0x01BE(446) 开始。不满 4 个分区时剩下的填 0。
  一个硬盘至多只能有4个分区, 常见的多个逻辑卷在逻辑上是一个分区(扩展分区), 严
格意义上讲逻辑卷不是分区。此即卷和分区的区别。卷为引导扇区 +数据区的一个逻辑概
念, 访问时为字母冒号, 一个分区可能包含一个或多个卷。
Windows 2000 中只有基本磁盘使用分区表。动态磁盘使用磁盘尾部的 DiskManagement 数
据库决定磁盘结构信息。升级到动态磁盘后分区表不更改, 建立新动态卷后也不更改。
  分区表最大能访问 32 位扇区数硬盘。每扇区字节为 512(9 位), 因此最大能访问的硬
盘为 41 位(2 TB)。
扩展分区的逻辑卷分区表至多列两个记录。一般地, 硬盘第一个分区即主引导记录分区表
中, 第一个分区为基本分区(PRI DOS), 可增加扩展分区(EXT DOS),扩展分区包含其后面全
部各个分区即逻辑卷。
  每个扩展分区表的第一个入口指定其引导扇区, 第二个入口指定下一个逻辑卷。扩展分
区表中只包括两个入口, 第三个和第四个不使用。第二个入口为0时表示没有扩展分区的逻
辑卷结束。
  分区表内(包括主分区表和扩展分区表)各分区前后次序无关, 也可以将分区表放置到最
后一个记录, 前面全空; 各个分区的空间如果有重叠部分, 操作系统不进行判断; 操作系统
在主分区表中只识别第一个扩展分区, 在逻辑分区表中只识别一个逻辑卷。
一般地, 硬盘分区的划分均以磁道为单位, 不会跨磁道划分。每个分区均从某磁道的起始磁
头起始扇区开始, 至结束磁道的结束磁头结束扇区结束; 一般地,分区隐含扇区数为硬盘扇
区数; 因此分区起始磁头号为 1, 起始扇区号为 1, 结束磁头号为硬盘磁头数减 1, 结束扇
区号为扇区数(磁头号由 0 开始, 扇区数由1 开始), 实际的起始磁头数为 0(即分区表地
址)。
  分区表中第一个分区的起始扇区为相对本分区分区表的偏移量, 一般为磁盘扇区数, 即
前文所述, 由第二个磁头(1 号)开始; 第二个分区的起始扇区为相对地址偏移量, 对于第一
个分区表(即 0 磁头 0 磁道 1 扇区主引导记录扇区)为相对主引导记录的偏移量, 同绝对
地址相同, 其余的分区表中为相对扩展分区分区表即第二个分区起始地址的偏移量。
分区表中常用系统标志的定义:
系统标志 说明
0x01 FAT12基本分区或逻辑驱动器(卷中小于32,680扇区)
0x04 FAT16分区或逻辑驱动器(32,680-65,535扇区或16MB-33MB
0x05 扩展分区
0x06 BIGDOS FAT16 分区或逻辑驱动器(33MB-4GB)
0x07 安装文件系统(NTFS分区或逻辑驱动器)
0x0B FAT32 分区或逻辑驱动器
0x0C FAT32 分区或逻辑驱动器使用 BIOS INT 13h 扩展
0x0E BIGDOS FAT16 分区或逻辑驱动器使用 BIOS INT 13h 扩展
0x0F 扩展分区使用 BIOS INT 13h 扩展
0x12 EISA 分区
0x42 动态盘卷
(Windows NT 4.0 或更早版本建立一个镜像或 RAID-5 卷时, 分区类型的高位置1)
分区表中常用系统标志的说明:
标志 FAT 基本 扩展 逻辑 NIT13EXT 支持容量 操作系统
X01 FAT12 y     y     16M OS2.0以上win95及NT
X04 FAT16 y     y     16M-32M OS3.0以上win95及NT
X05        y        2T OS3.3以上win95及NT
X06 FAT16 y     y     32M-2G OS4.0以上win95及NT
X07 NTFS y     y     2T WindowsNT
X0b FAT32 y     y     512M-2T Windows95(OSR2)
X0c FAT32 y     y y 512M-2T Windows95(OSR2)
X0e FAT16 y     y y 32M-2G Windows95
X0f        y     y 2T Windows95
其他系统标志的定义:
代码 00 01 02 03 04 05 06 07 08
意义 无用 DOS-12 XENIX XENIX DOS-16 EXTEND BIGDOS HPFS SPLIT
代码 0A 50 51 53 56 61 63 64 65 75    
意义 BTMGR DM DM DM GB SpeeD 386/ix NET286 NET386 PCIX
代码 DB E1 E3 E4 F1 F4 FF 其余为?
意义 CM/M Speed Speed Speed Speed Speed bbt
MS-DOS 只能访问系统标志为 0x01, 0x04, 0x05 或 0x06 的分区, 但可以用Fdisk 程序显
示和删除任何类型的分区。使用 DISK 程序可访问任意分区的任何扇区, 例如 NTFS 分区。
七,引导扇区
位于每个卷首的引导扇区是计算机启动的关键磁盘结构。引导扇区包含执行代码和代码所需
的数据信息, 包括文件系统信息。格式化卷时生成引导扇区。引导扇区的结束两字节为引导
标记 0x55AA。
引导扇区由以下部分组成:
一个基于x86的CPU跳转指令
* 厂商标记(OEM ID)
* 一个数据结构, BIOS参数区(BPB)
* 扩展BIOS参数区(扩展BPB)
* 启动操作系统的执行代码
* FAT12、FAT16、FAT32 和 NTFS 引导扇区各自包含不同的格式。
* BIOS 参数区描述卷的物理参数; 扩展 BPB 紧挨着 BPB。FAT12、FAT16、FAT32 和 NTFS
引导扇区各自包含不同的 BIOS 参数区。
* BPB 和扩展 BPB 用于磁盘设备驱动读取和配置卷。扩展 BPB 后时启动执行
* 代码, 启动执行代码按下步骤启动:
* 系统BIOS和CPU加电自检
* BIOS搜索引导设备(如一个磁盘)
* BIOS加载引导设备第一个物理扇区内容到内存, 向 CUP 传输内存地址以解释执行
如果启动设备是一个硬盘, BIOS 加载主引导记录, 主引导记录中的主引导代码执行活动分
区引导扇区的执行代码。
如果 A 驱动器中有软盘, 系统 BIOS 加载软盘的第一个扇区(引导扇区)进内存。如果软盘
可启动, 引导扇区用执行代码加载 MS-DOS 操作系统文件 IO.SYS进内存供CPU执行, 如果软
盘不可启动, 执行代码显示:
Non-System disk or disk error
Replace and press any key when ready
当然此提示一般在 C 盘先启的机器中不会出现。现在一般计算机的 CMOS 设置程序均允许
设置启动顺序。如果硬盘启动是显示类似的信息, 可能是引导扇区已损坏。
启动过程起初独立于磁盘格式和操作系统, 引导扇区执行代码执行后文件系统才加载并成为
关键的特征值。
引导扇区组成:
主引导记录执行引导扇区的CPU指令, 因此引导扇区的头 3 个字节必须是可执行的基于
x86 的 CPU 指令, 这是一个跳转指令, 跳过下面不可执行的 BIOS参数区域(BPB)。
跳转指令后是 8 字节的 OEM ID, 标志卷格式化操作系统的名称和版本。Windows
95/98/2000 的 OEM ID 为 "MSDOS5.0", Windows 95 OSR2 和 Windows98 有时
为 "MSWIN4.0" 和 "MSWIN4.1"。OEM ID 后是 BIOS 参数区(BPB)。BPB 的起始位置固定。
当 BPB 格式变化加上新的内容而长度变化时, 对 x6 跳转指令做相应修改即可。

 

(文章推荐人:老W)

 

FAT32 文件系统简介

Windows95 OSR2和Windows 98开始支持FAT32 文件系统,它是对早期DOS的FAT16文件系统的增强,由于文件系统的核心--文件分配表FAT由16位扩充为32位,所以称为FAT32文件系统。在一逻辑盘(硬盘的一分区)超过 512 兆字节时使用这种格式,会更高效地存储数据,减少硬盘空间的浪费,一般还会使程序运行加快,使用的计算机系统资源更少,因此是使用大容量硬盘存储文件的极有效的系统。本人对Windows 98下的FAT32 文件系统做了分析实验,总体上与FAT16文件系统变化不大,现将有关变化部分简介如下:

  (一)FAT32 文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件分配表区(FAT区)、数据区(DATA区)。引导区和文件分配表区又合称为系统区。

  (二)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录。之后还留有若干保留扇区。而FAT16文件系统的引导区只占用一个扇区,没有保留扇区。

  (三)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的,FAT如此重要,保存两个以便第一个损坏时,还有第二个可用。文件系统对数据区的存储空间是按簇进行划分和管理的,簇是空间分配和回收的基本单位,即,一个文件总是占用若干个整簇,文件所使用的最后一簇剩余的空间就不再使用,而是浪费掉了。
  从统计学上讲,平均每个文件浪费0.5簇的空间,簇越大,存储文件时空间浪费越多,利用率越低。因此,簇的大小决定了该盘数据区的利用率。FAT16系统簇号用16位二进制数表示,从0002H到FFEFH个可用簇号(FFF0H到FFFFH另有定义,用来表示坏簇,文件结束簇等),允许每一逻辑盘的数据区最多不超过FFEDH(65518)个簇。FAT32系统簇号改用32位二进制数表示,大致从00000002H到FFFFFEFFH个可用簇号。FAT表按顺序依次记录了该盘各簇的使用情况,是一种位示图法。
  每簇的使用情况用32位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入特定值;已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为FFFFFF0FH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT表中。0000000H、00000001H两簇号不使用,其对应的两个DWORD位置(FAT表开头的8个字节)用来存放该盘介质类型编号。FAT表的大小就由该逻辑盘数据区共有多少簇所决定,取整数个扇区。

  (四)FAT32系统一簇对应8个逻辑相邻的扇区,理论上,这种用法所能管理的逻辑盘容量上限为16TB(16384GB),容量大于16TB时,可以用一簇对应16个扇区,依此类推。FAT16系统在逻辑盘容量介于128MB到256MB时,一簇对应8个扇区,容量介于256MB到512MB时,一簇对应16个扇区,容量介于512MB到1GB时,一簇对应32个扇区,容量介于1GB到2GB时,一簇对应32个扇区,超出2GB的部分无法使用。显然,对于容量大于512MB的逻辑盘,采用FAT32的簇比采用FAT16的簇小很多,大大减少了空间的浪费。
  但是,对于容量小于512MB的盘,采用FAT32虽然一簇8个扇区,比使用FAT16一簇16个扇区,簇有所减小,但FAT32的FAT表较大,占用空间较多,总数据区被减少,两者相抵,实际并不能增加有效存储空间,所以微软建议对小于512M的逻辑盘不使用FAT32。
  另外,对于使用FAT16文件系统的用户提一建议,硬盘分区时,不要将分区(逻辑盘)容量正好设为某一区间的下限,例:将一逻辑盘容量设为1100M(稍大于1024M),则使用时其有效存储容量比分区为950M的一般还少,因其簇大一倍,浪费的空间较多。还有,使用FDISK等对分区指定容量时,由于对1MB的定义不一样(标准的二进制的1MB为1048576B,有的系统将1MB理解为1000000B,1000KB等),及每个分区需从新磁道开始等因素,实际分配的容量可能稍大于指定的容量,亦需注意掌握。

  (五)根目录区(ROOT区)不再是固定区域、固定大小,可看作是数据区的一部分。因为根目录已改为根目录文件,采用与子目录文件相同的管理方式,一般情况下从第二簇开始使用,大小视需要增加,因此根目录下的文件数目不再受最多512的限制。FAT16文件系统的根目录区(ROOT区)是固定区域、固定大小的,是从FAT区之后紧接着的32个扇区,最多保存512个目录项,作为系统区的一部分。

  (六)目录区中的目录项变化较多,一个目录项仍占32字节,可以是文件目录项、子目录项、卷标项(仅跟目录有)、已删除目录项、长文件名目录项等。目录项中原来在DOS下保留未用的10个字节都有了新的定义,全部32字节的定义如下:
(1) 0-- 7字节 文件正名。
(2) 8--10字节 文件扩展名。
(3) 11字节 文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。
(4) 11--13字节 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。
(5) 13--15字节 24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟。
(6) 16--17字节 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。
(7) 18--19字节 16位二进制的文件最新访问日期,定义同(6)。
(8) 20--21字节 起始簇号的高16位。
(9) 22--23字节 16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数。
(10)24--25字节 16位二进制的文件最新修改日期,定义同(6)。
(11)26--27字节 起始簇号的低16位。
(12)28--31字节 32位的文件字节长度。

  其中第(4)至(8)项为以后陆续定义的。 对于子目录项,其(12)为零;已删除目录项的首字节值为E5H。在可以使用长文件名的FAT32系统中,文件目录项保存该文件的短文件名,长文件名用若干个长文件名目录项保存,长文件名目录项倒序排在文件短目录项前面,全部是采用双字节内码保存的,每一项最多保存十三个字符内码,首字节指明是长文件名的第几项,11字节一般为0FH,12字节指明类型,13字节为校验和,26--27字节为零。

  (七)以前版本的 Windows 和DOS与 FAT32 不兼容,不能识别FAT32分区,有些程序也依赖于 FAT16 文件系统,不能和 FAT32 驱动器一道工作。将硬盘转换为 FAT32,就不能再用双引导运行以前版本的 Windows(Windows 95 [Version 4.00.950]、Windows NT 3.x、Windows NT 4.0 和 Windows 3.x)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值