Ввод-вывод

Способы синхронизации: программный опрос готовности

Перечислим способы синхронизации:

  1. Программный безусловный обмен;
  2. Программный опрос готовности;
  3. Прерывание;
  4. Прямой доступ в память;
  5. Удлинение канального цикла ввода-вывода.

Простейший способ, программный опрос готовности (polling) схематично представлен на рисунке (см. рисунок ниже).

 

Опрос готовности состоит чаще всего в анализе состояния определенных битов в регистре статуса (состояния): при достижении состояния готовности к обмену ВНУ устанавливает этот (эти) бит(ы) в определенное состояние. Обмен с ВНУ состоит в чтении или записи в регистр данных.

Так, если приемник последовательного интерфейса принял извне байт, автоматически устанавливается флаг готовности - младший байт в порте 03FDh. Фрагмент программы, ожидаю-щий приема байта, может выглядеть так:

 

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

Примечание:
 
Термин “прерывание” в русскоязычной компьютерной литературе многозначен и употребляется для обозначения трех различных вещей.

В англоязычной литературе используются три разных термина:

  • hardware interrupt - аппаратное прерывание;
  • exсeption - исключение, прерывание по исключительной (экстраординарной) внутренней ситуации;
  • software interrupt - программное прерывание.

 

 

 

 

 

Будем далее называть подпрограмму, обрабатывающую факт наступления события, обработчиком прерывания (interrupt handler или exception handler).

Термин “обработка прерывания” может использоваться для обозначений двух различных вещей:

  1. действия, которые автоматически выполняет процессор при возникновении запроса, они реализованы аппаратно;
  2. действия, которые выполняет программа-обработчик прерывания (handler). Мы будем использовать термин “обработка прерывания” только во втором смысле, а для первой группы действий будем использовать термин “вход в прерывание”.
Яндекс.Метрика