FAT32文件系统的存储组织结构(二)

前面已经基于一个格式化的空U盘分析了一下FAT32文件系统存储的组织结构,下面我们从文件操作的角度来分析一下文件系统的运作机制。由于换了个U盘,所以仍然贴出刚格式化的空U盘的几个重要的数据区如下:

 

我们可以看出,在分区格式化的时候,系统将卷标TEST_FAT32存储在2号簇,即跟目录区,如上面根目录贴图所示。同时,在FDT区2号簇标记位置写入了文件结束符FF FF FF 0F。显然,FAT32文件系统将目录当做普通文件来处理的。

下面我们在根目录下新建一个文件夹TEST1,看会有什么变化:

建立了TEST1文件夹后,FDT变成如下:

根目录变成如下:

重新分配了3号簇:

从上面的变化可以直观的看出,系统在新建文件夹时完成了如下动作:

a.在父目录所在簇上建立新的目录项,存储当前所建文件夹信息。

b.分配一个新簇,给新建的文件夹建立两个目录项:父目录和当前目录。

c.在FDT表中新分配的簇对应的位置上写下文件结束符。

d.建立各部分的链路关系:新建文件夹所对应的目录项的文件起始簇号字段写上新分配簇的簇号,新簇上的两个目录项的文件起始簇号字段分配写上父目录所在簇号(此处是0,本来我以为是2,即根目录所在簇,不知道为什么,可能特地用0指示根目录吧)和当前簇号(此处是3)。

为了验证我们上面分析的正确性,我们再在TEST1文件夹下建立新文件夹TEST11,看是否做了如下操作:

a.在父目录(即TEST1)所在簇(即3号簇)上建立新的目录项,存储TEST11文件夹信息。

b.分配一个新簇(应该是4号簇),给新建的文件夹(即TEST11)建立两个目录项:父目录和当前目录。

c.在FDT表中新分配的簇(应该是4号簇)对应的位置上写下文件结束符。

d.建立各部分的链路关系:新建文件夹(即TEST11)所对应的目录项的文件起始簇号字段写上新分配簇的簇号(应该是4号簇),,新簇上的两个目录项的文件起始簇号字段分配写上父目录所在簇号(3号簇)和当前簇号(应该是4号簇)。

新建TEST11文件夹后FDT变成:

根目录没有变化:

3号簇变成:

新分配4号簇:

显然我们的估计没有错的,也进一步证明我们前面的分析是正确的。

下面我们再分析建立文件的情况

我们先建立一个100字节的文件TEST.TXT,然后把这个文件拷贝到U盘的根目录下,FDT变成如下:

根目录变成:

新分配5号簇保存文件内容:

从上面的变化可以直观的看出,系统新建文件和新建文件夹所完成的操作是一样一样的:

a.在父目录所在簇上建立新的目录项,存储当前所建文件信息。

b.分配一个新簇,存储新建的文件的内容。

c.在FDT表中新分配的簇对应的位置上写下文件结束符。

d.建立链路关系:新建文件所对应的目录项的文件起始簇号字段写上新分配簇的簇号。

结束总结:

1.在FAT32文件系统中,目录和文件的存储采用统一的方式。

2.文件系统的操作的单位是簇,每新建立一个文件或文件夹,至少会重新分配一个簇号。

3.如果一个文件或目录的内容要多个簇才能存储得下,则系统会分配多个簇来存储文件或目录的内容

4.当需要多个簇时,这些簇可能连续也可能不连续,但无论是连续或是不连续,系统都是采用FDT链表的形式来组织的。

时间: 2024-10-23 03:06:36

FAT32文件系统的存储组织结构(二)的相关文章

FAT32文件系统的存储组织结构(一)

对磁盘的物理结构,逻辑结构和存储结构有了比较深入的了解后,我们来仔细探讨FAT32文件系统的存储组织结构.说到文件系统的组织结构,我们应该马上意识到,这指的是文件系统在同一个分区内的组织结构,在这个话题上,我们完全可以不管分区之外的所有事情. 为了分析FAT32文件系统的存储组织结构,我们来建立一个实实在在的文件系统:将U盘插入电脑,将U盘格式化成FAT32分区格式: 以建好的U盘FAT32文件系统为基础,下面从文件系统的各个组成来分别加以介绍. 分区引导扇区DBR 用winhex打开U盘显示如

FAT32文件系统学习(3) —— 数据区(DATA区)

FAT32文件系统学习(3) —— 数据区(DATA区) 今天继续学习FAT32文件系统的数据区部分(Data区).其实这一篇应该是最有意思的,我们可以通过在U盘内放入一些文件,然后在程序中读取出来:反过来也可以用程序在U盘内写入一下数据,然后在windows下可以看到写入的文件.这些笔者都会在这篇文章中演示.同时,在写这篇文章的时候笔者也发现了许多意想不到的规律. 1.本文目录 1.读取根目录 2.短文件名目录项 3.长文件名目录项 4.U盘写入文件夹 5.参考文献 2.读取根目录 两张FAT

