文件系统结构分析

合集下载

文件系统简要

文件系统简要

一.物理磁盘结构:1.磁道:当磁盘的盘面旋转时。

磁头保持在一个位置上。

当盘面旋转一圈时。

划过的一个圆就为磁道。

一条磁道的储存量:一磁道= 63个扇区。

(通常情况)。

2.扇区:磁道上被逻辑划分弧段相等的就为扇区,它的编号从1开始,一扇区大小为512个字节。

3.柱面:由一组重叠的盘面组成,每个盘面上都划分为相等的磁道,并从0 开始编号。

具有相同编号组成的一个圆柱为柱面,柱面数=于一个盘面上的磁道数,对于每个盘面都有自己的磁头所以有CHS :(Clinder(柱面) Head(磁头)Sector(扇区)),这就是一个寻址方式。

物理磁盘结构图以下引用的函数均在WIN32下二.分区表1.主引导扇区(MBR)分区表的基本信息放在主引导扇区,主引导扇区的地址CHS=柱面0 , 磁头0, 扇区1.其大小为一扇区大小512个字节。

这里我把这512个字节总结为下得一个结构体:#pragma pack(1)typedef struct InFoDisk{UCHAR BootID; //80h表示可启动分区,否则为0;对主分区有用;UCHAR SartHead ; //分区的起始磁头号;USHORT SartSectorTrack ;//分区的起始扇区和磁道号UCHAR FileSystemID; //05H或0FH为扩展分区,06H或0EH为FA T16,0BH或0CH为FA T32 ,07为NTFS;UCHAR EndHead; //分区结束磁头号;USHORT EndSectorTrack; // 分区结束扇区和磁道号ULONG HeadSecor; //分区前的扇区;ULONG AllSector; //分区的总扇区;}InFoDisk,*PInFoDisk;/*位于磁盘的0磁头0拄面1扇区;*/#pragma pack(1)typedef struct _System_Boot_Sector{UCHAR BootCode[0x1be]; //引导代码;InFoDisk InFoC; //C分区的基本信息;InFoDisk InFoD; //D分区的基本信息InFoDisk InFoE; //E分区的基本信息一般不用为0;InFoDisk InFoF; //E分区的基本信息一般不用为0;USHORT LoGo; //"AA55";}System_Boot_Sector,*PSystem_Boot_Sector;从结构体可以看出偏移0x1be个字节就得到分区表的基本信息,在WINDOWS编程下这么找到:DWORD cbRead;System_Boot_Sector BootSectorData;HANDLE hFile=CreateFile("\\\\.\\PhysicalDrive0", GENERIC_WRITE|GENERIC_READ,FILE_SHARE_WRITE|1, 0, OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN, 0);ReadFile(hFile, & BootSectorData,0x200 , &cbRead, NULL);//读的主引导扇区的数据。

了解计算机文件系统NTFSFAT和HFS的区别

了解计算机文件系统NTFSFAT和HFS的区别

了解计算机文件系统NTFSFAT和HFS的区别计算机文件系统是操作系统用来组织和管理计算机存储设备上的文件和目录的一种机制。

在不同的操作系统中,常见的文件系统有NTFS、FAT和HFS。

本文将就NTFS、FAT和HFS三种文件系统进行比较,以帮助大家更好地了解它们之间的区别。

一、NTFSNTFS(New Technology File System)是微软公司开发的一种高性能、可靠性和安全性较强的文件系统。

NTFS首次被引入Windows NT操作系统,并一直沿用至今。

1.1 文件系统结构NTFS采用了一种分层次的文件系统结构。

它包含了主引导记录(MBR)、分区表、文件记录、文件分配表等重要的组成部分。

而数据存储则是通过将文件分割成不同的簇来管理。

1.2 特点和功能NTFS具有许多先进的特点和功能,例如:- 安全性:NTFS支持访问控制列表(ACL)和文件加密,可以对文件和目录进行更细粒度的权限控制。

- 可靠性:NTFS采用了日志和冗余技术,使得文件系统更加稳定和可靠。

- 容量:NTFS最大支持16EB(1EB=1024PB)的存储容量,能够满足大容量存储的需求。

- 文件压缩和加密:NTFS支持文件压缩和加密,可以提高存储效率并保护敏感数据的安全性。

