前面已经基于一个格式化的空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链表的形式来组织的。

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

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

    对磁盘的物理结构,逻辑结构和存储结构有了比较深入的了解后,我们来仔细探讨FAT32文件系统的存储组织结构.说到文件系统的组织结构,我们应该马上意识到,这指的是文件系统在同一个分区内的组织结构,在这个话 ...

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

    FAT32文件系统学习(3) —— 数据区(DATA区) 今天继续学习FAT32文件系统的数据区部分(Data区).其实这一篇应该是最有意思的,我们可以通过在U盘内放入一些文件,然后在程序中读取出来: ...

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

    1.题外话 在继续本文学习FAT32文件系统之前,先来插入一点别的话题.我们都知道U盘有一个属性是容量,就拿笔者的U盘为例,笔者手上的U盘是金士顿的DataTraveler G3 4GB的一个U盘.电 ...

  4. U盘FAT32文件系统

    一.FAT文件系统分为四个部分 参考别人的博客 1.http://blog.163.com/ourhappines@126/blog/static/121363154201311811495492/ ...

  5. FAT32文件系统--For TF卡

    1. TF卡空间是如何分配的? 下面以4GB TF卡为例,通过WinHex工具进行分析,其空间分配如下图所示: FAT32把目录当做文件来管理,所以没有独立的目录区,所有的文件目录项都是在数据区里面的 ...

  6. SD卡FAT32文件系统格式

    一.声明 1.本文来源和主旨 2.本文测试环境 二.SD卡FAT文件系统 1.SD卡FAT32文件系统的整体布局 2.FAT文件系统简介 ① 文件分配表 ② 目录项 三.DBR(DOS BOOT RE ...

  7. FAT32文件系统学习(上)

    2011-06-02 22:30:48 目的:需要编写SD读图片的底层驱动程序.所以要了解一个SD卡常用文件系统基本概念.累计学习用时2.5小时. 一,FAT32的保留区 1,引导扇区 :引导扇区是F ...

  8. 【转载】FAT32文件系统详解

    硬盘是用来存储数据的,为了使用和管理方便,这些数据以文件的形式存储在硬盘上.任何操作系统都有自己的文件管理系统,不同的文件系统又有各自不同的逻辑组织方式.例如:常见的文件系统有FAT,NTFS,EXT ...

  9. FAT和FAT32文件系统的原理

    [转自] http://www.sjhf.net/Article/sjhfdoc/200404/1.html 一.硬盘的物理结构:     硬盘存储数据是根据电.磁转换原理实现的.硬盘由一个或几个表面 ...

随机推荐

  1. Django(三) ORM操作

    一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 ORM:关系对象映射.定义一个类自动生成数据库的表结构. 数据库常用的数据类型 : 数字 字符串 时间 ORM分为两种类型: 主流都是 ...

  2. Java 常用List集合使用场景分析

    Java 常用List集合使用场景分析 过年前的最后一篇,本章通过介绍ArrayList,LinkedList,Vector,CopyOnWriteArrayList 底层实现原理和四个集合的区别.让 ...

  3. 从UUID想到的

    1.UUID的定义 通用唯一标识符(UUID)被设计成一个在时间和空间上都独一无二的数字,常被用作唯一性标识. UUID是一个由5位十六进制数的字符串表示的128比特数字,其格式为 aaaaaaaa- ...

  4. 跨域资源请求(除jsonp以外)的方法

    ---------------------------------------------------------------------------------------------------- ...

  5. Trie树/字典树题目(2017今日头条笔试题:异或)

    /* 本程序说明: [编程题] 异或 时间限制:1秒 空间限制:32768K 给定整数m以及n个数字A1,A2,..An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大 ...

  6. Scrapy框架实战-妹子图爬虫

    Scrapy这个成熟的爬虫框架,用起来之后发现并没有想象中的那么难.即便是在一些小型的项目上,用scrapy甚至比用requests.urllib.urllib2更方便,简单,效率也更高.废话不多说, ...

  7. Linux 虚拟IP

    虚拟IP Linux网卡上绑定另一个虚拟ip,即网卡上一个真实ip一个虚拟ip.当然通过这2个ip都可以连接到该主机. 实现原理主要是靠TCP/IP的ARP协议.因为ip地址只是一个逻辑 地址,在以太 ...

  8. Maven中避开测试环节

    两种方法 修改pom文件 添加<skipTests>true</skipTests>标签 <plugin> <groupId>org.apache.ma ...

  9. 如何知道你的linux是什么时候安装的

    在安装系统时,每个分区下都会有一个 lost+found,而且这个目录的创建时间是和该分区创建的时间一样的.所以如果想知道你的系统是什么时候安装的,只需要看这个目录的创建时间即可. 通常情况下,我们分 ...

  10. Windows 桌面和文件夹的右键->打开命令行窗口

    Windows 桌面和文件夹的右键->打开命令行窗口 1.先按下shift,再点鼠标右键运行CMD,(不是管理员权限) 上图是我已经加了右键的,并且 系统设置了  ps代替cmd,所以是“在此处 ...