linux文件系统多少行代码,FAT、Linux和NTFS文件系统

脂肪(fat12、fat16和fat32)不使用任何种类的树。除了描述分区本身的数据块之外,还使用了两个有趣的数据结构。有关在嵌入式系统中编写兼容实现所需级别的完整详细信息,请访问

Microsoft

以及第三方。

Wikipedia

有一篇像样的文章作为另一个起点,它也包含了很多关于它是如何实现的历史。

因为最初的问题是关于树的使用,所以我将提供一个关于胖文件系统中实际存在的小数据结构的快速摘要。有关准确的细节和历史,请参阅上述参考资料。

每个目录中的文件集存储在一个简单的列表中,最初按照文件的创建顺序进行。删除是通过将条目标记为已删除来完成的,因此后续的文件创建可能会重新使用该槽。列表中的每个条目都是一个固定大小的结构,其大小刚好足以容纳经典的8.3文件名以及标志位、大小、日期和起始集群编号。长文件名(也包括国际字符支持)是通过使用额外的目录条目槽来保存长文件名和保存所有其余文件属性的原始8.3槽来完成的。

磁盘上的每个文件都存储在一系列集群中,其中每个集群都是固定数量的相邻磁盘块。每个目录(磁盘的根目录除外)就像一个文件,可以根据需要通过分配额外的集群来增长。

集群由(命名错误的)文件分配表管理,文件系统从该表中获取其公用名。这个表是一个压缩的插槽数组,磁盘分区中每个集群一个。名称fat12意味着每个插槽都是12位宽,fat16插槽是16位,fat32插槽是32位。插槽存储空簇、最后簇和坏簇的代码值,或者文件的下一个簇的簇号。通过这种方式,文件的实际内容表示为称为链的集群的链接列表。

更大的磁盘需要更宽的FAT条目和/或更大的分配单元。fat12基本上只能在软盘上找到,其中4K簇的上限对于大小从未超过1MB的介质是有意义的。FAT16和FAT32都常见于U盘和闪存卡上。脂肪大小的选择部分取决于预期用途。

对特定文件内容的访问非常简单。从它的目录条目中,您可以了解它的总大小(以字节为单位)和它的第一个集群编号。从集群编号中,您可以立即计算第一个逻辑磁盘块的地址。从按集群编号索引的FAT中,可以找到分配给该文件的链中的每个已分配集群。

发现适合存储新文件或扩展现有文件的可用空间并不是那么容易。FAT文件系统只是用代码值标记自由集群。找到一个或多个自由簇需要搜索脂肪。

查找文件的目录条目也不是很快,因为目录没有排序,需要在目录中线性时间搜索所需的文件。请注意,长文件名通过占用每个长文件的多个目录条目来增加搜索时间。

FAT的优势仍然在于,它的实现非常简单,可以在小型微处理器中完成,因此即使是小型嵌入式系统和PC机之间的数据交换也可以以经济有效的方式完成。我怀疑它的怪癖和奇怪之处会长期伴随着我们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值