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. 镜像命名的最佳实践 - 每天5分钟玩转 Docker 容器技术(18)

    我们已经学会构建自己的镜像了.接下来的问题是如何在多个 Docker Host 上使用镜像. 这里有几种可用的方法: 用相同的 Dockerfile 在其他 host 构建镜像. 将镜像上传到公共 R ...

  2. MyBatis起步

    作用:封装了JDBC操作,简化数据库访问代码.封装的功能:1.获取连接,执行SQL,释放连接2.SQL参数设置(可以直接传入对象,Mybtis会将对象的属性传入SQL语句) #{属性值}取代JDBC的 ...

  3. 0Raspi开启root权限并登录使用

    sudo passwd root sudo passwd --unlock root su root  切换回用 su pi   开始登陆选择root preferences>raspberry ...

  4. 基于Spring Boot的图片上传

    package com.clou.inteface.domain.web.user; import java.io.File; import java.io.IOException; import j ...

  5. web聊天室总结

    前言: 最近在写一个聊天室的项目,前端写了挺多的JS(function),导致有点懵比,出了BUG,也迟迟找不到.所以昨天把写过的代码总结了一下,写成博客. 项目背景 参考博客: http://www ...

  6. iOS安全攻防之越狱设备检测

    iOS 越狱(iOS Jailbreaking),是用于获取苹果公司便携装置操作系统iOS最高权限的一种技术手段,用户使用这种技术及软件可以获取到 iOS 的最高权限,甚至可能可以进一步解开运营商对手 ...

  7. 汽车Vin码识别——可以嵌入到手机里的新OCR识别技术

              汽车Vin码识别(车架号识别),顾名思义,就是识别汽车的Vin码(车架号),汽车Vin码识别(车架号识别)利用的是OCR识别技术,支持视频流获取图像,自动触发识别,另外汽车Vin码 ...

  8. Node.js 8有哪些重要功能和修复?

    欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~ 5月30日12点,Node.js 8正式发布了,这个版本具有一系列新功能和性能改进,并且这些功能和改进将获得长期支持(LTS). ...

  9. intersect for multiple vectors in R

    Say you have a <- c(1,3,5,7,9) b <- c(3,6,8,9,10) c <- c(2,3,4,5,7,9) A straightforward way ...

  10. (转)Windows下tail命令工具(转)

    因为随笔无转载按钮,先说明原文地址是: Windows 下 tail 查看日志命令工具分享 使用方法: 下载后解压,把tail.exe 复制到 目录:C:\Windows\System32 下 文件下 ...