Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_ОПЕРАЦИОННЫЕ СИСТЕМЫ.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
642.56 Кб
Скачать

5. Компьютер и внешние события

Практически все функции современных вычислительных систем, так или иначе, сводятся к обработке внешних событий. Единственная категория приложений, для которых внешние события совершенно неактуальны — это так называемые пакетные приложения, чаще всего — вычислительные зада­чи. Доля таких задач в общем объеме компьютерных приложений в наше время невелика и постоянно падает. В остальных же случаях, даже если не вспоминать о специализированных управляющих компьютерах, серверы об­рабатывают внешние по отношению к ним запросы клиентов, а персональ­ный компьютер — реагирует на действия пользователя. Различие между управляющими системами (приложениями реального времени) и системами общего назначения состоит лишь в том, что первые должны обеспечивать гарантированное время реакции на событие, в то время как вторые "всего лишь" — предоставить хорошее среднее время такой реакции и/или обработку большого количества событий в секунду.

Примечание

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

Единственный способ, которым фон-неймановский компьютер может отреагировать, на что бы то ни было — это исполнить программу, последовательность команд. В случае внешнего события, естественным решением кажется предоставить команду условного перехода, условием которого является признак события. В системах команд микроконтроллеров часто реализуют именно такие переходы. В качестве признака события в этом случае используется значение одного из битов специального регистра, биты которого соответствуют входам микросхемы контроллера. Бит, равен единице, если на соответствующий вход подано высокое напряжение, и нулю – если низкое.

Следовательно

5.1. Опрос

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

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

5.2. Канальные процессоры и прямой доступ к памяти

Одно из решений состоит в том, чтобы завести отдельный процессор и по­ручить ему всю работу по опросу. Процессор, занимающийся только орга­низацией ввода-вывода, называют периферийным или канальным (channel).

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

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

Дополнительная сложность состоит в том, что, не предоставив вовремя следующее слово для записи, мы испортим весь процесс — эта проблема особенно серьезна на устройствах однократной записи, например прожигателях компакт-дисков. Аналогично, не успев прочитать очередное слово, мы поте­ряем его, и вынуждены будем отматывать ленту назад или ждать следующего оборота диска.

Пока­зание к использованию режима опроса: поток следующих друг за другом с небольшим интервалом событий, каждое из которых нельзя потерять, а нужно обязательно обработать.

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

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

Для реализации этого алгоритма достаточно трех регистров (указателя в па­мяти, значения текущего слова и счетчика переданных слов). Реализующее этот алгоритм устройство называют контроллером прямого доступа к памяти (Direct Memory Access controller, DMA controller) (рис. 6.1). Такие контроллеры часто рассчитаны на одновременную работу с несколькими устройствами — имеют несколько каналов — и, соответственно, больше регистров.

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

Различают два типа реализаций ПДП: