gpt4 book ai didi

c - FAT 文件系统中的内存转换是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-04 07:12:49 28 4
gpt4 key购买 nike

我需要用 C 创建我自己的文件系统实现。我正计划创建一个类似于 FAT 系统的系统。我们得到一个大小为 10MB 的文件,它充当我们自己的“磁盘”。我知道 FAT 表存储簇号,根目录存储我们创建的每个文件的其他相关信息(例如文件名、大小、上次修改的日期和时间、FAT 中的起始 block 等)。但是我对如何将簇号转换为磁盘数据区域中的物理地址感到困惑。

例如,假设根目录中的一个条目表示文件从 FAT 表的 block 100 开始,在 FAT 表的 block 100 中是整数 327,这是文件的下一个簇所在的位置位于。这些地址如何转换为磁盘数据区域中的物理地址?这些物理地址在哪里翻译和存储?

最佳答案

簇的大小在不同版本的 FAT(FAT12、FAT16 和 FAT32)之间有所不同,但通常簇号指向一个连续编号的簇,无论其大小以现有文件系统的格式存在。我记得(很久以前)FAT12,至少在硬盘上,使用了 2 kibibyte 簇(每个簇由四个 512 字节的扇区组成),最大簇数为 2^11(12 位从零开始),所以簇 327 将从磁盘数据区开始算起 327 * 2048 字节。

数据区包括FAT、备份FAT和所有目录。我的记忆是,FAT 中的每个簇条目都包含一个指向文件中占据该簇的下一个簇的指针、数据长度(如果它是文件的最后一个簇)以及读取或写入文件所需的其他一些信息,而目录条目包含文件名、第一个簇、大小/日期/等。

关于c - FAT 文件系统中的内存转换是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27050002/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com