Обход индекса, чтобы найти содержимое файла, хранящегося в разных блоках данных
Я читаю о файловой системе EXT2, и я получил представление об этом. Каждая файловая система состоит из данных и метаданных (inode). Файловая система разделена на несколько блоков с 4 основными блоками, содержащими информацию о других блоках.
Как происходит взаимодействие, если мы пытаемся открыть файл из пространства пользователя?
Когда пользователь вызывает open()
syscall, как файл находится через номер инода и как идентифицируется содержимое, сохраненное в следующем блоке?
open()
звонки sys_open()
который в свою очередь называет do_path_search()
Функция поиска номера индекса с именем файла. Он получает номер индекса, который содержит адрес блоков данных, просматривая таблицу номеров индексов.
- Как он ищет оставшийся непрерывный блок?
- Как он определяет, какую файловую систему нужно искать, чтобы получить правильный файл?
- Как файловая структура поддерживается несколькими процессами, обращающимися к одному и тому же файлу?