Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АОПИ. Старое / АОПИ. Глава 3. Конспекты (06_06_19).rtf
Скачиваний:
62
Добавлен:
10.09.2019
Размер:
201.15 Кб
Скачать

§4. Прием задач с помощью прерываний

При приеме задач используются аппаратные и программные прерывания.

Прерывание — это сигнал события, который генерируется устройством внешним по отношению к процессору, и требует соответствующей реакции.

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

Аппаратное прерывание — это асинхронное (независимое) событие по отношению к задаче, которая выполняется процессором в данный момент, т. е. создается или возникает независимо от текущей задачи.

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

Получив сигнал прерывания, процессор приостанавливает исполнение активной задачи, сохраняя в стеке её контекст. Дальше он считывает из таблицы адрес обработчика прерывания и передает ему управление.

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

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

Кроме того, предусмотрен механизм исключения.

Исключение — событие, возникающее в результате попытки выполнения программы недопустимой команды, доступа к ресурсу при отсутствии достаточных привилегий или обращение к отсутствующей странице памяти.

Исключение, как и системные вызовы, являются синхронными событиями и делятся на исправимые и неисправимые.

К исправимым исключениям относятся такие ситуации, как отсутствие нужной информации в оперативной памяти. После устранения причины исправимого исключения программа может продолжить выполнение.

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

С каждым прерыванием связывается число, называемое номером типа прерывания (или просто номерам прерывания). К каждому номеру прерывания, которое приходит вместе с сигналом, соответствует определенное событие.

Система умеет распознавать, какое прерывание произошло, и запускает соответствующий этому номеру процедуру обработки.

Некоторые прерывания зарезервированы системой для использования самим процессором на случай возникновения особых событий (типа делений на 0 и т. д.). Иногда система делается нечувствительной к некоторым прерываниям с помощью механизма маскирования прерывания. При этом ряд прерываний не подлежат маскированию.

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

§5. Проблемы межзадачного взаимодействия

Синхронизация задач заключается в согласовании времени выполнения с помощью приостановки до наступления некоторого события и последующего запуска.

Синхронизация задач необходима, как правило, в следующих случаях:

1. Функции задач взаимосвязаны (например, одна задача готовит необходимые данные для другой).