link140 link141 link142 link143 link144 link145 link146 link147 link148 link149 link150 link151 link152 link153 link154 link155 link156 link157 link158 link159 link160 link161 link162 link163 link164 link165 link166 link167 link168 link169 link170 link171 link172 link173 link174 link175 link176 link177 link178 link179 link180 link181 link182 link183 link184 link185 link186 link187 link188 link189 link190 link191 link192 link193 link194 link195 link196 link197 link198 link199 link200 link201 link202 link203 link204 link205 link206 link207 link208 link209 link210 link211 link212 link213 link214 link215 link216 link217 link218 link219 link220 link221 link222 link223 link224 link225 link226 link227 link228 link229 link230 link231 link232 link233 link234 link235 link236 link237 link238 link239 link240 link241 link242 link243 link244 link245 link246 link247 link248 link249 link250 link251 link252 link253 link254 link255 link256 link257 link258 link259 link260 link261 link262 link263 link264 link265 link266 link267 link268 link269 link270 link271 link272 link273 link274 link275 link276 link277 link278 link279

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

Ввод-вывод

Ввод-вывод

Четвёртое. ICW4 — дополнительные особенности обработки прерываний

Этот приказ (см. таблицу ниже) определяет дополнительные особенности обработки прерываний контроллером i8259А. Данный приказ посылается в порт 21h.

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

Программные прерывания

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

Особенности вызова-возврата при прерывании:

1) сохранение большей части контекста, чем при выполнении call,
2) хранение адреса перехода в определенном месте (в векторе прерывания).

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

В системах команд многих процессоров есть команда (команды) программных прерываний (software interrupt), позволяющие запустить механизм прерывания программно. Чаще всего для таких команд используются мнемоники int (от interrupt — прерывание) или trap (англ. ловушка). Команда обычно имеет один параметр, указывающий номер прерывания (т.е. фактически задающей адрес вектора — местоположение ячеек, хранящих адрес перехода на соответствующую подпрограмму).

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

Пятое. OCW1 — управление регистром масок IMR

Этот приказ (см. таблицу ниже) предназначен для управления регистром масок IMR для маскирования прерываний конкретных уровней. Данный приказ посылается в порт 21h.

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

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

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

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

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

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

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

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

Шестое. OCW2 — управление приоритетом

Этот приказ (см. таблицу ниже) используется для управления приоритетом и учета особенностей завершения обслуживания прерывания в контроллере. Он определяет выполнение следующих действий:

  • сбросить бит в ISR с наибольшим приоритетом;
  • сбросить бит в ISR для определенного уровня прерываний;
  • установить низший приоритет для определенного уровня;
  • поменять приоритеты уровней с максимальным и минимальным приоритетами;
  • поменять приоритеты уровней с заданным и минимальным приоритетами.

Данный приказ посылается в порт 20h.

Подкатегории