文章目录

  • 1 快速了解Fat32文件系统
    • 1.1 只读文件系统
    • 1.2 可写文件系统
    • 1.3 Fat32分区结构

1 快速了解Fat32文件系统

1.1 只读文件系统

首先看一下我们的第一个需求,如果我们现在需要实现只读文件系统。假设现在有3个文件需要存储,使用时只需要读取。我们可以采取顺序存储的方式,如下;

但是按照上述方式存储遍历文件时会非常麻烦,我们进行下改进,将所有的文件信息集中存储:

不过,试着想一下,文件一般是由层次结构了,为了方便组织文件,我们可以采用树形结构对文件进行分层,树形结构如下:

我们可以继续改进文件的存储方式:

对于FAT32文件系统来说,目录也被视作文件。

我们可以采用另一视角看待一下:

1.2 可写文件系统

我们现在对需求升下级,我们需要可写的文件系统。

文件的写包含:调整文件大小、写入数据等。

上图中所示的方法明显是行不通的。我们可以采用文件不连续存储:找出其余的空闲空间,将其与原有文件数据链接起来。


我们怎样表示及存储链接关系呢?

为了快速查找及节省空间,链接关系应集中存储。

考虑到块设备的特性,文件数据应按照扇区/块分配空间。

考虑到磁盘空间有限及查找效率,我们可以将多个扇区组织为簇进行读写。

考虑到块设备的特殊性,链接关系几种存储于一个表中。

1.3 Fat32分区结构

根据前面所述原理,FAT32文件系统将分区划分为以下几个区域。

保留区:主要保存文件系统配置数据、启动代码等。

FAT表区:保存文件不连续存储的各部分链接关系。

数据区:存储文件和目录数据,一切都是文件。特别的,目录存储文件信息。


总结一下:


参考资料:

  1. 自己动手从0到1学写FAT32文件系统

快速了解FAT32文件系统相关推荐

  1. SD卡FAT32文件系统格式

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

  2. JAVA——构建FAT32文件系统的DBR(DOS引导记录)类

    Maven <dependency><groupId>org.projectlombok</groupId><artifactId>lombok< ...

  3. FAT32文件系统(一)

    笔者最近在自学FAT32系统及其在嵌入式的应用,将学习笔记整理发布. 学习过程中主要参考的资料有: B站:[纯干货| 超实用!来看Fat32文件系统详细解读--带你一节课掌握FatFS小型文件系统!] ...

  4. 基于ATmega32的SD卡上FAT32文件系统数据读取

    SD卡(secure digital memory card,安全数码卡)是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机.个人数码助理(PDA)和多媒体播放器等 ...

  5. FAT32文件系统结构分析

    FAT,英文为File Allocation Table,文档分配表.先要记住几个概念:         扇区:一般扇区为512个字节.         簇:由若干个扇区组成,是存取数据的最小单位.如 ...

  6. 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统?

    如果你希望更刺激地安装 Windows,那么你需要了解很多 Windows 系统相关的问题. 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统? 因为 NTFS 是 Windows ...

  7. SD卡移植FAT32文件系统无MBR

    问题:在研究SD卡和FAT32文件系统的时候,发现SD卡有的有MBR,有的没有MBR,这个为什么呢? 分析:MBR是主引导记录,是在给磁盘分区的时候建立的,我们的SD卡没有这个可能就是没有进行过分区操 ...

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

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

  9. DSP之解读FAT32文件系统

    FAT 的全称是File Allocation Table(文件分配表系统),FAT 文件系统1982年开始应用于MS- DOS 中. FAT 文件系统主要的优点是它可以被多种操作系统访问,如MS- ...

最新文章

  1. Linux Kernel TCP/IP Stack|Linux网络硬核系列
  2. 螺旋矩阵Python解法
  3. mysql 表锁——读锁和写锁
  4. 深度理解cnn 网络
  5. 剑指offer java -查找旋转数组的最小数字
  6. ORM框架之Mybatis(二)数据库连接池、事务及动态SQL
  7. SVN 使用hooks 自动更新到远程的web目录下
  8. Kmalloc和Vmalloc的区别
  9. pytorch ImageFolder
  10. mac本 安装淘宝镜像
  11. 数据分析师与数据科学家的区别
  12. android 按钮边距,安卓button代码初始化默认内边距问题
  13. 用VS2005打开方案出现“此安装不支持该项目类型
  14. java远程连接fpt_java远程连接本地fpt
  15. linux ---vim编辑用户管理权限
  16. R安装nCov2019包报错:Failed to install 'unknown package' from GitHub: schannel: failed to receive handsh
  17. 降噪耳机哪款比较好?佩戴舒适的降噪蓝牙耳机推荐
  18. html弹窗确认操作事件
  19. 抓准痛点就能撬动市场!读屏时代的黑科技非它莫属了
  20. java 文件压缩zip【两种方式】

热门文章

  1. mysql字符串区分大小写么_mysql字符串区分大小写的问题-阿里云开发者社区
  2. 【RL】快速强化学习实战案例
  3. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第6章-区域极点配置
  4. 台湾大学林教授libsvm在matlab的安装
  5. 五天带你学完《计算机网络》·第一天·物理层
  6. rabbitmqctl status报错
  7. 【转】Kettle集群
  8. php 下 html5 XHR2 + FormData + File API 上传文件
  9. [摘录]第五章 与奋斗者分享利益
  10. Memcache 安装与使用