• FAT文件系统学习和思考


    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。

  • 相关阅读:
    HttpServletRequest这篇文章就够了
    java工程师linux命令,这篇文章就够了
    http简介看这篇就够了
    微服务资源springboot、springcloud、docker、dubbo项目实战等倾心分享
    jdbc就是这么简单
    Ambari WebUI-集群管理操作使用说明
    【Java并发编程实战-阅读笔记】02-对象的共享
    【Java并发编程实战-阅读笔记】01-线程安全性
    kafka+SparkStreaming以及Kafka+Kerberos+Sentry+SparkStreaming代码调试问题与分析
    【译】回调地狱 Callback Hell
  • 原文地址:https://www.cnblogs.com/jiangcsu/p/5702052.html
Copyright © 2020-2023  润新知