PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Ввод-вывод

Действия, которые должен выполнить программист, чтобы прерывание было работоспособным

В дальнейшем описании предполагается, что используется "свободное" прерывание.

1. Если используется аппаратное прерывание, предусмотреть соединение источника запроса с одним из свободных входов запроса. Вход надо выбирать с учетом требуемого приоритета добавляемого прерывания и возможностей контроллера прерываний по управлению приоритетами. Если используется программное прерывание, надо убедиться, что выбранный вектор свободен.

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

3. Занести начальный адрес обработчика в ячейки вектора для выбранного прерывания. Это лучше делать явными присваиваниями в инициализирующей части Вашей программы.

4. Настроить контроллер прерываний на нужный режим: задать приоритет выбранного входа, задать форму сигнала запроса (для аппаратного прерывания).

5. Разрешить запрос прерывания от выбранного источника (для аппаратного прерывания).

6. Разрешить прерывания процессору.