[操作系统] FAT文件系统概述

[操作系统] FAT文件系统概述1 第一章 磁盘结构概述 fat 磁盘物理上分为以下四部分组成 保留区 含 MBR MainBootReco 保留区 含 DBR DOSBootRecor FAT 区数据区 1 1 保留区 含 DBR DOSBootRecor 保留区含有一个重要的数据结构 系统引导扇区 DBR FAT12 FAT16 的保留区通常只有一个扇区 而 FAT32 保留的多些 除了 0 号扇区外

1.第一章–磁盘结构概述

描述
fat磁盘物理上分为以下四部分组成:

  • 保留区(含MBR–Main Boot Record)
  • 保留区(含DBR–DOS Boot Record)
  • FAT区
  • 数据区

1.1保留区(含DBR–DOS Boot Record)

保留区含有一个重要的数据结构–系统引导扇区DBR。FAT12、FAT16的保留区通常只有一个扇区。而FAT32保留的多些,除了0号扇区外,还有一些其他的扇区,其中包括了DBR的备份扇区。

1.2FAT区

FAT区由文件分配表构成–FAT1,FAT2,FAT2紧跟在FAT1后面,是FAT1的备份

1.3数据区

数据区是保存数据的,其中根目录也保存在此。这一区域不以扇区管理,而是以簇进行管理。

第二章–FAT32磁盘结构介绍

FAT32文件系统简介

  • FAT(File Allocation Table,文件分配表)文件系统是Windows操作系统所使用的一种文件系统,他的发展过程经历了FAT12,FAT16,FAT32三个阶段。
  • FAT文件系统用 “簇” 作为数据单元。一个“簇”由一连串的扇区组成,簇所含的扇区数必须是 2的整数次幂 。簇的最大值是64个扇区,即32kb。 本文中一簇是4kb。
  • 所有簇从2开始进行编号,每个簇都有一个自己的编号。
  • 用户文件和目录都存储在簇中。
  • 文件系统分配磁盘按照簇进行分配,因此一个文件即使只有1kb,那么也会被分配4kb的空间。

文件分配表

  • 文件和文件夹内容存储在簇中,如果一个文件或者文件夹需要多余一个的簇进行存储,那么通过文件分配表建立起多个簇的联系。。FAT结构用于指出下一簇,同时也说明了簇的分配状态。FAT12、FAT16、FAT32的不同就在于文件分配表的大小不同。

文件分配表如何记录文件所包含的簇

我们已经知道,在文件分配表中记录了数据区中簇之间的关系。而数据区中的簇就是存储文件或文件夹信息的基本单位。

  • FAT32中簇地址是用4字节进行编址的,故在FAT表中,是以4个字节为单位进行划分,每个单元存储一个簇地址。 0号地址与1号地址被系统保留并存储特殊标志内容。从2号地址开始,第i号地址对应数据区中i号簇。我们称 FAT表中的地址为FAT表项,FAT表中记录的值为FAT表项值
  • 当文件系统被创建时,FAT表会被清空,在FAT1和FAT2表中的0号地址与1号地址会被写入特定值。由于创建文件系统的同时会创建根目录,也就是在数据区为根目录分配一个簇的空间(2号簇,起始簇)在FAT表中2号地址写入一个结束标记。
  • 当FAT表中第i号地址对应的簇未被使用时,表项值为0
  • 当FAT表中第i号地址对应的簇是记录一个文件或文件夹的最后的簇时,表项值为0xFFFFFFFF。
  • 下表给出了FAT表项值的详细含义(更详细表项值含义请自行利用百度或Google)
表项值(32位) 簇描述符含义
00000000H “0”值(未分配使用)
00000001–FFFFFFEFH “一个簇号”(已占用)
FFFFFFF7H 坏簇
FFFFFFF8–FFFFFFFFH “EOF”(文件结束簇)

第三章–fat文件系统

第二章中文件分配表已经建立起了簇之间的联系。那么对于文件系统来说,如何确定文件与文件、文件夹与文件之间的逻辑存储关系呢?本章中将介绍此内容。

目录项

首先介绍下目录项的概念:

  • FAT文件系统的每一个文件和文件夹都被分配到一个目录项,目录项中记录着文件名、大小、文件内容起始地址以及一些其他元数据(简单来说就是文件或文件夹本身的属性)。(具体存储格式可以百度或者Google)跟在目录项之后的是文件或文件夹的具体内容。
  • 目录项都有规定好的固定长度以及每个位置代表的含义(以下给出了fat32中目录项的32个字节的含义)

这里写图片描述

文件(夹)内容

有了目录项,就有了文件或文件夹本身的属性。紧跟目录项后是文件或文件夹的内容。

  • 对于文件类来说,存储的就是文件本身的内容
  • 对于文件夹来说,存储的是一条一条的记录,每条记录是此文件夹下包含的文件或文件夹(同时也包含父目录…当前目录.)每条记录都应该有固定的格式,但总归需要包含以下内容:
1.记录是文件还是文件夹 2.记录的起始簇号 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216649.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:23
下一篇 2026年3月18日 上午11:24


相关推荐

  • Navicat 15 for MySQL 激活码(破解版激活)

    Navicat 15 for MySQL 激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    180
  • 【其他】资源整合「建议收藏」

    【其他】资源整合「建议收藏」偶然整理云盘,发现曾经收藏过一些比较不错的资源,正好分享一下;1.C语言教程,郝斌老师作为读书时候的启蒙老师,推荐一波链接:https://pan.baidu.com/s/1rn_cHgNs5qIZV9ON-pcWVw提取码:wa7j2.UI框架链接:https://pan.baidu.com/s/1Q2Bj-i79C1gDWZSvfDVEeQ提取码:a47l3.UI万能框架链接:https://pan.baidu.com/s/1Ikvqo9mtabD104bWVLte2w…

    2022年5月22日
    52
  • mysql删除表语句_navicat不小心把表删了

    mysql删除表语句_navicat不小心把表删了MySQL删除表#1、droptable表名:直接删除表,删除较干净彻底.删除表全部数据和表结构,立刻释放磁盘空间,不管是Innodb和MyISAM;删除学生表:droptablestudent;#2、truncatetable表名:truncatetable:是对表进行先删除,再创建(与原表一致)删除表全部数据,保留表结构,立刻释放磁盘空间,不管是Innodb和MyISAM;删除学生表:truncatetablestudent;#3、dele

    2025年8月5日
    3
  • 如何选择?DeepSeek本地部署与网页版对比+完整部署教程

    如何选择?DeepSeek本地部署与网页版对比+完整部署教程

    2026年3月16日
    2
  • 二叉树的层序遍历(两种方法实现)

    二叉树的层序遍历(两种方法实现)两种方法实现二叉树的层序遍历1、说明二叉树的层序遍历是面试经常会被考察的知识点,甚至要求当场写出实现过程。层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数据。如下图:先序遍历:A→B→D→C中序遍历:B→D→A→C后续遍历:D→B→C→A层序遍历:A→B→C→…

    2022年5月11日
    38
  • oracle数据库迁移到新服务器_oracle库对库迁移数据

    oracle数据库迁移到新服务器_oracle库对库迁移数据一、创建用户1.1步骤1.2注意事项二、处理空表(1)描述Oracle11g中的新特性,当一个表中的数据为0时不分配segment,所以就不能够被导出。(2)解决方法方法一:先insert一条数据,再rollback就产生segment了,该方法是在空表中先插入一条数据,再删除就产生segment了,执行exp或者expdp时就可以导出了此空表了。方法二:修改deferred_segment_creation参数,该参数默认为TRUE,当修改为F..

    2022年10月21日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号