русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операции ввода вывода

Возможны три метода выполнения операций ввода-вывода:

  1. программируемый ввод-вывод;
  2. ввод-вывод с использованием прерываний;
  3. прямой доступ к памяти (direct memory access — DMA)

 

 

Программируемый ввод-вывод

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

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

Управление. Команды этой категории используются для того, чтобы привести внешнее устройство в действие и сообщить ему, что нужно делать. Например, блоку с магнитной лентой можно отдать команду перемотки или перемещения вперед на одну запись.

Состояние. Используется для проверки состояния контроллера ввода-вывода и соответствующих периферийных устройств.

Передача. Используется для чтения и/или записи данных в регистры процессора и внешние устройства и из регистров процессора и внешних устройств.

На рис. 1.19 приведен пример использования программируемого ввода-вывода для считывания в память блока данных, поступивших из внешнего устройства (например, записи с магнитной ленты). Данные считываются по одному слову. При считывании каждого слова процессор должен выполнять цикл проверки состояния, пока он не обнаружит, что это слово уже доступно в регистре данных модуля ввода-вывода. На приведенной блок-схеме видны основные недостатки такого метода: процессор выполняет большое количество операций, которых можно было бы избежать; теряется много времени.

 

 

Ввод-вывод с использованием прерываний

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

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


Рис. 1.19. Три метода передачи блока входных данных

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

С точки зрения процессора передача входных данных выглядит следующим образом. Процессор генерирует команду READ, а затем сохраняет содержимое программного счетчика и других регистров, соответствующих выполняемой программе, и переходит к выполнению других операций (например, он в одно и то же время может выполнять несколько различных программ). В конце каждого цикла команды процессор проверяет наличие прерываний (см. рис. 1.7). При поступлении прерывания от контроллера ввода-вывода процессор сохраняет информацию о выполняющейся в данный момент задаче и выполняет программу, обрабатывающую прерывания. При этом он считывает слова из контроллера ввода-вывода и заносит их в память. Затем он восстанавливает контекст программы, от которой поступила команда ввода-вывода и продолжает работу.
Использование для чтения блока данных ввода-вывода, управляемого прерываниями, показано на рис. 1.19,6. Ввод-вывод с прерываниями намного эффективнее, чем программируемый ввод-вывод, так как при нем исключается ненужное ожидание. Однако этот процесс все еще потребляет много процессорного времени, потому что каждое слово, которое передается из памяти в модуль ввода-вывода или в обратном направлении, должно пройти через процессор.

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

 

Прямой доступ к памяти

Просмотров:

Вернуться в оглавление:Операционные системы




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.