FAT(File Allocation Table)文件系统

  前两天面试,导师说我基础差,要赶紧补起来了。今天晚上看了FAT32文件系统,基本的信息都是百度百科中"FAT文件系统"词条中的,做了一点总结,整理成表,问题的原因有自己的理解,可能有偏差。看的过程中有几个问题,自己思考外加网上百度,有一点解释,但是又不太通的地方,网上的回答也不太深入,可能得找本书,才搞得清楚一些。下面进入正文:

1.基本信息

  FAT文件系统中的扇区大小一般为512Byte,也就是2^-1KB,2^11M;簇大小是不固定的,随着分区的增大而扩增。

  FAT12 FAT16 FAT32
磁盘容量范围 最大为8M 32M—2GB 512M-8TB
问题 文件碎片严重 大容量磁盘利用率低

1.运行速度比FAT16慢

2.不能向下兼容

3.分区小于512M时,FAT32不起作用

4.单个文件不能大于4G(具体为4G-2byte)

原因  

当分区容量增大时,簇大小也增大(最大为64KB)

若是存储小文件时,比如文件大小为2k,则剩余的62k都为空闲区域,被浪费

1.分配表增大,更复杂

3.见思考

4.见思考

2.关于FAT的一些思考

  (1)为什么FAT32文件系统中簇的大小不固定/为什么FAT系统中簇的大小随着分区大小的增大而扩增?

  回答这个问题首先要清楚一个公式:

              分区大小(M)=簇的个数(cluster)*簇的大小(sector/cluster簇所占扇区个数)*扇区大小(2^-11M)

  簇的个数是不变的(和分区表的位数有关,eg:FAT12为2^12=4096,FAT16为2^16=65536……),扇区大小一般为512Byte,因此要增大分区大小,只能通过增大簇的大小来实现。

这里其实有点疑惑,似乎簇的个数也是可以改变的,看到了FAT32文件系统簇的个数必须大于65527个这样的说法,暂时还不清楚,先记录下来,后续学习在更改。

8.2加注:FAT32文件系统簇的个数必须大于的是65537,并不是65527。65536正好是2^16,可能的原因是当文件簇个数小于等于65536时,16位的FAT表已经够用,因此不需要使用32位的。

(2)为什么FAT32文件系统单个文件大小不能超过4G(4G-2Byte)?

  这个限制和文件目录项有关。

文件目录项中有一个属性是文件长度,该属性占的字节数是4字节,也就是32bit,而2^32bit=4GB,因此文件长度的最多值为4GB。这个解释是从网上看到的,百度百科上说:准确的说这个限制是4GB-2bit,这减去的2Byte做了什么,一并后续补充吧。

8.2加注:因为目录项的前两个字节在设计文件系统的时候保留,并不用来存储目录内容,因此要除去这两个字节。

(3)为什么FAT32文件分区最小为512M?

  初步认为是和前面提到的FAT32文件系统的簇个数最小为65527个有关,但是按照这样计算:

FAT32最小的簇大小为4KB,也就是8个扇区(4/2^-1)使用分区大小计算公式:

  分区大小=65527*8*2^-11≈255.9,这样还是有点不对。╮(╯▽╰)╭不懂。

今晚就只看了一点,提出的三个问题,解释都有点问题,后续再深入学习吧,先睡!明天第一天实习↖(^ω^)↗

8.2加注:因为FAT32文件系统簇的个数最少为65537个,最小簇的大小为4KB,使用上面的公式计算分区大小为:

  65537*8*2^-11≈256.0039。

FAT文件系统学习和思考的更多相关文章

  1. FAT文件系统规范v1.03学习笔记---4.文件和目录数据区之长目录项

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  2. FAT文件系统规范v1.03学习笔记---3.根目录区之FAT目录项结构

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  3. FAT文件系统规范v1.03学习笔记---1.保留区之 Fat32 FSInfo扇区结构和备份启动扇区

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  4. FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

  5. FAT文件系统规范v1.03学习笔记---1.保留区之启动扇区与BPB

    1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...

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

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

  7. 关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁

    首先分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法.变量. 在一个进程中,也就是一个jvm 或者说应用中,我们很容易去处理控制,在j ...

  8. <FAT文件系统> -- DBR

    FAT16是比较简单的文件系统,相比NFTS等文件系统,该系统的学习比较easy,容易上手,同时对于数据存储的机理以及数据的恢复有一定的帮助.FAT文件系统有一定的弊端,不能支持太大的数据存储. FA ...

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

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

随机推荐

  1. 2017 UESTC Training for Data Structures

    http://acm.uestc.edu.cn/#/contest/show/155 对大二来说貌似这套题有点简单了,多是一眼题 发现漏了一题,然而是以前看别人讨论过的:). H:线段树+暴力.大概就 ...

  2. 无锁atomicInteger

    AtomicInteger可以保证硬件上的原子操作 1.主要原理 CAS操作 在进行数据更新的时候,会进行与内存中的地址进行比较,若预期值与内存中的值相同,则进行数据上的更新,若值不同,则更新失败,  ...

  3. JSONObjec序列化对象过滤为null的属性

    @Test public void test3() { PgwReqtBody3002 pgwReqtBody3002 = new PgwReqtBody3002(); pgwReqtBody3002 ...

  4. R实现地理位置与经纬度相互转换

    本实例要实现目标通过输入城市名或者地名,然后找出其经度纬度值,以及通过可视化展现其线路流向以及周边地图展示 address_list数据: 山西省太原市小店区亲贤北街77号 贵州省贵阳市云岩区书香门第 ...

  5. C语言之运算符和条件结构

    表达式:是有操作数和运算符组成的. 操作数:常量.变量.子表达式 X=(x+2)*(y-2); 运算符: 赋值运算符:= .其作用是做赋值运算,将等号后边的值赋值给等号前边的. 复合赋值运算符: += ...

  6. 利用nodeJs来安装less以及编译less文件为css文件

    NodeJs 使用nodejs安装less以及编译less文件为css文件 首先下载nodeJs的安装包,按照步骤,安装nodejs. 链接:http://pan.baidu.com/s/1dEsqY ...

  7. 在windows环境下利用virtualenv搭建Python虚拟环境

    安装Python 安装时只有一点需要注意,一定一定要将Python添加到系统环境变量那一项勾选. 安装 virtualenv 加入系统目录之后,命令行(CMD)下就多了一条命令:pip.用pip可以自 ...

  8. python3-如何正常使用HTMLTestRunner.py,生成自动化测试报告

    其实HTMLTestRunner.py是基于python2开发的,为了使其支持python3环境,需要对其的部分内容进行修改.下面我们通过编辑器打开HTMLTestRunner.py文件(编辑器可以选 ...

  9. java map集合的知识

    /** * Map用于存储键值对,不允许键重复,值可以重复. * (1)HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度. * H ...

  10. 抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)

    功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括http,TCP ...