Индекс представляет собой
структуру данных, в которой
описываются атрибуты файла, в том
числе расположение информации
файла на диске. Существует две
разновидности индекса: копия на
диске, в которой хранится
информация индекса, пока файл
находится в работе, и копия в
памяти, где хранится информация об
активных файлах. Алгоритмы ialloc и ifree
управляют назначением файлу
дискового индекса во время
выполнения системных операций creat,
mknod, pipe и unlink (см. следующую главу), а
алгоритмы iget и iput управляют
выделением индексов в памяти в
момент обращения процесса к файлу.
Алгоритм bmap определяет
местонахождение дисковых блоков,
принадлежащих файлу, используя
предварительно заданное смещение в
байтах от начала файла. Каталоги
представляют собой файлы, которые
устанавливают соответствие между
компонентами имен файлов и
номерами индексов. Алгоритм namei
преобразует имена файлов, с
которыми работают процессы, в
идентификаторы индексов, с
которыми работает ядро. Наконец,
ядро управляет назначением файлу
новых дисковых блоков, используя
алгоритмы alloc и free. Структуры данных, рассмотренные в
настоящей главе, состоят из
связанных списков, хеш-очередей и
линейных массивов, и поэтому
алгоритмы, работающие с
рассмотренными структурами данных,
достаточно просты. Сложности
появляются тогда, когда возникает
конкуренция, вызываемая
взаимодействием алгоритмов между
собой, и некоторые из этих проблем
синхронизации рассмотрены в
тексте. Тем не менее, алгоритмы не
настолько детально разработаны и
могут служить иллюстрацией
простоты конструкции системы. Вышеописанные структуры и
алгоритмы работают внутри ядра и
невидимы для пользователя. С точки
зрения общей архитектуры системы (Рисунок 2.1),
алгоритмы, рассмотренные в данной
главе, имеют отношение к нижней
половине подсистемы управления
файлами. Следующая глава посвящена
разбору обращений к операционной
системе, обеспечивающих
функционирование
пользовательского интерфейса, и
описанию верхней половины
подсистемы управления файлами, из
которой вызывается выполнение
рассмотренных здесь алгоритмов. Предыдущая
глава || Оглавление
|| Следующая глава
4.9 ВЫВОДЫ