Лекция: Управление вводом-выводом и прерываниями

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

В [LIED96a] предлагается рассматривать аппаратное обеспечение как набор потоков, которые обладают уникальными идентификаторами и отправляют со­общения (содержащие только идентификатор данного потока) соответствующим программным потокам в пользовательском пространстве. Поток-получатель вы­ясняет, является ли данное сообщение прерыванием, а также определяет вид этого прерывания. Общая структура такого кода, выполняющегося на пользова­тельском уровне, имеет следующий вид:

 

driver thread;

do

waitFor (msg, sender);

if (sender== обрабатываемое_прерывание)

{

чтение/запись в порты ввода-вывода;

сброс аппаратного прерывания

}

else…

while (true);

еще рефераты
Еще работы по информатике