当前位置: 首页 > news >正文

FAT文件系统

要全面理解 FAT 文件系统,我们可以分四个阶段循序渐进地拆解:核心概念物理结构演进版本,以及优缺点分析


第一阶段:核心概念——“账本”思想

FAT 的全称是 File Allocation Table(文件分配表)。

想象一下,磁盘就像一座巨大的仓库,被分成了无数个小格子(称为簇 Cluster)。如果你有一个大文件,一个格子装不下,就得拆开装进好几个格子里。

  • 问题:这些格子分布在仓库各处,你怎么知道哪几个格子属于同一个文件?顺序又是怎样的?
  • FAT 的方案:在仓库门口放一个账本。账本上记录了每个格子的状态:是空的?还是属于某个文件?如果是某个文件的,下一个部分在哪个格子?

这种记录方式本质上是一个显式链接列表(Static Linked List)


第二阶段:物理结构——磁盘上都画了什么?

一个格式化为 FAT 的磁盘分区,逻辑上分为四个区域:

  1. 保留区(Reserved Region)
    • 包含引导扇区(Boot Sector)。这是计算机启动时读取的第一份地图,告诉系统:每个簇多大、FAT 表在哪里、一共有多少个 FAT 表。
  2. FAT 区(FAT Region)
    • 这就是那个“账本”。为了防止账本损坏导致数据全丢,通常会存两个一模一样的副本(FAT1 和 FAT2)。
    • 表项内容:每个表项对应磁盘上的一个簇。里面填的值可能是:
      • 下一个簇的编号。
      • 一个特殊标记(代表这是文件的最后一块)。
      • 坏块标记。
  3. 根目录区(Root Directory Region)
    • 存放根目录下的文件名、属性、修改时间,以及最重要的:这个文件起始块的编号
  4. 数据区(Data Region)
    • 真正存放文件内容的地方。

查找文件的流程:

  1. 在“根目录区”找到文件名 test.txt,发现它起始于 3 号簇
  2. 去“FAT 表”看 3 号索引,里面写着“下一块在 5 号簇”。
  3. 再看 FAT 表 5 号索引,里面写着“结束标记”。
  4. 操作系统依次读取数据区的 3 号簇5 号簇,文件读取完成。

第三阶段:演进版本——从 12 到 32 再到 exFAT

随着硬盘越来越大,FAT 也在升级。数字(12/16/32)代表“账本里每个登记项占用的位数”

1. FAT12

  • 背景:最早用于软盘。
  • 限制:地址空间只有 \(2^{12}\) 次方,管理的簇很少,磁盘容量超不过 32MB。

2. FAT16

  • 背景:MS-DOS 时代。
  • 限制:分区最大支持 2GB。
  • 缺点:因为簇的总数有限,大硬盘会导致“簇”变得非常大。即使你存一个 1 字节的文件,也要占用一个 32KB 的簇,非常浪费空间。

3. FAT32

  • 背景:Windows 95 时代。
  • 进步:支持分区高达 2TB。簇变小了,空间利用率提高。
  • 致命伤单文件最大不能超过 4GB。这也是为什么现在的 U 盘如果格式化为 FAT32,没法拷入高清电影镜像的原因。

4. exFAT (Extended FAT)

  • 背景:为了闪存设备(U 盘、SD 卡)设计的。
  • 进步:打破了 4GB 限制,支持超大文件,且结构简单,适合跨平台(Windows, Mac, 手机都支持)。

第四阶段:深度分析——为什么它能流行 40 年?

优点(简单、兼容):

  1. 结构极其简单:实现起来非常容易。所以各种单片机、数码相机、打印机默认都支持 FAT。
  2. 兼容性无敌:Windows, Linux, macOS, Android 全都能读写。
  3. 开销小:对比现代的 NTFS 文件系统,FAT 不需要复杂的日志系统,对小容量设备很友好。