二、FATFAT(File Allocation Table)是一种较早的文件系统,最初是由微软开发的。

FAT文件系统广泛应用于早期的Windows操作系统和一些移动存储设备中。

2.1 文件系统结构FAT文件系统采用了一种比较简单的存储结构,它通过FAT表来管理文件和目录。

FAT表是一个记录簇号和下一个簇号之间对应关系的查找表。

2.2 特点和功能FAT文件系统具有以下特点和功能:- 简单易用:FAT文件系统结构简单,易于实现和维护。

- 兼容性好:FAT文件系统具有较好的兼容性,可以在不同操作系统之间进行文件共享和传输。

- 存储限制:FAT文件系统的文件大小限制为4GB,对于大容量存储设备来说可能不够满足需求。

Ext4文件系统架构分析(一)

Ext4文件系统架构分析(一)

Ext4⽂件系统架构分析(⼀)本⽂描述Ext4⽂件系统磁盘布局和元数据的⼀些分析,同样适⽤于Ext3和Ext2⽂件系统,除了它们不⽀持的Ext4的特性外。

整个分析分两篇博⽂,分别概述布局和详细介绍各个布局的数据结构及组织寻址⽅式等。

感兴趣的看官敬请留意和指导!1. Ext4⽂件系统布局综述⼀个Ext4⽂件系统被分成⼀系列块组。

为减少磁盘碎⽚产⽣的性能瓶颈,块分配器尽量保持每个⽂件的数据块都在同⼀个块组中,从⽽减少寻道时间。

以4KB的数据块为例,⼀个块组可以包含32768个数据块,也就是128MB。

1.1 磁盘布局Ext4⽂件系统的标准磁盘布局如下:Ext4⽂件系统主要使⽤块组0中的超级块和块组描述符表,在其他⼀些特定块组中有超级块和块组描述符表的冗余备份。

如果块组中不含冗余备份,那么块组就以数据块位图开始。

当格式化磁盘成为Ext4⽂件系统的时候,mkfs将在块组描述符表后⾯分配预留GDT表数据块(“Reserve GDT blocks”)以⽤于将来扩展⽂件系统。

紧接在预留GDT表数据块后的是数据块位图与inode表位图,这两个位图分别表⽰本块组内的数据块与inode表的使⽤,inode表数据块之后就是存储⽂件的数据块了。

在这些各种各样的块中,超级块、GDT、块位图、Inode位图都是整个⽂件系统的元数据,当然inode表也是⽂件系统的元数据,但是inode表是与⽂件⼀⼀对应的,我更倾向于将inode当做⽂件的元数据,因为在实际格式化⽂件系统的时候,除了已经使⽤的⼗来个外,其他inode表中实际上是没有任何数据的,直到创建了相应的⽂件才会分配inode表,⽂件系统才会在inode表中写⼊与⽂件相关的inode信息。

1.2 Flexible 块组(flex_bg)Flexible 块组(flex_bg)是从Ext4开始引⼊的新特性。

在⼀个flex_bg中,⼏个块组在⼀起组成⼀个逻辑块组flex_bg。

请简述 linux 中的文件系统层次结构

请简述 linux 中的文件系统层次结构

请简述 linux 中的文件系统层次结构
Linux系统的文件系统层次结构是非常复杂的,通常可以分成如下几个层次:
1. 根目录:根目录是 Linux 文件系统中最顶层的根目录,它可以看做是 Linux 系统整个文件系统的根,其它所有的子目录都在它之下,一般用 '/' 表示。

2. 二级目录:包括 '/etc'、'/usr'、'/bin'、'/sbin'、'/lib' 等,这些目录又可以看做是四级目录的父目录,下面可以放置用户自定义的文件和文件夹。

3. 四级目录:这里可以放置用户自定义的应用程序,一般都是以某个子目录名开头,比如 '/usr/local','/usr/bin'、'/usr/sbin'等。

4. 程序文件:可以放置各种程序文件,包括可执行文件、库文件、配置文件等。

5. 日志文件:记录系统的运行日志,以及用户行为日志,用于排查故障。

6. 数据文件:用户可以将各种数据文件存放在用户指定的目录下。

总之,Linux系统的文件系统层次结构比较复杂,它们可以根据用户需求和功能进行多层次的划分,以满足用户的不同需求。

Linux文件系统结构分析

