Файловые системы — Файлы, отображенные в памяти

#memory #operating-system #virtual-memory #memory-mapped-files #virtual-address-space

#память #операционная система #виртуальная память #файлы, отображенные в памяти #виртуальное адресное пространство

Вопрос:

Пример последнего вопроса для моего класса операционных систем:

Большинство операционных систем поддерживают «файлы с отображением в памяти»; это описывает файлы, которые отображаются в адресное пространство запущенного процесса. Операции чтения и записи в файл преобразуются в операции чтения и записи в память. Мы можем представить существование двух новых системных вызовов, map() и unmap().

a) Рассмотрим функцию map(); она принимает имя файла и виртуальный адрес, заставляя операционную систему отображать файл в адресное пространство, начинающееся с виртуального адреса. Опишите, как система виртуальной памяти может использоваться для поддержки этого вызова.

б) Рассмотрим функцию unmap(); она отсоединяет файл от виртуального адресного пространства. Опишите статистику, которая должна быть взята для реализации этого системного вызова. Перечислите все ваши предположения.

c) Во многих системах UNIX индексы хранятся в начале диска. Альтернативный вариант заключается в выделении индекса при создании файла и размещении индекса в начале первого блока файла. Обсудите плюсы и минусы этой альтернативы.

d) Что произойдет, если растровое изображение или список свободных блоков, содержащий информацию о свободных блоках диска, будет полностью потерян из-за сбоя? Есть ли какие-либо способы восстановления после этой катастрофы, или диск больше не используется. Обсудите свой ответ по поводу распределения дисковых блоков в стиле UNIX и FAT.

Мы высоко ценим любую информацию для обсуждения этих вопросов.

Ответ №1:

для c) накладные расходы на извлечение каталога / файла и данных особенно актуальны при выделении памяти для нового файла, что приводит к поиску каждого индекса и получению их file_size, разрешения и т.д. Хорошо, когда большое количество небольших файлов требует много места, это может стоить много памяти в начале диска.