Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Управление виртуальной памятью в USIX
USIX поддерживает виртуальную организацию памяти, которая основана на концепции объектов памяти, регионов и сегментов. Каждый процесс состоит из ряда сегментов, отображаемых на регионы. Регион является фрагментом физической памяти, начинающейся с границы страницы и содержащей целое число страниц. В общем случае регион может быть распределен между оперативной памятью, пространством выгрузки и файлом на диске. Система управления памятью использует ряд структур данных, которые могут рассматриваться как массивы, оформленные в виде связных списков.
Физические страницы объединяются в следующие списки: Системные страницы — страницы, необходимые системе. Фиксированные страницы — страницы, которые зафиксированы в оперативной памяти за процессами и не могут быть выгружены. После освобождения эти страницы могут быть включены в списки чистых или модифицированных страниц или список страниц рабочего набора. Чистые страницы — страницы, которые имеют копии на диске и могут выделяться процессам, так как не требуют их сохранения на диске. Модифицированные страницы — страницы, которые требуется сохранить на диске, так как перед освобождением этих страниц из рабочего набора они были модифицированы. Свободные страницы — страницы, доступные для распределения без всяких ограничений. После загрузки ядра все страницы, не занятые системой, являются свободными. Страницы рабочего набора — страницы физической памяти, распределенные (доступные) для некоторого процесса в текущий момент времени. Читаемые страницы — страницы, в данный момент читаемые с диска в оперативную память. Записываемые страницы — страницы, в данный момент записываемые из оперативной памяти на диске. Системная страница используется ядром и не управляется механизмом виртуальной памяти. Любая другая страница, не являющаяся свободной, принадлежит некоторому региону. При создании процесса ему, как правило, назначаются следующие регионы, связанные с соответствующими сегментами: · регион стека; · регион текста процесса; · регион данных процесса; · регионы текста и данных разделяемой системной библиотеки. Ни один из регионов при создании процесса, как правило, в оперативную память не считывается, а для процесса создаются таблицы сегментов, и управление передается на точку входа процесса. При попытке выполнения первой команды происходит прерывание по отсутствию страницы в рабочем наборе. Система управления виртуальной памятью находит сегмент, связанный с данным виртуальным адресом, регион, связанный с данным сегментом, и страницу в регионе. Требуемая страница может находиться: • в оперативной памяти, если она уже выделялась или считывалась для какого-либо процесса; •в файле на диске; •в файле выгрузки на диске, если она была выгружена в результате предыдущих действий системы. Если страница находится на диске, она будет загружена (прочитана) в память, включена в рабочий набор, и выполнение процесса продолжится. Таким образом, в памяти оказываются только страницы, действительно необходимые для текущего процесса. Страницы, доступные процессу в данный момент, образуют рабочий набор, отображение которого восстанавливается при переключении процессов. Размер рабочего набора является настраиваемой величиной и зависит от текущей рабочей нагрузки системы. Если некоторый процесс обращается к странице, не входящей в рабочий набор, и достигнут предел числа использованных страниц для процесса, то система управления памятью удаляет из рабочего набора страницу, к которой дольше других процесс не обращался, и загрузит новую. Новая страница загружается, если это возможно, из списка свободных или модифицированных страниц, ранее исключенных из текущего рабочего набора и находящихся еще в оперативной памяти, и только затем с диска. Можно провести некоторую аналогию в использовании кэшпамяти и рассматриваемых списков страниц. И тот, и другой механизм за счет временного сохранения данных в области, непосредственно доступной системе, позволяет повысить ее производительность. В обоих случаях эффективность в значительной мере зависит от размеров и активности процессов. Для исключения возможности быстрого исчерпания списков свободных и чистых страниц при обслуживании одного или нескольких процессов, характеризующихся большой частотой обмена страницами, система всегда пытается иметь доступным некоторое минимальное число физических страниц (LowWater). Когда процессу требуется физическая страница, система проверяет соотношение между числом доступных (суммой свободных и чистых) страниц и значением LowWater. Если соотношение позволяет выделить страницу, система пытается получить страницу из списка свободных страниц, а если он пуст, — из списка чистых страниц. Если число доступных страниц станет равным значению LowWater или меньше его, то система определяет страницу для выгрузки из оперативной памяти. Страница выбирается из списка модифицированных страниц и, если он пуст, из списка страниц рабочего набора. Каждая физическая страница в оперативной памяти имеет свой рейтинг, равный сумме приоритетов всех процессов, содержащих данную страницу в своем рабочем наборе. Система выбирает из списка рабочего набора страницу с наименьшим значением рейтинга. Изменяя значение LowWater, системный администратор может поддерживать наилучшее использование оперативной памяти для определенного состава процессов в соответствии с их активностью. Рассмотрим работу с разделяемыми страницами. Система управления виртуальной памятью обеспечивает режим работы «сору-оn-write» (копировать для записи) с разделяемыми страницами. Типичным примером разделения является наследование сегментов данных и стека порожденным процессом при системном вызове fork. В этом случае система не копирует данные сегменты, а процесс-отец и процесс-сын используют одни и те же страницы в оперативной памяти до тех пор, пока один из них не попытается смодифицировать какую-либо из этих страниц. В общем случае несколько процессов, разделяющих страницу, используют один экземпляр такой страницы в оперативной памяти. Система обеспечивает два варианта работы с разделяемой страницей: разделение и «сору-оn-write». Примером разделения является файл, отображенный в адресном пространстве нескольких процессов. Процессы производят всю коррекцию в единственной копии страницы оперативной памяти. Такие страницы не требуют места в области выгрузки и записываются только в файл на диске. Сегменты данных и стека являются примерами варианта «сору-оn-write». Когда один из процессов пытается записать страницу, система копирует разделяемую страницу в новую страницу, назначенную записывающему процессу. Остальные процессы продолжают использовать старый единственный экземпляр разделяемой страницы. Техника «сору-оn-write» позволяет использовать единственную копию страницы продолжительное время, чаще всего до завершения одного из процессов. После завершения процесса все его сегменты уничтожаются, а регионы освобождаются, но из памяти, как правило, не удаляются. Так как любой файл в USIХ представляет собой регион, это позволяет обеспечивать кэширование диска на уровне связанных с файлами объектов памяти, а не на уровне дисковых блоков. Поддержка процессов реального времени, требующих быстрой реакции на события, реализуется двумя алгоритмами. Первый алгоритм основан на возможности назначения приоритета процесса для всех страниц, используемых этим процессом. Это позволяет выгружать страницы в соответствии с их приоритетами. Другой алгоритм связан с возможностью для процессов реального времени требовать наличия в оперативной памяти всех своих страниц и запрещать их выгрузку из памяти. |
Последнее изменение этой страницы: 2019-04-21; Просмотров: 162; Нарушение авторского права страницы