FAT32文件系统学习(2) —— FAT表

1.题外话 在继续本文学习FAT32文件系统之前,先来插入一点别的话题.我们都知道U盘有一个属性是容量,就拿笔者的U盘为例,笔者手上的U盘是金士顿的DataTraveler G3 4GB的一个U盘.电脑上显示的容量如图1所示为3.75GB.那么这个3.75GB是怎么计算出来的呢? 图 1 系统显示U盘属性 我们先来回顾一下上一篇BPB参数当中的Sectors(扇区总数)这个参数,这一参数代表了这个U盘在出厂时的总扇区数,笔者手上这个是7884672个,可以从图2中看到.其中每个扇区为512 B,

FAT32文件系统--For TF卡

1. TF卡空间是如何分配的? 下面以4GB TF卡为例,通过WinHex工具进行分析,其空间分配如下图所示: FAT32把目录当做文件来管理,所以没有独立的目录区,所有的文件目录项都是在数据区里面的. 2. 启动扇区 (DBR) DBR(DOS BOOT RECORD,DOS引导记录),位于柱面0,磁头1,扇区1,即逻辑扇区0 ;    DBR包括: •  一个引导程序: DOS 引导程序完成DOS系统文件(IO.SYS,MSDOS.SYS)的定位与装载 • 一个BPB:  BPB用来描述本D

【转载】FAT32文件系统详解

硬盘是用来存储数据的,为了使用和管理方便,这些数据以文件的形式存储在硬盘上.任何操作系统都有自己的文件管理系统,不同的文件系统又有各自不同的逻辑组织方式.例如:常见的文件系统有FAT,NTFS,EXT,UFS,HFS+等等.作者后面的文章会一一讲到,下面就来学习一下基于Windows的FAT32文件系统. FAT32文件系统由DBR及其保留扇区,FAT1,FAT2 和 DATA 四个部分组成,其机构如下图: 这些结构是在分区被格式化时创建出来的,含义解释如下: DBR及其保留扇区:DBR的含义是

FAT32文件系统定位FAT文件分配表以及根目录

一.FAT1起始扇区 =  DBR的扇区号 + 保留扇区号 1.获取DBR的扇区号 磁盘的0号扇区的 0X1C6~0X1C9是第一个分区的起始扇区,这个扇区就是DBR 下图是本人的磁盘的0号扇区,可以看到DBR的扇区号是0X00 00 00 3F(小端格式) 2.得到保留扇区 打开DBR扇区,偏移0X0E~0X0F表示保留扇区 由图可知保留扇区数为0X00 26. FAT1起始扇区 =  DBR的扇区号 + 保留扇区号  = 0X3F + 0X26 = 0X65 打开扇区号为0X65的扇区,这就

Unix文件系统学习笔记之二: 文件描述符、inode和打开文件表

Unix文件系统学习笔记之二: 文件描述符.inode和打开文件表 系统盘上数据的布局 文件系统无非是关于数据在磁盘上的组织以及存储空间管理的,为此,首先需要知道磁盘上数据的总体布局方式.以Unix为例,最重要的一张表如下: Unix 进程管理中和用户文件.io 最相关的数据结构:usr 数据结构 The procstructure does not record information related to file access.  However the userstructure con

SD卡FAT32文件系统格式

一.SD卡FAT32文件系统 二.DBR(DOS BOOT RECORD,DOS引导记录) 1.DBR [1]0x00~0x02:3字节,"EB5890",跳转指令. [2]0x03~0x0A:8字节,文件系统标志和版本号,这里为MSDOS5.0. [3]0x0B~0x0C:2字节,每扇区字节数,512(0X02 00). [4]0x0D~0x0D:1字节,每簇扇区数,8(0x08),这个值不能为0,而且必须是2的整数次方,比如1.2.4.8.16.32.64.128. [5]0x0E

FAT32文件系统的数据结构

FAT32文件系统多用于U盘,内存卡等小容量的存储介质中,FAT就是File Allocation Table文件分配表的缩写,32表示每个FAT表项占用32位.在FAT32文件系统之前还有两个版本分别是FAT12和FAT16,同理根据这两个文件系统名我们可以看出FAT12的FAT表项是占用12位,FAT16占用16位.由于存储介质的不断扩大 FAT12,FAT16已经退出我们的视线了.所以我们可以不用学FAT12.FAT16直接学FAT32就行.他们的文件系统结构基本上都相同的. 在FAT32