#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, разрешения и т.д. Хорошо, когда большое количество небольших файлов требует много места, это может стоить много памяти в начале диска.