Преимущества виртуальной памяти при создании процессов
Благодаря механизму виртуальной памяти, могут быть использованы следующие оптимизации расходования памяти при создании процессов:
· Копирование по записи (Copy-on-Write)
· Отображение файлов в память (Memory-Mapped Files).
Принцип совместного использования страниц процессами (или копирование по записи - Copy-On-Write, COW) позволяет первоначально родительскому и дочернему процессам использовать одни и те же страницы памяти. Если какой-либо процесс модифицирует разделяемую страницу, то только в этом случае данная страница копируется. Принцип COW обеспечивает более эффективное создание процесса, так как копируются только модифицируемые страницы. Свободные страницы распределяются из списка страниц, инициализированных нулями.
Использование при вводе-выводе файлов, отображаемых в память, позволяет рассматривать файловый ввод-вывод как обычное обращение к памяти путем отображения блока на диске в страницу памяти.
Первоначально файл читается с использованием запроса страниц по требованию. Часть файла размером с одну страницу читается из файла в физическую страницу (фрейм). Последующие чтения из файла и записи вфайл трактуются как обычные обращения к памяти. Это упрощает доступ к файлу, по сравнению с системными вызовами read() и write(). Это позволяет также нескольким процессам отображать в память один и тот жефайл, по тому же принципу, как они совместно используют какие-либо страницы.
На рис. 5 иллюстрируется концепция файла, отображаемого в память.
Рис. 5.Файлы, отображаемые в память.
Процессы Aи Bсовместно используют файл, причем каждому блоку файла соответствует страница в памяти. Эти страницы имеют одни и те же номера в таблицах страниц виртуальной памяти процессов. Страницы, присутствующие в памяти, фактически являются частями файла, обрабатываемого при вводе-выводе, благодаря этому, гораздо быстрее, чем обычный файл. По окончании обмена, при закрытии файла, система записывает все его измененные части на диск.
Подобный механизм имеется в большинстве операционных систем. Например, в системе Solaris он реализуется командой и системным вызовом mmap (memory map).
Дата добавления: 2016-03-15; просмотров: 834;