文件系统如何从字节/位识别“文件”?


0

不确定是否离题,但我相信文件系统的工作是识别位/字节的块并将其称为“文件”,只是为了更方便地更好地访问数据并打包为一个单元,而不是没有命令的触发器国家海洋。但是,这是如何完成的呢?文件系统(有问题的文件系统)是否映射或保留数据开始/数据结束之间的偏移量引用,是否将标识符用于检查地址或其他内容等?我具有编程知识,但是这个低迷的概念肯定使我感到困惑。我知道大多数文件系统都是用HLL编写的(例如C,C ++,D等),但是在最低级别上,它们到底是如何精确地跟踪从文件“ A”的扇区/块1一直到最后一个范围?


1
从FAT / MFT /超级块开始。从那里工作。
Ignacio Vazquez-Abrams'2

Answers:


0

硬盘以512或4k字节数据簇的形式排列。这些群集中的每一个都称为一个块。

在最低级别,操作系统将发出命令,例如从块4读取或写入块11。SATA规范准确定义了这些命令的工作方式以及应该使用哪些命令。这些低级命令被抽象为与文件系统接口的高级命令。

文件系统提供文件到磁盘块的映射。一个非常基本的文件系统(如MS-DOS FS)将从具有分区表(在块0,“超级块”)开始,该分区表允许您在物理磁盘顶部定义逻辑磁盘。然后,每个逻辑磁盘将从定义目录的单个条目开始。这些目录条目中的每一个都将包含文件列表,并且哪些块指向该文件。

对于每个文件,第一个块将是元数据结构,该结构定义文件的内容(文件,目录,链接或其他内容),文件的大小,访问权限是什么以及块的列表文件数据所在的位置。


0

文件系统无法识别文件。相反,他们定义了什么

从一个空磁盘开始,并要求文件系统在此处创建文件。它会:

  1. 确定您的文件名和/或路径语法是否正确
  2. 确定目录结构在文件中的逻辑位置
  3. 确定该位置是否已经存在另一个同名文件,如果存在,则要覆盖它,附加到该文件还是返回错误。
  4. 在文件系统元数据中创建一个或多个条目,指示该文件位于所需的父目录中
  5. 为组成文件的字节分配磁盘空间
  6. 将文件的字节写入分配的磁盘空间
  7. 更改元数据以指示文件所有块的位置,并说出EOF所在的位置(如果它是顺序文件)。

除了首先创建的相同数据结构外,所有这些都不需要文件系统“识别”任何东西。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.