Linux文件系统结构分析
下 内容 : 文 件 所 有 者 标 识 号 : 拥 有 该 文 件 的 文 件 主 或 同组 的 标 识 符 。 指
区大小 。
E T2文 件 系 统 用 一 个 io e 据 结 构 描 述 系 统 中 的 每 一 个 文 件 , 义 系 统 的 拓 扑 结 构 。 一 个 io e X nd 数 定 n d 描 述 了一 个 文 件 中 的 数 据 占用 了 哪 些 块 以 及 文 件 的 访 问 权 限 、 件 的 修 改 时 间 和 文 件 的 类 型 。 E T2文 文 X 件 系 统 中 的 每 一 个 文 件 都 用 一 个 io e描 述 , 每 一 个 io e都 用 一 个 独 一 无 二 的 数 字 标 识 。 文 件 系 统 的 nd 而 nd

பைடு நூலகம்
潍 坊 学 院 学报
21 0 1年 4月
E T X 2块组 中组 描述符 中的项称为 组 描述 符 , 于描 述某 个 块 组 的整 体 信 息 。每 个块 组 都 有 一个 相 用
应 的组 描 述 符 来 描 述 它 , 有 的 组 描 述 符 形 成 一 个 组 描 述 符 表 , 在 使 用 时 被 调 入 块 高 速 缓 存 。 所 并
2 EXT2索 引 结 点
E T2文件 系统 中的 数 据 是 以数 据块 的 方 式 存储 在 文 件 中 的 。这 些 数 据 块 的 大 小 相 同 , 大 小 在 X 其 E T2 建 时设 定 。磁盘 上存 储 : 的 基本单 位 是簇 。一 个 簇也 称 为一 个 磁 盘块 , X 创 件 它通 常 是 2 n个 磁盘 扇
io e 放在 一起 , io e 引表 中。 nd 都 在 nd 索
* 收 稿 日 期 : o 0 1 2 2 1— 2 6

详解NTFS文件系统

详解NTFS文件系统

详解NTFS⽂件系统⼀、分析NTFS⽂件系统的结构当⽤户将硬盘的⼀个分区格式化为NTFS分区时,就建⽴了⼀个NTFS⽂件系统。

NTFS⽂件系统同FAT32⽂件系统⼀样,也是⽤“簇”为存储单位,⼀个⽂件总是占⽤⼀个或多个簇。

NTFS⽂件系统使⽤逻辑簇号(LCN)和虚拟簇号(VCN)对分区进⾏管理。

逻辑簇号:既对分区内的第⼀个簇到最后⼀个簇进⾏编号,NTFS使⽤逻辑簇号对簇进⾏定位。

虚拟簇号:既将⽂件所占⽤的簇从开头到尾进⾏编号的,虚拟簇号不要求在物理上是连续的。

NTFS⽂件系统⼀共由16个“元⽂件”构成,它们是在分区格式化时写⼊到硬盘的隐藏⽂件(以”$”开头),也是NTFS⽂件系统的系统信息。

NTFS的16个元⽂件介绍:⾸先找到该分区的起始扇区,具体可以参考这篇⽂章。

⼆、分析$Boot⽂件$Boot元⽂件由分区的第⼀个扇区(既DBR)和后⾯的15个扇区(既NTLDR区域)组成,其中DBR由“跳转指令”、“OEM代号”、“BPB”、“引导程序”和“结束标志”组成,这⾥和FAT32⽂件系统的DBR⼀样。

下图是⼀个NTFS⽂件系统完整的DBR。

下⾯我们分析⼀下DBR中的各参数EB 58 90:(跳转指令)本⾝占2字节它将程序执⾏流程跳转到引导程序处。

“EB 58 90″清楚地指明了OS引导代码的偏移位置。

jump 52H加上跳转指令所需的位移量,即开始于0×55。

4E 54 46 53 20 20 20 20:(OEM代号)这部分占8字节,其内容由创建该⽂件系统的OEM⼚商具体安排。

为“NTFS”。

BPB:NTFS⽂件系统的BPB从DBR的第12个字节开始,占⽤73字节,记录了有关该⽂件系统的重要信息,下表中的内容包含了“跳转指令”、“OEM代号”以及“BPB”的参数。