缺点(脆弱、落后):

  1. 安全性差:它没有权限管理。谁进系统都能读所有文件(不像 NTFS 可以设置某个文件夹不让别人看)。
  2. 抗风险能力差:没有“日志”功能。如果你正在写文件时突然断电,FAT 表很容易乱掉,导致整个磁盘文件丢失。
  3. 容易产生碎片:文件像链条一样连着,如果删删减减多了,文件在物理上会分布得极其凌乱,导致机械硬盘读取速度变慢(这就是为什么老电脑需要“磁盘碎片整理”)。

总结:与你之前的知识串联

你之前看的图片(FCB 的改进)其实在 FAT 中也有体现:

  • FAT 目录项里存了文件名。
  • FAT 表里存了物理位置。

当你点击一个文件时,操作系统先去目录区查到起始号,然后去 FAT 表通过“缺页”或“缓存读取”的方式把表项加载到内存,最后驱动磁头去数据区读数据。

现在的建议:

  • 如果是系统盘,必须用 NTFS(安全、支持大文件)。
  • 如果是普通 U 盘,建议用 exFAT(跨平台、没 4GB 限制)。
  • 如果是极其老旧的设备,才用 FAT32
http://www.jsqmd.com/news/825084/

相关文章:

  • Ansys Lumerical | FDTD 与 INTERCONNECT 协同:构建光栅耦合器高效设计流程
  • 从零到一:用vue-drawing-canvas打造现代化绘图应用的实战指南
  • 车载电子系统电源与端口设计实战:从原理到EMC防护的完整方案
  • GC-LSTM实战:基于PyG Temporal的动态网络链路预测全流程解析
  • 【MySQL 数据库】视图
  • 世界风景名胜区必去的十大自然奇观有哪些
  • Neovim集成Gemini AI:CLI插件配置与自动化编程实践
  • 企业内统一管理多个项目的AI模型密钥与访问审计日志
  • 行业首个支持18语种双向实时同传的AI翻译系统,企业级部署需避开这7个隐蔽兼容性陷阱
  • 贪心算法的核心基石:选择与结构的艺术
  • 基于RAG架构的智能FAQ系统:从传统文档到智能对话的实战指南
  • 2026年Deepseek搜索结果优化服务商TOP3权威测评:谁能让品牌在DeepSeek中脱颖而出? - 博客湾
  • FL Studio 2025.2.5.5319中文安装激活安装激活图文教程
  • 基于CircuitPython与CLUE开发板的桌面自动浇花机器人DIY指南
  • 用8050三极管和FR107二极管,手把手教你搭建一个简易ZVS振荡电路(附实测波形)
  • 告别龟速!手把手教你用Motrix+Chrome插件免费提速下载百度网盘文件
  • 别再乱搜了!BitLocker恢复密钥对不上?可能是你的微软账户登录错了(附正确备份姿势)
  • 继承不是“拿来用“:is-a 关系与组合
  • 2026年文心一言GEO推广服务商TOP3权威测评:谁能让品牌在百度AI搜索中实现增长突破? - 博客湾
  • claw-kits:开源开发者工具箱的设计理念与实战应用
  • 嵌入式设备自定义字体转换:从TTF到优化位图字体实战
  • 【Oracle数据库指南】第47篇:Oracle 11g在Linux下的安装详解
  • 2×2mm LGA封装+14位分辨率:SMA131在紧凑汽车钥匙中的集成方案
  • 手把手复现IDEA加密:用Python从零理解128位密钥的轮运算
  • 成员函数与 this 指针:函数属于数据
  • 2026年竹盐厂商综合实力深度解析与选择指南 - 2026年企业推荐榜
  • 基于Rust与Hyper构建高性能MCP协议服务器框架
  • 【仅限前500名设计师获取】Midjourney未来主义风格私藏资源包:含87组版权可商用材质贴图+动态光效LORA模型+失效预警提示库
  • 构建智能监控防护系统:从Prometheus到自动化运维闭环
  • 【Oracle数据库指南】第48篇:Oracle 11g在Windows下的安装与配置