Методы управления вводом-выводом

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

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