Передо мной нет книги, но я подозреваю, что цитируемое предложение на самом деле не говорит о файлах, каталогах или других структурах файловой системы. (Обратите внимание, что раздел, как правило, не является концепцией файловой системы). Я думаю, что ваше цитируемое предложение на самом деле просто указывает на то, как структуры данных, хранящиеся в дисковых блоках, связаны друг с другом. Это означает только то, что сказано. Каждый блок (обычно 4 КБ, но, может быть, всего 512 В) выглядит примерно так:
+------------------+------------- . . . . --------------+
| next blk pointer | another 4k - 4 or 8 bytes of stuff |
+------------------+------------- . . . . --------------+
Материал после указателя следующего блока зависит от того, что хранится в этом конкретном блоке. Только из приведенного предложения я не могу сказать, как код вычисляет это.
Что касается структур файловой системы:
- A disk - это массив секторов , почти всегда размером 512B. Внутри диски изготовлены из пластин , представляющих собой вращающиеся дискообразные элементы, покрытые ржавчиной, и каждый диск разделен на множество концентрических дорожек . Однако эти детали полностью скрыты от операционной системы аппаратным интерфейсом диска ATA или SCSI.
- Операционная система делит массив секторов на разделов . Разделы - это смежные диапазоны секторов, и разделы не перекрываются. (На самом деле это разрешено в некоторых операционных системах, но думать об этом просто запутанно.)
- Итак, раздел также является массивом секторов .
Пока что файловой системы на самом деле нет. Большинство файловых систем построены внутри раздела. Файловая система обычно имеет следующие понятия. (Я использую имена из традиции Unix, но другие операционные системы будут иметь аналогичные идеи.)
В некотором фиксированном месте раздела находится суперблок . Суперблок является корнем всех структур данных файловой системы и содержит достаточно информации, чтобы указывать на все другие объекты. (На самом деле, как правило, существует несколько суперблоков, разбросанных по разделу как простая форма отказоустойчивости.)
Фундаментальная концепция файловой системы - это inode , называемый «глаз-узел». Иноды представляют различные типы объектов, составляющих файловую систему, наиболее важными из которых являются простые файлы и каталоги. Инод может быть отдельным блоком, но некоторые файловые системы упаковывают несколько инодов в один блок. Иноды могут указывать на набор блоков данных , которые составляют фактическое содержимое файла или каталога. Как блоки данных для файла организованы и проиндексированы на диске - одна из ключевых задач файловой системы. Для каталога блоки данных содержат информацию о файлах и подкаталогах, содержащихся в каталоге, а для простого файла блоки данных содержат содержимое файла.
Блоки данных - это основная масса блоков в разделе. Некоторые из них выделены для различных inode (например, для каталогов и файлов), а другие являются бесплатными. Другой ключевой задачей файловой системы является выделение свободных блоков данных при записи данных в файлы и освобождение блоков данных из файлов при их усечении или удалении.
Существует множество вариантов всех этих концепций, и я уверен, что существуют файловые системы, в которых то, что я сказал выше, не очень хорошо согласуется с реальностью. Однако с учетом вышесказанного вы должны быть в состоянии рассуждать о том, как файловые системы выполняют свою работу, и хотя бы немного понимать различия, с которыми вы сталкиваетесь в любой конкретной файловой системе.