Компьютер и внешние события
Компьютер и внешние события
Мы ждали его слишком долго. Что может бытьглупее, чем ждать? Б. Гребенщиков |
Практически все функции современных вычислительных систем так или иначе
сводятся к обработке внешних событий. Единственная категория приложений,
для которых внешние события совершенно неактуальны — это так называемые
пакетные приложения, чаще всего — вычислительные задачи. Доля таких задач в общем объеме компьютерных приложений в наше время невелика и постоянно
падает. В остальных же случаях, даже если не вспоминать о специализированных
управляющих компьютерах, серверы обрабатывают внешние по отношению к ним
запросы клиентов, а персональный компьютер — реагирует на действия пользователя.
Различие между управляющими системами (приложениями реального времени) и системами общего назначения (термин — система разделенного времени вышел из употребления и не всегда точно отражает суть дела) состоит лишь в том, что первые должны обеспечивать гарантированное время реакции на событие, в то время как вторые "всего лишь" — предоставить хорошее среднее время такой реакции и/или обработку большого количества событий в секунду.
Примечание
Примечание
Время обработки одного события и количество событий, обрабатываемых в
единицу времени, далеко не всегда являются жестко взаимосвязанными — ведь при многопоточной обработке система может обрабатывать несколько событий параллельно.
Единственный способ, которым фон-неймановский компьютер может отреагировать
на что бы то ни было — это исполнить программу, последовательность команд.
В случае внешнего события, естественным решением кажется предоставить
команду условного перехода, условием которого является признак события.
В системах команд микроконтроллеров частореализуют именно такие переходы (см. например табл. 2.2). В качестве признака события в этом случае используется значение одного из битов специального регистра, биты которого соответствуют входам микросхемы контроллера. Бит равен единице, если на соответствующий вход подано высокое напряжение, и нулю — если низкое.
Наличие таких команд полезно, но решает проблему не полностью: да, сели событие произошло, мы моыжем вызвать программу и осуществить реакцию но что мы будем делать, если его еще не происходило?