Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В архитектуре микроядра имеется возможность обрабатывать аппаратные прерывания подобно сообщениям, а также включить в адресное пространство порты ввода-вывода. Такое микроядро может распознавать прерывания, но не обрабатывает их. Вместо этого оно генерирует сообщение процессу, функционирующему на пользовательском уровне и связанному с данным прерыванием. Таким образом, когда прерывание разрешено, с ним сопоставляется процесс на пользовательском уровне, и такое отображение поддерживается ядром. Преобразование прерываний в сообщения должно выполняться микроядром, однако ядро не принимает участия в обработке аппаратно-зависимых прерываний.
В [LIED96a] предлагается рассматривать аппаратное обеспечение как набор потоков, которые обладают уникальными идентификаторами и отправляют сообщения (содержащие только идентификатор данного потока) соответствующим программным потокам в пользовательском пространстве. Поток-получатель выясняет, является ли данное сообщение прерыванием, а также определяет вид этого прерывания. Общая структура такого кода, выполняющегося на пользовательском уровне, имеет следующий вид:
driver thread;
do
waitFor (msg, sender);
if (sender== обрабатываемое_прерывание)
{
чтение/запись в порты ввода-вывода;
сброс аппаратного прерывания
}
else…
while (true);
Дата публикования: 2014-11-04; Прочитано: 201 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!