FAT文件系统的组织结构(zt)(午夜听风)

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保留扇区中存放文件系统信息结构

你可能感兴趣的:(文件系统)