对照上⾯的BPB分析如下:02 00:每个扇区512个字节08:每个簇8个扇区00 00:保留扇区为000 00 00:为000:不使⽤F8:为硬盘00 00:为000 3F:每磁道63个扇区00 FF:每柱⾯255个磁头00 00 00 3F:隐藏扇区数(MBR到DBR)00 00 00 00:不使⽤80 00 80 00:不使⽤00 00 00 00 0C 80 33 FF:扇区总数20972851100 00 00 00 00 00 00 03:$MFT的开始簇号00 00 00 00 00 85 57 80:$MFTmirr的开始簇号00 00 00 F6:每个MFT记录的簇数00 00 00 01:每索引的簇数B8 11 2A 0C B8 11 2A 0C:分区的逻辑序列号引导程序:DBR的引导程序占⽤426字节,其负责完成将系统⽂件NTLDR装⼊,对于没有安装系统的分区是⽆效的。

文件系统:探讨文件系统的基本原理、结构和实现

文件系统:探讨文件系统的基本原理、结构和实现

文件系统:探讨文件系统的基本原理、结构和实现作为我们日常计算机使用的一部分,文件系统是一项非常重要的技术。

它提供了存储和管理文件的功能,是操作系统的核心组成部分。

在本文中,我们将深入探讨文件系统的基本原理、结构和实现方法。

导言在我们使用计算机时,我们经常会处理各种类型的文件,如文档、图片、音频和视频。

这些文件在计算机中存储和组织的方式由文件系统决定。

文件系统是一种管理存储介质上数据的方法,它为我们提供了对文件的读取、写入和管理功能。

文件系统的基本原理文件系统的基本原理是将存储介质划分为固定大小的块,并管理这些块的分配和使用。

它将文件存储为连续的块或散布在存储介质的不同位置。

文件系统还包括对文件的命名、目录结构、权限管理和文件元数据的管理。

存储块和磁盘的使用文件系统使用存储块作为最小单位来管理数据的存储和访问。

存储介质(如硬盘)被划分成固定大小的存储块,通常为4KB或8KB。

文件数据存储在这些块中,并按照一定的方式分配和组织。

连续分配和链接分配文件系统可以使用连续分配或链接分配来组织文件的存储空间。

在连续分配中,文件被存储在存储介质上连续的块中。

这样可以提高文件的读取和写入性能,但会导致碎片问题。

在链接分配中,文件的数据块可以散布在存储介质的不同位置,通过文件的元数据进行链接。

这样可以更有效地利用存储空间,但会导致访问性能下降。

文件的命名和目录结构文件系统使用文件名来唯一标识文件。

文件名通常由字母、数字和一些特殊字符组成。

目录结构则用于组织和管理文件。

目录是一个包含其他文件和目录的特殊文件,通过目录的嵌套结构可以形成层次化的文件组织。

这样我们就可以通过路径来访问文件,例如/usr/share/doc/example.txt。

权限管理和文件元数据文件系统通过权限管理来控制对文件的访问权限。

权限可以被分为所有者权限、组权限和其他用户权限。

文件还包含一些元数据,如文件大小、创建时间、修改时间和访问时间。

文件系统数据结构

文件系统数据结构

文件系统数据结构文件系统是计算机操作系统中用于管理计算机文件的一种机制,它使用特定的数据结构来组织和存储文件及其相关信息。

文件系统的设计和实现涉及到多种数据结构,包括目录结构、索引结构和文件分配表等。

在本文中,我们将详细介绍文件系统中常用的数据结构及其功能。

一、目录结构目录结构是文件系统中组织文件和文件夹的一种方式。

它使用树状结构来表示文件和文件夹之间的层次关系,使得用户可以方便地浏览和管理文件。

在目录结构中,每个文件夹表示为一个目录项,该目录项包含了文件夹的名称、创建时间、访问权限等信息。

而文件夹中的文件则以文件项的形式存在,文件项包含了文件的名称、大小、创建时间等属性。

目录结构的实现可以使用树结构或者图结构。

其中,树结构是最常见的一种实现方式。

在树结构中,每个目录项都可以作为树的一个节点,根节点代表根目录,每个子节点代表一个子目录或者文件。

通过遍历树的节点,用户可以逐层查找和访问文件。

二、索引结构索引结构是一种基于关键字的数据结构,用于快速定位文件的相关信息。

