Домофон с замком выгодная цена на видеодомофон с замком. https://pokrasote.com.
Существует много ситуаций, когда требуется синхронизация выполнения программы с внешним событием. Такие ситуации возникают, прежде всего, при обмене данными с периферийными устройствами, в частности, с устройствами ввода-вывода.
!Примеры:
• Прежде, чем прочитать принятый байт из регистра данных COM- порта, программа должна убедиться, что процесс приема байта завершился. • При выводе данных на принтер программа печати должна проверить, что предыдущая порция данных напечатана (печать происходит довольно долго) и принтер способен принять новую порцию. • При считывании данных с диска сектор аппаратно (гораздо медленнее, чем способен оттуда читать процессор) читается в буфер контроллера, программа должна "узнать", что буфер заполнен, прежде чем читать оттуда.В многозадачной операционной среде одна из выполняемых программ может ожидать данных, подготавливаемых другой программой. В этом случае требуется синхронизация продолжения первой программы с завершением второй. Хотя обе программы работают на одном процессоре под одной ОС, они могут ничего не "знать" друг о друге. В этом случае событие, состоящее в завершении программы, ничем не отличается для программы1 от внешнего события.
Возможны другие (обратные) ситуации, когда наоборот, при наступлении события нельзя продолжать выполнение текущей программы.
!Примеры: • Произошло деление на нуль, и следующую операцию, которая должна использовать результат деления, выполнить невозможно. •Пользователь нажал Ctrl-Break, и выполнять программу дальше не следует.Общим в приведенных примерах является то, что в определенные моменты программа должна прореагировать на некоторое событие, причем, во всех приведенных примерах реакция есть передача управления по условию наступления внешнего события.
Рассмотрим далее, каким образом программа может "узнать" о наступлении события.
Перечислим способы синхронизации:
Простейший способ, программный опрос готовности (polling) схематично представлен на рисунке (см. рисунок ниже).
Опрос готовности состоит чаще всего в анализе состояния определенных битов в регистре статуса (состояния): при достижении состояния готовности к обмену ВНУ устанавливает этот (эти) бит(ы) в определенное состояние. Обмен с ВНУ состоит в чтении или записи в регистр данных.
Так, если приемник последовательного интерфейса принял извне байт, автоматически устанавливается флаг готовности — младший байт в порте 03FDh. Фрагмент программы, ожидаю-щий приема байта, может выглядеть так:
Недостаток: при ожидании готовности нерационально расходуется время процессора. Можно опрашивать не постоянно, а периодически, при этом появляется задержка реакции на готовность. Поэтому был разработан механизм прерывания.
Примечание: Термин “прерывание” в русскоязычной компьютерной литературе многозначен и употребляется для обозначения трех различных вещей.В англоязычной литературе используются три разных термина:
Будем далее называть подпрограмму, обрабатывающую факт наступления события, обработчиком прерывания (interrupt handler или exception handler).
Термин “обработка прерывания” может использоваться для обозначений двух различных вещей: