7.Организация ввода-вывода в эвм. Способы ввода-вывода. Программный способ ввода-вывода (синхронный и асинхронный).
Ввод-вывод предназначается для связи центра (ЦП, ОП) с периферийными устройствами ПУ (УВВ), которые используются либо для хранения больших объемов информации (ВЗУ), либо используются для ввода в ЭВМ или вывода из нее информации (программ и данных).
Передача информации из ПУ в центр называется операцией ввода, а передача из центра в ПУ — операцией вывода.
От организации системы ввода-вывода в значительной степени зависит общая производительность ЭВМ.
Существуют два основных способа ввода-вывода: программный (программно- управляемый) и прямой доступ в память (ПДП).
Программно управляемая передача данных осуществляется при участии и под непосредственным управлением процессора. Данные между памятью и периферийными устройствами пересылаются через процессор.
При вводе- выводе в режиме ПДП процессор не участвует в обмене и либо приостанавливает свою работу на время обмена, либо выполняет параллельно с обменом обработку команд и данных, не требующих обращения к ОШ. Обмен данными между УВВ и ОП осуществляется напрямую, минуя процессор. Ввод-вывод в режиме ПДП является (принципиально) более быстродействующим, нежели программно управляемый.
Программный способ осуществляется либо по прерыванию, либо без прерывания. При вводе-выводе с прерыванием программы инициализация ввода-вывода осуществляется сигналом запрос на прерывание от ПУ. При вводе-выводе без прерывания его инициализация осуществляется текущей командой программы. Ввод-вывод без прерывания бывает синхронным и асинхронным. При синхронном вводе-выводе готовность ПУ к обмену не проверяется, при асинхронном- проверяется.
Для исключения потерь информации при асинхронном вводе- выводе, процессор при начале обмена проверяет готовность устройства ввода-вывода к обмену, путем считывания его регистра состояния (статус — регистра). Регистр состояния должен содержать информацию о функционировании устройства ввода-вывода и является дополнительным регистром ПУ. Регистры данных и состояния подключаются к шине данных и каждому из них присваиваются уникальные адреса. При неготовности ПУ к обмену процессор выполняет другие действия.
Асинхронный ввод-вывод приводит к непроизводительным затратам времени работы процессора или к простоям ПУ. Увеличение в программе количества точек анализа состояния ПУ увеличивает длину программы и время работы процессора, уменьшение- к увеличению простоя ПУ. Тем не менее, такой способ ввода-вывода широко используется в ЭВМ
8.Ввод-вывод прямым доступом в память.
Недостатком способов программного ввода-вывода является то, что все операции ввода-вывода осуществляются через процессор. Это приводит к уменьшению скорости ввода- вывода больших массивов информации, например, при вводе кода программы в ОЗУ с ВЗУ. Для пересылки каждого байта данных в асинхронном режиме в программе, кроме команд проверки готовности ПУ к обмену и пересылки данных, должны быть также команды для изменения адреса ячейки памяти и отслеживания количества пересылок. При использовании ввода-вывода по прерываниям издержки еще больше, поскольку приходится сохранять содержимое счетчика команд, регистра признаков, части РОН и другую информацию о состоянии процессора на момент прихода сигнала запроса прерывания.
При наличии в составе ЭВМ подсистемы ПДП (DMA-Direkt Memory Access) обмен данными между ПУ и ОЗУ осуществляется без постоянного участия процессора. В связи с этим подсистема ПДП должна иметь в своём составе узлы для управления ОШ. При необходимости блочной передачи между ВЗУ и ОЗУ процессор заносит в подсистему ПДП данные о номере первой ячейки ОЗУ, с которой начнётся обмен, размер передаваемого блока и направление изменения адреса ячеек ОЗУ (уменьшение или увеличение). После этого подсистема ПДП (см. рисунок 6.2) выдаёт процессору сигнал запроса ЗЗх (HOLD) на захват ОШ (запрос на право управления ОШ). Реакцией процессора на этом сигнал является выработка сигнала подтверждения захвата ПЗх ОШ (HLDA) и перевод большинства своих выходов в высокоимпедансное состояние. Вслед за этим подсистема ПДП формирует адреса ячейки ОЗУ, сигналы записи и чтения ОЗУ, и организует обмен с ВЗУ. ВЗУ при готовности приема или передачи очередного байта или слова информации вырабатывает сигнал готовности данных DRQ, ответом которому со стороны подсистемы ПДП является сигнал подтверждения приема данных DACK.
При перемещении каждого очередного байта, значение внутреннего счетчика в подсистеме ПДП (контроллере ПДП (КПДП)), указывающего на размер передаваемого блока, уменьшается на 1. При обнулении счетчика цикл ПДП заканчивается и управление ОШ передается процессору. Для этого КПДП переводит сигнал HOLD в неактивное состояние.
Скорость обмена при ПДП — обмене определяется пропускной способностью оперативной памяти и ОШ и может достигать нескольких Мбайт/с.
Источник
Программно управляемый ввод-вывод
Глава 25. Методы управления вводом-выводом
Способы организации ввода-вывода
В компьютерах находят применение три способа организации ввода-вывода:
программно управляемый ввод-вывод;
ввод-вывод по прерываниям;
прямой доступ к оперативной памяти.
При программно управляемом вводе-выводе все связанные с этим действия происходят по инициативе процессора и под его полным контролем. Процессор выполняет программу, которая обеспечивает прямое управление процессом ввода-вывода, включая проверку состояния устройства, выдачу команд ввода-вывода. Выдав в контроллер ПУ команду, процессор должен ожидать завершения ее выполнения, и, поскольку он работает быстрее, чем ПУ, это приводит к потере времени.
Ввод-вывод по прерываниям во многом совпадает с программно управляемым методом. Отличие состоит в том, что после выдачи команды ввода-вывода процессор не должен циклически опрашивать контроллер ПУ для выяснения состояния устройства. Вместо этого процессор может продолжать выполнение других команд до тех пор, пока не получит запрос прерывания от контроллера ПУ, извещающий о завершении выполнения ранее выданной команды ввода-вывода. Как и при программно управляемом вводе-выводе, процессор отвечает за извлечение данных из оперативной памяти (при выводе) и запись данных в оперативную память (при вводе).
Повышение, как скорости ввода-вывода,так и эффективности использования процессора, обеспечивает третий способ ввода-вывода — прямой доступ к оперативной памяти (ПДП). В этом режиме оперативная память и контроллер ПУ обмениваются информацией напрямую, минуя процессор.
Программно управляемый ввод-вывод
Наиболее простым методом управления вводом-выводом является небуферированный программно управляемый ввод-вывод.В этом режимев каждом циклеобмена передается только одна порция данных. Это может быть 1, 2, 4 байта. Здесь ввод-вывод происходит под полным контролем процессора и реализуется специальной процедурой ввода-вывода (драйвером периферийного устройства). В этой процедуре процессор, например, с помощью команды ввода-вывода сообщает контроллеру ПУ, а через него и устройству о предстоящей операции. Адрес контроллера ПУ, к которому производится обращение, указывается в адресной части команды ввода или вывода. Контроллер ПУ исполняет затребованное действие, после чего устанавливает в единицу соответствующий разряд в своем регистре состояния. Ничего другого, чтобы уведомить процессор, контроллер ПУ не предпринимает. Следовательно, для определения момента завершения операции или пересылки очередного элемента блока данных процессор должен периодически опрашивать и анализировать содержимое регистра состояния в контроллере ПУ.
В процедуре программно управляемого ввода блока данных с устройства ввода данные читаются пословно. Для каждого читаемого слова процессор должен оставаться в цикле проверки, пока не определит, что слово находится в регистре данных контроллера ПУ, то есть доступно для считывания.
Алгоритм выполнения обмена под управлением программы приведен на рис. 25.1.
|
Рис. 25.1. Алгоритм выполнения обмена под управлением программы
Процедура начинается с выдачи процессором команды ввода, в которой указан адрес конкретного контроллера ПУ и конкретного ПУ. Существуют четыре типа команд ввода-вывода, которые может получить контроллер ПУ:
Команды управления используются для активизации ПУ и указания требуемой операции. Например, в устройство памяти на магнитном диске может быть выдана команда «Поиск дорожки». Для каждого типа ПУ характерны специфичные для него команды управления.
Команда проверки применяется для проверки различных ситуаций, возникающих в ПУ в процессе ввода-вывода. С помощью таких команд процессор способен выяснить, включено ли ПУ, готово лионо к работе, завершена ли последняя операция ввода-вывода и не возникли ли в ходе ее выполнения какие-либо ошибки. Действие команды сводится к установке или сбросу соответствующих разрядов регистра состояния контроллера ПУ.
Команда чтения побуждает контроллер ПУ получить элемент данных из ПУ и занести его в буфер (регистр) данных. Процессор может получить этот элемент данных, запросив контроллер ПУ поместить его на шины данных внешнего интерфейса.
Команда записи заставляет контроллер ПУ принять элемент данных (байт, слово илидвойноеслово)с шин данных внешнего интерфейса, записать его в буфер данных и затем переслать его в ПУ.
Если к контроллеру ПУ подключено несколько ПУ, то в процедуре ввода-вывода нужно производить циклический опрос всех устройств, с которыми в данный момент производятся операции ввода-вывода.
Из приведенного описания явно виден основной недостаток программно управляемого ввода-вывода — неэффективное использование процессора из-за ожидания готовности очередной порции информации. В течение всего времени ожидания готовности ПУ процессор не выполняет никаких иных полезных действий. Кроме того, пересылка даже одной порции данных (например, слова) требует выполнения нескольких команд. Процессор должен тратить время на анализ разрядов состояния ПУ, запись в контроллер ПУ разрядов управления, чтение или запись данных со скоростью, определяемой внешним устройством. Все это также отрицательно сказывается на эффективности ввода-вывода.
Главным аргументом в пользу программно управляемого ввода-вывода является простота контроллера ПУ, поскольку основные функции по управлению вводом-выводом берет на себя процессор. При одновременной работе с несколькими ПУ приоритет устройств легко изменить программными средствами (последовательностью опроса). Наконец, подключение к подсистеме ввода-вывода новых внешних устройств или отключение ранее подключенных также реализуется без особых сложностей.
Источник
Операционные системы (архив ИПМ специалисты, бакалавры 2001г — 2021г, Богомолов)
- Современные операционные системы, Э. Таненбаум, 2002, СПб, Питер, 1040 стр., (в djvu 10.1Мбайт) подробнее>>
- Сетевые операционные системы Н. А. Олифер, В. Г. Олифер (в zip архиве 1.1Мбайт)
- Сетевые операционные системы Н. А. Олифер, В. Г. Олифер, 2001, СПб, Питер, 544 стр., (в djvu 6.3Мбайт) подробнее>>
9.1 Принципы аппаратуры ввода-вывода
9.1.1 Устройства ввода-вывода
Устройства делят на две категории (некоторые не попадают ни в одну):
блочные устройства — информация считывается и записывается по блокам, блоки имеют свой адрес (диски)
символьные устройства — информация считывается и записывается посимвольно (принтер, сетевые карты, мыши)
9.1.2 Контроллеры устройств
Устройства ввода-вывода обычно состоят из двух частей:
механическая (не надо понимать дословно) — диск, принтер, монитор
электронная — контроллер или адаптер
Если интерфейс между контроллером и устройством стандартизован (ANSI, IEEE или ISO), то независимые производители могут выпускать совместимые как контроллеры, так и устройства. Например: диски IDE или SCSI.
Операционная система обычно имеет дело не с устройством, а с контроллером. Контроллер, как правило, выполняет простые функции, например, при считывании с диска, преобразует поток бит в блоки, состоящие из байт, и осуществляют контроль и исправление ошибок, проверяется контрольная сумма блока, если она совпадает с указанной в заголовке сектора, то блок считан без ошибок, если нет, то считывается заново.
9.1.3 Отображаемый на адресное пространство памяти ввод-вывод
Каждый контроллер имеет несколько регистров, которые используются для взаимодействия с центральным процессором. При помощи этих регистров ОС управляет (считывает, пишет, включает и т.д.) и определяет состояние (готовность) устройства.
У многих устройств есть буфер данных (например: видеопамять).
Реализации доступа к управляющим регистрам и буферам:
номер порта ввода-вывода — назначается каждому управляющему регистру 8- или 16-рзрядное целое число. Адресные пространства ОЗУ и устройства ввода-вывода в этой схеме не пересекаются.
Недостатки
— для чтения и записи применяются специальные команды, например: IN и OUT
— необходим специальный механизм защиты от процессов
— необходимо сначала считать регистр устройства в регистр процессора
отображаемый на адресное пространство памяти ввод-вывод — регистры отображаются на адресное пространство памяти.
Недостатки
— при кэшировании памяти, могут кэшироваться и регистры устройств
— все устройства должны проверять все обращения к памяти, чтобы определить, на какие им реагировать. На одной общей шине это реализуется легко, но на нескольких будут проблемы.
смешанная реализация — используется в х86 и Pentium,
от 0 до 64К отводится портам,
от 640 до 1М зарезервировано под буферы данных.
Способы реализации доступа к управляющим регистрам и буферам
9.1.4 Прямой доступ к памяти (DMA — Direct Memory Access)
Прямой доступ к памяти реализуется с помощью DMA — контроллера.
Контроллер содержит несколько регистров:
регистр адреса памяти
управляющие регистры, могут содержать:
— порт ввода-вывода
— чтение или запись
— единицы переноса (побайтно или пословно)
Без контроллера происходит следующее:
Процессор дает команду дисковому контроллеру прочитать данные в буфер,
Считываются данные в буфер, контроллер проверяет контрольную сумму считанных данных (проверка на ошибки). Процессор, до прерывания, переключается на другие задания.
Контроллер диска инициирует прерывание
Операционная система начинает работать и может считывать из буфера данные в память
Работа DMA — контроллера
С контроллером происходит следующее:
Процессор программирует контроллер (какие данные и куда переместить)
Процессор дает команду дисковому контроллеру прочитать данные в буфер
Считываются данные в буфер, контроллер диска проверяет контрольную сумму считанных данных, (процессор, до прерывания, переключается на другие задания).
Контроллер DMA посылает запрос на чтение дисковому контроллеру
Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит запись данных в память
Когда запись закончена, контроллер диска посылает подтверждение DMA контроллеру
DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов
Все повторяется с пункта 4, пока значение счетчика не станет равной нулю.
Контроллер DMA инициирует прерывание
Операционной системе не нужно копировать данные в память, они уже там.
После того как устройство ввода-вывода начало работу, процессор переключается на другие задачи.
Чтобы сигнализировать процессору об окончании работы, устройство инициализирует прерывание, выставляя сигнал на выделенную устройству линию шины (а не выделенный провод).
Контроллер прерываний — обслуживает поступающие прерывания от устройств.
Если необработанных прерываний нет, прерывание выполняется немедленно.
Если необработанных прерываний есть, контроллер игнорирует прерывание. Но устройство продолжает удерживать сигнал прерывания на шине до тех пор, пока оно не будет обработано.
Устройство выставляет сигнал прерывания
Контроллер прерываний инициирует прерывание, указывая номер устройства
Процессор начинает выполнять обработку прерывания, вызывая процедуру
Эта процедура подтверждает получение прерывания контроллеру прерываний
9.2 Принципы программного обеспечения ввода-вывода
9.2.1 Задачи программного обеспечения ввода-вывода
Основные задачи, которые должно решать программное обеспечение ввода-вывода:
Независимость от устройств — например, программа, читающая данные из файла не должна задумываться с чего она читает (CD, HDD и др.). Все проблемы должна решать ОС.
Единообразное именование — имя файла или устройства не должны отличаться. (В системах UNIX выполняется дословно).
Обработка ошибок — ошибки могут быть отловлены на уровне контроллера, драйвера и т.д.
Перенос данных — синхронный и асинхронный (в последнем случае процессор запускает перенос данных, и переключается на другие задачи до прерывания).
Проблема выделенных (принтер) и невыделенных (диск) устройств — принтер должен предоставляться только одному пользователю, а диск многим. ОС должна решать все возникающие проблемы.
Три основных способа осуществления операций ввода-вывода:
Управляемый прерываниями ввод-вывод
Ввод-вывод с использованием DMA
Рассмотрим их подробнее.
9.2.2 Программный ввод-вывод
В этом случае всю работу выполняет центральный процессор.
Рассмотрим процесс печати строки ABCDEFGH этим способом.
Этапы печати строки ABCDEFGH
Строка для печати собирается в пространстве пользователя.
Обращаясь к системному вызову, процесс получает принтер.
Обращаясь к системному вызову, процесс просит распечатать строку на принтере.
Операционная система копирует строку в массив, расположенный в режиме ядра.
ОС копирует первый символ в регистр данных принтера, который отображен на памяти.
Символ печатается на бумаге.
Указатель устанавливается на следующий символ.
Процессор ждет, когда бит готовности принтера выставится в готовность.
При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать.
9.2.3 Управляемый прерываниями ввод-вывод
Если в предыдущем примере буфер не используется, а принтер печатает 100 символов в секунду, то на каждый символ будет уходить 10мс, в это время процессор будет простаивать, ожидая готовности принтера.
Рассмотрим тот же пример, но с небольшим усовершенствованием.
До пункта 8 тоже самое.
Процессор не ждет готовности принтера, а вызывает планировщик и переключается на другую задачу. Печатающий процесс блокируется.
Когда принтер будет готов, он посылает прерывание процессору.
Процессор переключается на печатающий процесс.
9.2.4 Ввод-вывод с использованием DMA
Недостаток предыдущего метода в том, что прерывание происходит при печати каждого символа.
Алгоритм не отличается, но всю работу на себя берет контроллер DMA.
9.3 Программные уровни и функции ввода-вывода
Четыре уровня ввода-вывода:
9.3.1 Обработчики прерываний
Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Лучше всего блокировать драйвер, начавший ввод-вывод.
Драйвер начинает операцию ввод-вывод.
Драйвер блокирует сам себя,
— выполнив на семафоре процедуру down
— выполнив на переменной состояния процедуру wait
— выполнив на сообщении процедуру receive
Обработчик прерываний начинает работу
Обработчик прерываний может разблокировать драйвер (например, выполнив на семафоре процедуру up)
9.3.2 Драйвера устройств
Драйвер устройства — необходим для каждого устройства. Для разных ОС нужны разные драйверы.
Драйверы должны быть частью ядра (в монолитной системе), что бы получить доступ к регистрам контроллера.
Это одна из основных причин приводящих к краху операционных систем. Потому что драйверы, как правило, пишутся производителями устройств, и вставляются в ОС.
Логическое расположение драйверов устройств. На самом деле обмен данными между контроллерами и драйверами идет по шине.
Драйвера должны взаимодействовать с ОС через стандартные интерфейсы.
Стандартные интерфейсы, которые должны поддерживать драйвера:
Для блочных устройств
Для символьных устройств
Раньше для установки ядра приходилось перекомпилировать ядра системы.
Сейчас в основном ОС загружают драйверы. Некоторые драйверы могут быть загружены в горячем режиме.
Функции, которые выполняют драйвера:
обработка запросов чтения или записи
управление энергопотреблением устройства
прогрев устройства (сканера)
включение устройства или запуска двигателя
9.3.3 Независимое от устройств программное обеспечение ввода-вывода
Функции независимого от устройств программного обеспечения ввода-вывода:
Единообразный интерфейс для драйверов устройств,
Сообщения об ошибках
Захват и освобождение выделенных устройств (блокирование)
Размер блока, не зависящий от устройств
Единообразный интерфейс для драйверов устройств
Кроме интерфейса, в него также входят проблемы,
Рассмотрим несколько примеров буферизации.
a) Не буферизованный ввод — после ввода каждого символа происходит прерывание
b) Буферизация в пространстве пользователя — приходится держать загруженными необходимые страницы памяти в физической памяти.
c) Буферизация в ядре с копированием в пространство пользователя — страница загружается только когда буфер ядра полный, данные из буфера ядра в буфер пользователя копируется за одну операцию. Проблема может возникнуть, когда буфер ядра полный, а страница буфера пользователя еще не загружена.
d) Двойная буферизация в ядре — если один буфер заполнен, и пока он выгружается, символы пишутся во второй буфер.
Сообщения об ошибках
Наибольшее число ошибок возникает именно от операции ввода-вывода, поэтому их нужно определять как можно раньше. Ошибки могут быть очень разные в зависимости от устройств.
Захват и освобождение выделенных устройств
Для устройств (принтер) с которыми должен работать в одно время только один процесс, необходима возможность захвата и освобождения устройств. Когда один процесс занял устройство, остальные встают в очередь.
Независимый от устройств размер блока
Размер блока должен быть одинаковый для верхних уровней, и не зависеть от устройств (размеров секторов на диске).
9.3.4 Программное обеспечение ввода-вывода пространства пользователя
Функции этого обеспечения:
Обращение к системным вызовам ввода-вывода (через библиотечные процедуры).
Форматный ввод-вывод (меняют формат, например, в ASCII)
Спулинг (для выделенных устройств) — создается процесс (например, демон печати) и каталог спулера.
9.3.5 Обобщение уровней и функций ввода-вывода
Уровни и основные функции системы ввода-вывода
Источник