在文件系统中,文件的内容通常分散存储在磁盘上的不同位置,为了提高文件的访问速度,可以使用索引结构建立文件与存储位置的映射关系。

常见的索引结构包括位图索引、哈希索引和B树索引等。

位图索引用一个位图来表示文件的存储位置,每个位对应一个存储块,通过位图可以迅速定位到文件所在的位置。

哈希索引使用哈希函数将文件的关键字映射到存储位置,从而实现快速定位。

而B树索引是一种多路搜索树,用于支持范围查询和高效的插入和删除操作。

索引结构的选择依赖于文件系统的需求和性能要求。

不同的索引结构具有不同的特点和适用范围,需要根据具体情况进行选择和优化。

三、文件分配表文件分配表是文件系统中用于管理文件存储空间的一种数据结构。

它记录了文件在磁盘上分配的存储块,以及存储块之间的关系。

文件的存储块可以是连续的,也可以是离散的。

文件分配表采用表格的形式来表示文件在磁盘上的分布情况。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文件系统结构分析1嵌入式文件系统1.1嵌入式文件系统体系结构在嵌入式系统中,文件系统是嵌入式系统的一个组成模块,它是作为系统的一个可加载选项提供给用户,由用户决定是否需要加载它。

同时,它还需要满足结构紧凑、代码量小、支持多种存储设备、可伸缩、可剪裁、可移植等特点。

基于上面的要求,嵌入式文件系统在设计和实现时就要把它作为一个独立的模块来整体考虑。

特别是对文件系统内部资源的管理要做到独立性。

由于嵌入式文件系统是作为嵌入式系统的一个可选加载项提供给用户的,当用户针对其应用的特殊要求对嵌入式系统进行配置时没有选择加载文件系统,但是用户还是需要使用到系统I/O。

由于这种情况的出现就决定了嵌入式系统中的文件系统不再具有I/O设备的管理功能。

系统I/O的管理和使用接口的提供将由 I/O管理模块完成,文件系统作为一个独立的自包含模块存在。

基于以上考虑,嵌入式文件系统的体系结构如图1所示。

1卩硬件图1嵌入式文件系统体系结构在嵌入式文件系统的最上层是文件系统 API。

文件系统的一切功能都是通过这一层提供给用户的。

同时,在整个文件系统中也只有这一层对用户是可见的。

在这一层中所提供的所有功能接口都将严格的遵循 POSIX标准。

文件系统核心层是实现文件系统主要功能的模块。

在这一层中,文件系统要把用户的功能操作转化成对文件系统的抽象对象的操作。

这些操作将通过下面的功能模块最终落实到物理介质上面。

如果文件系统需要支持多种具体的文件系统格式的话,这一层还可以进一步细分成虚拟文件系统和逻辑文件系统。

块高速缓存的存在是为了提高文件系统的性能。

在这一层中缓存着以前访问过的块设备数据。

文件系统通过一定的算法来高效的管理这些数据,以提高缓冲的性能。

同时,它的存在使下层的数据操作对上层的文件操作透明,提高了文件系统的模块性。

1.2 嵌入式文件系统体系的功能与特点文件系统是操作系统的重要组成部分,用于控制对存储设备的存取。

它提供对文件和目录的分层组织形式、数据缓冲(对于实时系统,允许绕过缓冲)以及对文件存取权限的控制。

嵌入式系统所使用的文件系统除了要提供通用文件系统的功能外,还由于嵌入式操作系统的特殊性而具有其自身的一些特点。

嵌入式文件系统的设计应该满足如下目标:1.实现按名存取。

和桌面操作系统类似,用户对文件的操作是通过其“文件名”来完成的。

因此,用户只需知道待操作文件的文件名,就可以方便的访问数据,而不必关心文件在物理设备上是如何存放的,以及如何对文件的打开、关闭操作进行处理等细节。

所有与文件相关的管理工作都由文件系统组件隐式完成。

2.与实时系统相适应。

嵌入式应用大多数都具有实时性需求。

实时系统不仅要求计算结果地准确无误,而且要求特定的指令要在限定的时间内完成,这就对文件系统提出了很高的要求。

在通用操作系统中,往往采取分页和虚拟存储器管理的机制来满足规定的指令时间。

然而嵌入式实时操作系统一般都不具有虚拟存储器管理机制,且各种外部设备的性能差异较大,控制文件系统的实时性变得非常困难。

