init commit
This commit is contained in:
Executable
+42
@@ -0,0 +1,42 @@
|
||||
Сколько раз система обратится к содержимому индексных дескрипторов при вызове: open("/dir1/dir2/dir3/file", O_RDONLY)?
|
||||
Прокомментировать, почему? Считаем, что ни один из элементов пути к файлу не является символической ссылкой. (Вес задачи: 1 балл)
|
||||
|
||||
$$ Answer:
|
||||
1) система будет последовательно пробегать по каждому из каталогов.
|
||||
1) будет искать, есть ли файл в каталоге.
|
||||
2) будет проверять, является ли сам файл каталогом.
|
||||
|
||||
2) сначала корень. ищем в нём dir1.<#> Первое обращение. Проверяем dir1 на каталог.<#> Второе обращение
|
||||
find dir2 in dir1.<#> dir2 is dir?<#>
|
||||
find dir3 in dir2.<#> dir3 is dir?<#>
|
||||
find file in dir3.<#>
|
||||
|
||||
=> всего нам надо 7 обращений к содержимому индексных дескрипторов
|
||||
|
||||
|
||||
$$ Ответ GPT:
|
||||
При вызове open("/dir1/dir2/dir3/file", O_RDONLY) система обращается к индексным дескрипторам (inode) для каждого элемента пути.
|
||||
|
||||
Основные этапы:
|
||||
|
||||
Корневая директория /:
|
||||
Первое обращение к индексному дескриптору (inode) — система обращается к inode корневого каталога /.
|
||||
|
||||
Директория dir1:
|
||||
Второе обращение — система читает содержимое inode корневого каталога и ищет запись для dir1, после чего обращается к inode для dir1.
|
||||
|
||||
Директория dir2:
|
||||
Третье обращение — система читает inode для dir1, затем ищет в его содержимом запись о dir2 и обращается к соответствующему inode.
|
||||
|
||||
Директория dir3:
|
||||
Четвёртое обращение — система аналогично читает inode для dir2, находит запись для dir3 и обращается к inode для dir3.
|
||||
|
||||
Файл file:
|
||||
Пятое обращение — система читает inode для dir3, находит запись о файле file и обращается к inode для файла.
|
||||
|
||||
Итог:
|
||||
Таким образом, система обращается к содержимому индексных дескрипторов 5 раз (по количеству элементов пути /, dir1, dir2, dir3, file).
|
||||
|
||||
Почему:
|
||||
Каждая директория в Unix-подобных файловых системах представлена как файл каталога, содержащий список файлов и подкаталогов.
|
||||
Чтобы найти нужный файл, система последовательно открывает каждый inode, пока не доберётся до конечного файла.
|
||||
Reference in New Issue
Block a user