Работа в режиме прерываний
Недостаток режима опроса заключается в том, что задача не узнает об
изменении состояния мыши до тех пор, пока не обратится к драйверу. В некоторых
случаях этот недостаток имеет принципиальное значение, и программист вынужден
использовать режим прерываний.
В данном разделе нас будут интересовать те прерывания процесса выполнения
задачи, которые вызывает драйвер при изменениях состояния манипулятора
"мышь". Задача может разрешить или запретить драйверу прерывать
процесс своего выполнения в указанных случаях. Если прерывания разрешены,
то момент их возникновения зависит только от действий оператора, работающего
с мышью, и никак не связан с действиями, выполняемыми задачей. То есть,
как обычно, прерывания происходят по внешним, не зависящим от задачи,
причинам.
Указанная особенность режима прерываний требует от программиста определенных
навыков и тщательной разработки алгоритма задачи. Кроме внутренних факторов,
влияющих на выполнение предусмотренных в задаче действий, приходится учитывать
и внешние, а это может существенно изменить конкретную реализацию алгоритма.
Мы обсудим этот вопрос на примере работы с курсором в режиме прерываний.
Состояние мыши изменяется не так уж часто, даже если она активно используется
оператором. При программировании для режима прерываний, рано или поздно,
но вам придется решать, чем занять задачу в паузах между изменениями состояния
мыши. Если нет другого занятия, то организуется цикл ожидания действий
оператора, а для этого предназначен управляющий алгоритм, описанный в
разделе. Таким образом, режимы прерываний и
опроса не исключают, а дополняют друг друга.
|