为了尽可能提高文件系统的实时性,除了选取高速存储介质作为嵌入式系统的外设外,还应该根据设备的特点设置一定大小的高速缓冲,以提高数据存取的相应速度。

3.支持多任务环境。

面对日益复杂的计算环境,应用常常采取“分而治之” 的方法,将解决方案划分为多个任务,每个任务完成相对单一的功能。

实时操作系统的设计目标之一就是对多任务的支持。

从应用的层面上看,多任务可以对文件进行并发读操作,在实时内核进程间同步与通信机制支持下进行写操作。

此外,文件系统内部实现也应该具备较好的可重入性,即利用同步机制对全局数据结构进行必要的保护。

4.支持多种逻辑文件系统标准。

随着操作系统技术的发展,出现了多种成熟的桌面文件系统标准,如 Windows下的FAT系列,Linux中的ext系列等。

将这些成熟标准引入嵌入式领域的同时,如何在各种不同标准的存储介质中互通数据,也是文件系统设计的考虑因素。

应用程序应该使用同一套系统调用操作文件,而无需考虑面对的文件系统标准和存储介质。

因此,文件系统的设计时应该引入文件操作抽象层,通过虚拟接口访问文件系统,才能使得这种协作性和通用性成为可能。

5.接口标准的开放性和可移植性。

文件系统对外提供的系统调用是应用与系统的交互接口。

为了增加接口的开放性和可移植性,嵌入式文件系统的系统调用必须符合一定的标准和规范。

