Зачем читать мусорный индекс при создании файла ОС? - PullRequest
2 голосов
/ 30 января 2020

Я изучаю операционные системы из книги OSTEP. В главе, посвященной реализации файловых систем, есть временная шкала создания файла, которая отображает, какие операции выполняются с типом элементов файловой системы (inode, блоков данных, inode / data bitmaps и т. Д. c) при создании файла. На следующем рисунке показана временная шкала.

Временная шкала создания файла

Предположим, мы хотим создать файл bar в /foo/, поэтому файл будет /foo/bar. какие элементы данных будут доступны?
Я понял следующие шаги

(1) Начните чтение с root, до go до места, где мы хотим создать файл, поэтому сначала мы читаем индекс root, чтобы мы могли получить доступ к его блоку данных, чтобы найти номер индекса в каталоге foo.
(2) Считать из блока данных root номер индекса foo.
( 3) Теперь прочитайте из индекса foo, чтобы найти местоположение его блока данных.
(4) В блоке данных foo мы проверяем, есть ли файл с именем bar. Мы можем приступить к созданию, только если это не так, поскольку Linux не разрешает одинаковые имена файлов в одном каталоге.
(5) Предполагая, что мы можем продолжить, мы читаем из растрового изображения inode, чтобы найти, какой inode доступен для выделения.
(6) Затем мы распределяем этот инод, записывая в соответствующее местоположение растрового изображения обнаруженного выше инода.
(7) Затем мы делаем запись в foo для файла bar. Запись будет пара ('bar', <inode no of bar>). Итак, запись в foo.
(8) Теперь я застрял в этом чтении, выполненном в иноде bar. Зачем нам читать с этого инода?

Я думаю, что мы должны написать прямо в inode бара. Мы должны записать метаданные bar в этот индекс, верно? Тогда почему мы читаем, слышим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...