Низкоуровневое управление памятью
Чтобы в микроядре можно было реализовать защиту на уровне процессов, в нем должен обеспечиваться контроль над аппаратной концепцией адресного пространства. Если микроядро будет отвечать за отображение каждой виртуальной страницы в физический страничный блок, то блок управления памятью, включая систему защиты адресного пространства одного процесса от другого, а также алгоритм замены страниц и другие логические схемы страничной организации памяти, можно реализовать вне ядра. Например, вынесенный за пределы ядра модуль виртуальной памяти принимает решение, когда загружать страницу в память и какую из тех страниц, которые уже содержатся в памяти, следует заменить. Микроядро отображает ссылки на эти страницы в физические адреса основной памяти.
Впервые идея о том, что системы страничной организации памяти и управления виртуальной памятью можно вынести за пределы ядра, появилась вместе с- внешней системой страничной организации операционной системы Mach [YOUN87]. Принцип работы этой системы поясняется на рис. 4.11. Когда поток приложения обращается к странице, которая отсутствует в основной памяти, возникает прерывание из-за отсутствия страницы, и управление перехватывается ядром. После этого ядро отправляет системе страничной организации сообщение, в котором указывается запрашиваемая страница. Система страничной организации может принять решение загрузить данную страницу и выделить для этого страничный блок. Система страничной организации и ядро должны взаимодействовать между собой, чтобы логические операции, которые происходят в этой системе, отображались в физическую память. Как только нужная страница станет доступна, система страничной организации отправляет приложению сообщение о том, что оно может продолжить работу.
Такая технология позволяет внешнему по отношению к ядру процессу отображать файлы и базы данных в пользовательские адресные пространства без участия ядра. Вне ядра можно реализовать специализированные стратегии разделения памяти.
В [LIED95] предлагается оставить в микроядре набор, состоящий всего из трех операций, которые способны поддерживать внешние системы страничной организации памяти и управления внешней памятью. В этот набор входят следующие операции.
• Предоставление (grant). Владелец адресного пространства (процесс) может предоставлять некоторые свои страницы другому процессу. Ядро удаляет эти страницы из адресного пространства первого процесса и передает их второму процессу.
• Отображение (mар). Процесс может отображать любые свои страницы в адресное пространство другого процесса, после чего оба процесса будут иметь доступ к этим страницам. При этом создается общая область памяти, совместно используемая двумя процессами. Ядро не меняет информацию о принадлежности первоначальному процессу-владельцу, но при этом выполняет отображение, предоставляющее другому процессу доступ к этим страницам.
• Восстановление (flush). Процесс может восстановить любые страницы, предоставленные другим процессам или отображенные в их адресное пространство.
Вначале ядро определяет всю физическую память как единое адресное пространство, которым управляет основной системный процесс. При создании новых процессов страницы первоначального общего адресного пространства могут передаваться или отображаться в эти новые процессы. Такая схема позволяет одновременно поддерживать несколько схем организации виртуальной памяти.
Дата добавления: 2016-06-05; просмотров: 1943;