Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции кошкин.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
667.65 Кб
Скачать

(4) Процедура ввода/вывода.

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

номер канала номер контроллера номер ВУ

адрес ввода-вывода

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

Драйвер – программа, находящаяся в процессоре. Если ВУ имеет собственный контроллер, то драйвер работает только между процессором и контроллером ВУ. Если же у ВУ не своего контроллера, драйвер заменяет его и формирует управляющие сигналы. Проверяет готовность ВУ, контролирует выполнение механизма ВУ. При синхронным вводе-выводе между процессором и ВУ параллелизма нет. Это наиболее простой способ ввода-вывода. Основные положения: 1) передача выполняется по единицам информации (как правило, байты). ССП в контроллере служит индикатором возможности операции. Оно включает три флага: 1) готовность 2) конец – предыдущий байт передан. ВУ готов передать новый. 3) ошибка.

П

+

роцессор может работать с ВУ посредством команд трех типов. 1) «тест» - процессор читает (копирует) ССП в ВУ с тем, чтобы определить признаки ВУ. Операция повторяется очень часто. Как в начале, в середине так и в конце процедуры. 2) «ввести» - чтение содержимого с выходного регистра ВУ. 3) «вывести» – запись байта данных во входной регистр ВУ.

А

тест

ввод

тест

N:=N+1

int

int

+

+

+

+

лгоритм процедуры: начало процедуры предусматривает чтение ССП и анализ его разрядов. Если разряд готов, активный два другие пассивные. Процессор может ввести вывести один символ. Поскольку состояние «конец» показывает окончание передачи текущего символа и одновременно готовность к передаче следующего, можно вернуться на команду ввода. Но эта последовательность успела передать только один символ. Что бы определить число передаваемых символов необходимо включить счетчик и контролировать его состояние: N=N+1- счетчик. N<=1 – сравнение с порогом. Процедура заканчивается прерыванием. Счетчик организует чаще по адресам, в которых хранятся передаваемые данные. Можно использовать численные значения – индексы массива. Алгоритм называется синхронным, поскольку при его работе он «глух». Пока процедура не закончилась не выйдет на прерывание. В тоже время, по сути, в нем использован асинхронный способ передачи: каждый новый символ передается через проверку готовности («конец»). При каждой передаче анализируется возможная ошибка. Асинхронный обмен. Синхронные обмены характерны для работы не сложных вычислителей, как правило в однопользовательском режиме. Их основной недостаток – они не учитывают возможные внешние изменения. Асинхронный способ расширяется от предыдущего тем, что при проверке состояния конец. Если процедура завершена, программа уходит на прерывание операционной системы, Это прерывание сигнализирует о завершении передачи предыдущего сигнала и если этот символ не последний, процедура возобновляется, Т.о., после окончания передачи текущего символа в программе управление передается операционной системе и она учитывает возможные изменения других программ. Может получиться, что символы передаются поочередно с выполнением других процедур. Этот режим оправдан, когда значительные расхождения в быстродействии процессора и ВУ. Поскольку в алгоритме существуют возвраты при проверке флагов, может оказаться, что процесс зациклится на этом возврате. Поэтому в этом алгоритме процедура возврата наверх должна регламентироваться по времени или по счетчику, т.е. число возвратов при проверке флага ограничивается. В эту связь помещается счетчик, каждый возврат увеличивает его содержимое и проверка позволяет выйти на прерывание при превышении содержимого счетчика. Ограничение по времени-чтение таймера. Первый возврат запускает таймер, при каждом следующем возврате читается содержимое таймера и и сравнивается с порогом.

При использовании каналов процессор может работать как бы параллельно с каналом. Поэтому канал воспринимает ряд команд процессора: запустить канал, остановить канал, тестировать канал. Аналогично команда тестирования предусматривает чтение слова состояния канала и его флагов. Остановить канал. Редкая команда применяет для срочного остановления(прерывание процедуры). Как правило, команда процессора запускает канальные процедуры. Причем контроллер канала самостоятельно выполняет обслуживание ВУ.

Режим ПДП трактуется как упрощенная форма канала. При этом используется одна команда. В формате команды: адрес памяти, адрес ВУ, число байт для передачи, направление передачи. Сигнал конца передачи,

Вместо слово состояния эта команда записывается в регистр режима ПДП.

Быстродействие процессора и ВУ различны, поэтому при работе с каналом применяют буферизацию памяти. В памяти выделяют зону-буфер. Эта память может находиться как в ВУ так ив канале. Для программы пользователя обмен с этим буфером полностью имитирует обмен с ВУ. Процедура ввода через буфер начинается с прерывания. В качестве буфера используют так же диск: информация из памяти переносится в буфер на диске. Из диска в ВУ.