Низкоуровневое управление памятью


Чтобы в микроядре можно было реализовать защиту на уровне процессов, в нем должен обеспечиваться контроль над аппаратной концепцией адресного пространства. Если микроядро будет отвечать за отображение каждой вирту­альной страницы в физический страничный блок, то блок управления памя­тью, включая систему защиты адресного пространства одного процесса от дру­гого, а также алгоритм замены страниц и другие логические схемы страничной организации памяти, можно реализовать вне ядра. Например, вынесенный за пределы ядра модуль виртуальной памяти принимает решение, когда загружать страницу в память и какую из тех страниц, которые уже содержатся в памяти, следует заменить. Микроядро отображает ссылки на эти страницы в физические адреса основной памяти.

Впервые идея о том, что системы страничной организации памяти и управ­ления виртуальной памятью можно вынести за пределы ядра, появилась вместе с- внешней системой страничной организации операционной системы Mach [YOUN87]. Принцип работы этой системы поясняется на рис. 4.11. Когда поток приложения обращается к странице, которая отсутствует в основной памяти, возникает прерывание из-за отсутствия страницы, и управление перехватывается ядром. После этого ядро отправляет системе страничной организации сообщение, в котором указывается запрашиваемая страница. Система страничной организа­ции может принять решение загрузить данную страницу и выделить для этого страничный блок. Система страничной организации и ядро должны взаимодей­ствовать между собой, чтобы логические операции, которые происходят в этой системе, отображались в физическую память. Как только нужная страница ста­нет доступна, система страничной организации отправляет приложению сообще­ние о том, что оно может продолжить работу.

Такая технология позволяет внешнему по отношению к ядру процессу ото­бражать файлы и базы данных в пользовательские адресные пространства без участия ядра. Вне ядра можно реализовать специализированные стратегии раз­деления памяти.

В [LIED95] предлагается оставить в микроядре набор, состоящий всего из трех операций, которые способны поддерживать внешние системы страничной организации памяти и управления внешней памятью. В этот набор входят сле­дующие операции.

• Предоставление (grant). Владелец адресного пространства (процесс) может предоставлять некоторые свои страницы другому процессу. Ядро удаляет эти страницы из адресного пространства первого процесса и передает их второму процессу.

• Отображение (mар). Процесс может отображать любые свои страницы в ад­ресное пространство другого процесса, после чего оба процесса будут иметь доступ к этим страницам. При этом создается общая область памяти, совме­стно используемая двумя процессами. Ядро не меняет информацию о принадлежности первоначальному процессу-владельцу, но при этом выполняет отображение, предоставляющее другому процессу доступ к этим страницам.

• Восстановление (flush). Процесс может восстановить любые страницы, предос­тавленные другим процессам или отображенные в их адресное пространство.

Вначале ядро определяет всю физическую память как единое адресное про­странство, которым управляет основной системный процесс. При создании но­вых процессов страницы первоначального общего адресного пространства могут передаваться или отображаться в эти новые процессы. Такая схема позволяет одновременно поддерживать несколько схем организации виртуальной памяти.

 



Дата добавления: 2016-06-05; просмотров: 1854;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.