可移植操作系统接口( Portable Operat ing System In terface , POSIX 是一种由IEEE指定的信息标准,它为程序员提供了一种严格定义的固定框架,以获得源码级的软件可移植性;换言之,为一个POSIX标准兼容的操作系统编写的程序,可以很容易的移植到其它 POSIX标准的操作系统上编译执行。

2 FatFs文件系统体系结构ApplicationFatFs moduleDisk I/O module RTC图2 FatFs文件系文件结统的一切功能都是通过这一层提供给用户的。

同时,在整个FatFs文件系统中也只有这一层对用户是可见的。

在这一层中所提供的所有功能接口都将遵循 POSIX标准。

文件系统核心层是实现文件系统主要功能的模块。

在这一层中,文件系统要把用户的功能操作转化成对物理介质的抽象对象的操作。

这些操作将通过下面的功能模块最终落实到物理介质上面。

如果文件系统需要支持多种具体的文件系统 格式的话,这一层还可以进一步细分成虚拟文件系统和逻辑文件系统。

DISK I/O 模块的存在是为了提高文件系统的性能,通过缓存提高数据读写 速度,文件系统通过一定的管理算法来高效的管理这些数据,以提高缓冲的性能。

而RTC 提供了整个系统时间的标尺,是实时操作系统的必要组成部分。

3 FatFs 文件系统标准3.1 FatFs 文件系统组成FatFs 源自Microsoft 所推出的WinCe 文件系统,因其具有Fat 文件系统的 高度兼容性,能广泛应用于嵌入式系统尤其是移动性要求高的设备中。

本课题 FatFs 选择FAT16系统,故拥有相同的FAT16吉构FAT16是Microsoft 较早推出的文件系统,具有高度兼容性,目前仍然广泛应 用于个人电脑尤其是移动存储设备中,FAT16简单来讲由图3所示的6部分组成 (主要是前5部分)。

图3 FatFs 的组成引导扇区DBR 区(DOS BOOT RECORD 操作系统引导记录区的意思,也称为 启动扇区。

它记录了存储卡的所有重要信息,一共512个字节,其结构如表1 所示:跳转指令JUMP区 区大小 簇 保留扇区表1引导扇片区结构引导扇区各个字段的定义和说明如表 2:FAT16在DBF之后没有留有任何保留扇区,其后紧随的便是FAT表。

FAT表是FAT16用来记录磁盘数据区簇链结构的。

FAT表实际上是一个数据表,以2个字节为单位,我们暂将这个单位称为FAT 记录项,通常情况其第1、2个记录项(前4个字节)用作介质描述。

从第三个记录项开始记录除根目录外的其他文件及文件夹的簇链情况。

根据簇的表现情况 FAT用相应的取值来描述,如表 3:表表FAT表记录了磁盘数据文件的存储链表,对于数据的读取而言是极其重要的,以至于Microsoft为其开发的FAT文件系统中的FAT表创建了一份备份,就是我们看到的FAT2 FAT2与FAT1的内容通常是即时同步的,也就是说如果通过正常的系统读写对FAT1做了更改,那么FAT2也同样被更新。

如果从这个角度来看,系统的这个功能在数据恢复时是个天灾。

FAT将磁盘空间按一定数目的扇区为单位进行划分,这样的单位称为簇。

通常情况下,每扇区512字节的原则是不变的。

簇的大小一般是2n (n为整数)个扇区的大小,像 512B,1K,2K,4K,8K,16K,32K,64K。

实际中通常不超过 32K。

分区的大小和簇的取值是有关系的,如表 4:表4分区大小和簇取值关系FAT16 DBR参数的偏移0x11处记录了根目录所占扇区的数目。

偏移 0x16记录了FAT表所占扇区的数据。

偏移0x10记录了 FAT表的副本数目。

系统在得到这几项参数以后,就可以确定数据区的开始扇区偏移了。

FAT16文件系统从根目录所占的32个扇区之后的第一个扇区开始以簇为单位进行数据的处理,这之前仍以扇区为单位。

对于根目录之后的第一个簇,系统并不编号为第0簇或第1簇(可能是留作关键字的原因吧),而是编号为第2簇, 也就是说数据区顺序上的第1个簇也是编号上的第2簇。

3.2 FAT的目录结构FAT文件系统的目录结构其实是一颗有向的从根到叶的树,这里提到的有向是指对于FAT分区内的任一文件(包括文件夹),均需从根目录寻址来找到。

可以这样认为:目录存储结构的入口就是根目录。

FAT文件系统根据根目录来寻址其他文件(包括文件夹),故而根目录的位置必须在磁盘存取数据之前得以确定。

FAT文件系统就是根据分区的相关 DBR参数与DBR中存放的已经计算好的FAT表(2份)的大小来确定的。

格式化以后,跟目录的大小和位置其实都已经确定下来了:位置紧随FAT2之后,大小通常为32个扇区。

根目录之后便是数据区第 2簇。

FAT 文件系统的一个重要思想是把目录(文件夹)当作一个特殊的文件来处理,FAT32甚至将根目录当作文件处理,在 FAT16中,虽然根目录地位并不等同于普通的文件或者说是目录,但其组织形式和普通的目录(文件夹)并没有不同。

FAT分区中所有的文件夹(目录)文件,实际上可以看作是一个存放其他文件(文件夹)入口参数的数据表。

所以目录的占用空间的大小并不等同于其下所有数据的大小,但也不等同于0。

通常是占很小的空间的,可以看作目录文件是一个简单的二维表文件。

其具体存储原理是:不管目录文件所占空间为多少簇,一簇为多少字节。

系统都会以32个字节为单位进行目录文件所占簇的分配。

这 32个字节以确定的偏移来定义本目录下的一个文件(或文件夹)的属性,实际上是一个简单的二维表。

这32个字节的各字节偏移定义如表 5:表目录项个字节的含义对上表中的一些取值进行说明:(1)、对于短文件名,系统将文件名分成两部分进行存储,即主文件名+扩展名。

0x0~0x7字节记录文件的主文件名,0x8~0xA记录文件的扩展名,取文件名中的ASCII码值。

不记录主文件名与扩展名之间的"." 主文件名不足8个字符以空白符(20H)填充,扩展名不足3个字符同样以空白符(20H)填充。

0x0偏移处的取值若为00H,表明目录项为空;若为 E5H表明目录项曾被使用,但对应的文件或文件夹已被删除。

(这也是误删除后恢复的理论依据)。

文件名中的第一个字符若为“ . ”或“.. ”表示这个簇记录的是一个子目录的目录项。

“. ”代表当前目录;“.. 代表上级目录(和我们在dos或windows中的使用意思是一样的,如果磁盘数据被破坏,就可以通过这两个目录项的具体参数推算磁盘的数据区的起始位置,猜测簇的大小等等,故而是比较重要的 )(2)、OxB的属性字段:可以看作系统将 OxB的一个字节分成8位,用其中的一位代表某种属性的有或无。

相关文档
最新文档