Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСиСП теория 4 семестра - методичка слайдов Бранцевич Петр Юльянович 2009.doc
Скачиваний:
160
Добавлен:
15.06.2014
Размер:
1.75 Mб
Скачать

5.2.4 Функции микроядра.

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

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

Считается, что в микроядре можно оставить только 3 операции для поддержки внешних систем страничной организации памяти и управления внешней памятью.

Предоставление. Процесс, который владеет адресным пространством, может предоставлять некоторые свои страницы другому процессу. Ядро удаляет эти страницы из адресного пространства первого процесса и передаёт их второму процессу.

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

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

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

2. Взаимодействие между процессами. Основной формой взаимодействия между процессами (потоками) являются сообщения. Сообщения включают в себя заголовок, в котором указаны идентификаторы процесса отправителя и процесса получателя, а также указатель на блок данных и некоторые управляющие сведения о процессе.

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

Если адресное пространство в процессах не перекрывается, то передача сообщения от одного процесса другому – это копирование одной области памяти в другую.

3. Управление вводом-выводом и прерываниями. В микроядре имеется возможность обрабатывать аппаратные прерывания подобно сообщениям и включать в адресное пространство порта ввода-вывода, но не обрабатывает их. Микроядро распознает прерывания, но само не обрабатывает их. Оно генерирует сообщение процессу, работающему на пользовательском уровне и связанному с данным прерыванием, т. е. ядро преобразует прерывание в сообщение, но само в обработке аппаратно-зависимых прерываний не участвует.

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