Организация побайтного ввода вывода – —

Тема Обслуживание ввода-вывода

Способы организации ввода-вывода.

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

□Основными задачами подсистемы ввода-вывода являются:

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

  • согласование скоростей работы процессора, оперативной памяти и устройств ввода-вывода;

  • разделение устройств ввода-вывода между процессами;

  • обеспечение удобного логического интерфейса к устройствам ввода-вывода.

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

□ Драйверы делятся на низкоуровневые, непосредственно управляющие работой контроллеров внешних устройств, и высокоуровневые, обеспечивающие логический интерфейс к устройствам, например драйверы файловых систем

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

□ Аппаратные драйверы делятся на блок-ориентированные, обеспечивающие доступ к устройствам с поблочной непосредственной адресацией, и байт-ориентированные, управляющие устройствами, поддерживающими побайтный не адресуемый обмен.

Одной из главных задач ОС является обеспечение

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

Основными компонентами подсистемы ввода-вывода являются драйверы, управляющие внешними устройствами, и файловая система. К подсистеме ввода-вывода можно также с некоторой долей условности отнести и диспетчер прерываний.

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

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

studfiles.net

Организация ввода–вывода

Различают три способа организации ввода–вывода:

  1. программно – управляемый или условный;

  2. по прерываниям;

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

Определим два понятия – ввод или выводиобмен. Под первым будем понимать всю совокупность действий, выполняемых процессором, периферийным устройством и оперативной памятью, для ввода в оперативную память или вывода из неё нужную информацию. Подобменом данными

(далее простообменом) будем понимать собственно пересылку данных из ПУ в процессор (или ОП) и наоборот.Инициатором ввода–вывода является центральный процессор,а обмен осуществляется по инициативе периферийного устройства.

Программно – управляемый ввод–вывод

Самым простым методом организации ввода/вывода является программно — управляемый ввод–вывод, ещё называемый вводом /выводом с опросомфлагаилиусловным. В этом случае ввод–вывод происходит под полным контролем процессора. Основой метода является опрос процессором флага ПУ, который назовём«Требование обмена»(Тр. об.). Когда устройство готово к обмену, оно устанавливает в 1 этот флаг. Процессор опрашивает ПУ и, обнаружив 1, выполняет обмен.При опросе флаг сбрасывается в 0. Упрощенный алгоритм программно – управляемого ввода–вывода для операции ввод показан на рис.4. Процедура начинается с опроса регистра состояния ПУ для выяснения готовности устройства к работе (оператор

1). Если устройство готово, в регистр команд интерфейсного блока ПУ заносится соответствующее командное слово (оператор2). Условный оператор проверки состояния ПУ на рисунке не показан. Операторы3и4– опрос флага «Требование обмена», который является разрядом регистра состояния. Если ПУ не готово к обмену, опрос повторяется. В противном случае осуществляется обмен данными между ПУ, процессором и оперативной памятью (операторы5и6). На процессор возлагается задача определения момента завершения ввода–вывода, для чего организуется программный счетчик (операторы7,8). Метод очень прост, требует минимальных затрат аппаратуры. Основным недостатком метода является очень нерациональное расходование процессорного времени на ожидание готовности устройства к обмену; особенно если учесть, что скорость работы большинства ПУ существенно меньше скорости работы ЦП. Если же периферийное устройство очень скоростное, то указанный недостаток исчезает, и рассмотренный метод может составить конкуренцию методу прямого доступа к памяти.

Ввод–вывод по прерываниям

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

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

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

Общим и для первого, и для второго способов недостатком является пересылка данных через процессор, что «отвлекает» ЦП от выполнения основной функции – обработки данных.

studfiles.net

Управление вводом-выводом

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

Физическая организация устройств ввода-вывода

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

Внешнее устройство обычно состоит из механического и электронного компонента. Электронный компонент называется контроллером устройства или адаптером. Механический компонент представляет собственно устройство. Некоторые контроллеры могут управлять несколькими устройствами. Если интерфейс между контроллером и устройством стандартизован, то независимые производители могут выпускать совместимые как контроллеры, так и устройства.

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

ОС выполняет ввод-вывод, записывая команды в регистры контроллера. Например, контроллер гибкого диска IBM PC принимает 15 команд, таких как READ, WRITE, SEEK, FORMAT и т.д. Когда команда принята, процессор оставляет контроллер и занимается другой работой. При завершении команды контроллер организует прерывание для того, чтобы передать управление процессором операционной системе, которая должна проверить результаты операции. Процессор получает результаты и статус устройства, читая информацию из регистров контроллера.

Организация программного обеспечения ввода-вывода

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

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

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

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

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

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

Для решения поставленных проблем целесообразно разделить программное обеспечение ввода-вывода на четыре слоя (рисунок 2.30):

  • Обработка прерываний,

  • Драйверы устройств,

  • Независимый от устройств слой операционной системы,

  • Пользовательский слой программного обеспечения.

Рис. 2.30. Многоуровневая организация подсистемы ввода-вывода

studfiles.net

Основные понятия и концепции организации ввода/вывода в ос

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

Система ввода/вывода, способная объединить в одной модели широкий набор устройств, должна быть универсаль­ной. Она должна учитывать потребности существующих устройств, от простой мыши до клавиатур, принтеров, графических дисплеев, дисковых накопителей, компакт-дисков и даже сетей. С другой стороны, необходимо обеспечить доступ к устройствам ввода/вывода для множества параллельно выполняющихся задач, причем так, чтобы они как можно меньше мешали друг другу.

Поэтому самым главным является следующий принцип: любые операции по управлению вводом/выводом объявляются привилегированными и могут вы­полняться только кодом самой ОС. Для обеспечения этого принципа в большин­стве процессоров даже вводятся режимы пользователя и супервизора. Как пра­вило, в режиме супервизора выполнение команд ввода/вывода разрешено, а в пользовательском режиме — запрещено. Использование команд ввода/вывода в пользовательском режиме вызывает исключение и управление через механизм прерываний передается коду ОС. Хотя возможны и более сложные системы, в которых в ряде случаев пользовательским программам разрешено непосредст­венное выполнение команд ввода/вывода.

Помимо разделяемых устройств ввода/вывода существуют неразделяемые устройства.

Разделяемые устройства – это устройства с прямым доступом (накопитель на магнитных дисках, устройство чтения компакт-дисков).

Неразделяемые устройства — принтер.

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

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

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

Вообще говоря, понятие виртуального устройства шире, нежели использование этого термина для обозначения спулинга (SPOOLing — simultaneous peripheral operation on-line, то есть имитация работы с устройством в режиме «он-лайн»). Главная задача спулинга — создать видимость параллельного разделения устрой­ства ввода/вывода с последовательным доступом, которое фактически должно использоваться только монопольно и быть закрепленным.

Например, мы уже го­ворили, что в случае, когда несколько приложений должны выводить на печать результаты своей работы, если разрешить каждому такому приложению печатать строку по первому же требованию, то это приведет к потоку строк, не представ­ляющих никакой ценности. Однако можно каждому вычислительному процессу предоставлять не реальный, а виртуальный принтер и поток выводимых симво­лов (или управляющих кодов для их печати) сначала направлять в специальный файл на магнитном диске. Затем, по окончании виртуальной печати, в соответствии с принятой дисциплиной обслуживания и приоритетами приложений вы­водить содержимое спул-файла на принтер. Системный процесс, который управ­ляет спул-файлом, называется спулером (spool-reader или spool-writer).

studfiles.net

7.Организация ввода-вывода в эвм. Способы ввода-вывода. Программный способ ввода-вывода (синхронный и асинхронный).

Ввод-вывод предназначается для связи центра (ЦП, ОП) с периферийными устройствами ПУ (УВВ), которые используются либо для хранения больших объемов информации (ВЗУ), либо используются для ввода в ЭВМ или вывода из нее информации (программ и данных).

Передача информации из ПУ в центр называется операцией ввода, а передача из центра в ПУ — операцией вывода.

От организации системы ввода-вывода в значительной степени зависит общая производительность ЭВМ.

Существуют два основных способа ввода-вывода: программный (программно- управляемый) и прямой доступ в память (ПДП).

Программно управляемая передача данных осуществляется при участии и под непосредственным управлением процессора. Данные между памятью и периферийными устройствами пересылаются через процессор.

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

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

Для исключения потерь информации при асинхронном вводе- выводе, процессор при начале обмена проверяет готовность устройства ввода-вывода к обмену, путем считывания его регистра состояния (статус — регистра). Регистр состояния должен содержать информацию о функционировании устройства ввода-вывода и является дополнительным регистром ПУ. Регистры данных и состояния подключаются к шине данных и каждому из них присваиваются уникальные адреса. При неготовности ПУ к обмену процессор выполняет другие действия.

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

8.Ввод-вывод прямым доступом в память.

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

При наличии в составе ЭВМ подсистемы ПДП (DMA-Direkt Memory Access) обмен данными между ПУ и ОЗУ осуществляется без постоянного участия процессора. В связи с этим подсистема ПДП должна иметь в своём составе узлы для управления ОШ. При необходимости блочной передачи между ВЗУ и ОЗУ процессор заносит в подсистему ПДП данные о номере первой ячейки ОЗУ, с которой начнётся обмен, размер передаваемого блока и направление изменения адреса ячеек ОЗУ (уменьшение или увеличение). После этого подсистема ПДП (см. рисунок 6.2) выдаёт процессору сигнал запроса ЗЗх (HOLD) на захват ОШ (запрос на право управления ОШ). Реакцией процессора на этом сигнал является выработка сигнала подтверждения захвата ПЗх ОШ (HLDA) и перевод большинства своих выходов в высокоимпедансное состояние. Вслед за этим подсистема ПДП формирует адреса ячейки ОЗУ, сигналы записи и чтения ОЗУ, и организует обмен с ВЗУ. ВЗУ при готовности приема или передачи очередного байта или слова информации вырабатывает сигнал готовности данных DRQ, ответом которому со стороны подсистемы ПДП является сигнал подтверждения приема данных DACK.

При перемещении каждого очередного байта, значение внутреннего счетчика в подсистеме ПДП (контроллере ПДП (КПДП)), указывающего на размер передаваемого блока, уменьшается на 1. При обнулении счетчика цикл ПДП заканчивается и управление ОШ передается процессору. Для этого КПДП переводит сигнал HOLD в неактивное состояние.

Скорость обмена при ПДП — обмене определяется пропускной способностью оперативной памяти и ОШ и может достигать нескольких Мбайт/с.

studfiles.net

Лекция №10 Организация ввода / вывода информации в мпс.

План лекции:

10.1. Интерфейсы микроЭВМ.

10.2. Организация программно-управляемого обмена Пространство ввода-вывода

10.3. Программно-управляемый обмен.

10.4. Прямой ввод-вывод.

10.5. Условный ввод-вывод.

10.1. Интерфейсы микроЭвм.

Конкретная реализация системы ввода-вывода — номенклатура шин в интерфейсах системы ввода-вывода, типы контроллеров ВУ, способы передачи информации по шинам интерфейса (параллельная или последовательная передача, синхронная или асинхронная) — определяется в первую очередь назначением микроЭВМ в целом. Каким же образом?

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

На первом уровне сопряжения набор шин интерфейса ввода-вывода и алгоритм его функционирования полностью определяются типом БИС процессора — его системным интерфейсом. Несмотря на широкое разнообразие системных интерфейсов микроЭВМ, в общем случае можно выделить два основных способа использования системного интерфейса для организации обмена информацией с ВУ: 1) с применением специальных команд ввода-вывода; 2) по аналогии с обращениями к памяти.

Рассмотрим, как используются для обмена информацией с ВУ шины адреса и данных системных интерфейсов микроЭВМ и какие необходимы для этого управляющие сигналы. При использовании для обмена с ВУ команд ввода-вывода адрес (номер) ВУ передается по шине адреса. Однако по этой же шине передаются и адреса ячеек памяти. Информация на шине адреса имеет смысл адреса (номера) ВУ только при наличии специальных управляющих сигналов. Такими сигналами могут быть, например, «Ввод из ВУ» и «Вывод в ВУ» (рис.10.1, а), инициируемые соответствующими командами ввода-вывода микроЭВМ.

Для синхронизации работы процессора микроЭВМ и контроллеров ВУ, а точнее, для указания моментов времени, определяющих готовность данных в ВУ для передачи либо подтверждающих их прием, может служить управляющий осведомительный сигнал «Готовность ВУ».

Такого простого набора управляющих сигналов в общем случае достаточно для организации программно-управляемого обмена данными с ВУ на первом уровне (процессор — контроллер ВУ). Порядок использования описанных выше управляющих сигналов при выполнении операций ВВОД и ВЫВОД проиллюстрирован рис. 10.2.

Операция ВЫВОД, инициируемая соответствующей командой микропроцессора, выполняется следующим образом. Микропроцессор выставляет на линиях адресной шины адрес (номер) ВУ, на линиях шины данных — значения разрядов выводимого слова данных и единичным сигналом по линии «Вывод в ВУ» указывает тип операции. Адресуемый контроллер ВУ принимает данные, пересылает их в ВУ и единичным сигналом по линии «Готовность ВУ» сообщает процессору, что данные приняты ВУ, и можно снять информацию с шин адреса и данных, а также сигнал «Вывод в ВУ».

Рис. 10.1. Простейшее сопряжение контроллера ВУ с системным интерфейсом.

Рис. 10.2. Временные диаграммы операций для простейшего набора управляющих сигналов: а— ВЫВОД; б — ВВОД.

Выполнение операции ВВОД (рис. 10.2, б) начинается с того, что микропроцессор выставляет на линиях адресной шины адрес (номер) ВУ и единичным сигналом на линии «Ввод из ВУ» указывает тип выполняемой операции. По сигналу «Ввод из ВУ» контроллер адресуемого ВУ считывает слово данных из ВУ, выставляет на линиях шины данных значения разрядов считанного слова и единичным сигналом по линии «Готовность ВУ» сообщает об этом процессору. Приняв данные из контроллера ВУ, процессор снимает сигналы с шины адреса и линии «Ввод из ВУ».

При реализации в микроЭВМ обмена с ВУ по аналогии с обращениями к памяти отпадает необходимость в специальных сигналах, указывающих, что на шине адреса находится адрес ВУ Для адресов ВУ отведена часть адресного пространства микроЭВМ, и в контроллерах ВУ удается легко организовать селекцию адресов ВУ — выделение собственного адреса ВУ из всего множества адресов, передаваемых по линиям адресной шины. Однако остается необходимость передавать в ВУ приказ на ввод или вывод информации. Для этих целей используются линии управляющей шины «Чтение» и «Запись», обеспечивающие обмен информацией микропроцессора с модулями памяти (см. рис. 10.1,б).

Временные диаграммы операций ВВОД и ВЫВОД при организации обмена с ВУ по аналогии с памятью полностью соответствуют рассмотренным ранее (рис. 10.2).

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

[Вернутся к плану лекции]

studfiles.net

Основные режимы ввода-вывода

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

Интерфейсы должны учитывать возможность реализации всех 3-х режимов ввода-вывода.

Программный ввод-вывод. Здесь инициализация и управление процессом ввода-вывода осуществляет процессор. Существует три способа его выполнения (см. рис.).

Рис.Программный ввод-вывод

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

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

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

Прямой доступ к памяти — способ быстродействующего подключения внешнего устройства, при котором оно обращается к оперативной памяти, не прерывая работы процессора. Такой обмен происходит под управлением отдельного устройства — контроллера прямого доступа к памяти (КПДП).

Структура ЭВМ, имеющей в своем составе КПДП, представлена на рис.

Рис. Обмен данными в режиме прямого доступа к памяти.

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

Последовательность действий КПДП при запросе на прямой доступ к памяти со стороны устройства ввода-вывода следующая:

  • Принять запрос на ПДП (сигнал DRQ) от УВВ.

  • Сформировать запрос к МП на захват шин (сигнал HRQ).

  • Принять сигнал от МП (HLDA), подтверждающий факт перевода микропроцессором своих шин в третье состояние.

  • Сформировать сигнал, сообщающий устройству ввода-вывода о начале выполнения циклов прямого доступа к памяти (DACK).

  • Сформировать на шине адреса компьютера адрес ячейки памяти, предназначенной для обмена.

  • Выработать сигналы, обеспечивающие управление обменом (IOR, MW для передачи данных из УВВ в оперативную память и IOW, MR для передачи данных из оперативной памяти в УВВ).

  • Уменьшить значение в счетчике данных на длину переданных данных.

  • Проверить условие окончания сеанса прямого доступа (обнуление счетчика данных или снятие сигнала запроса на ПДП). Если условие окончания не выполнено, то изменить адрес в регистре текущего адреса на длину переданных данных и повторить шаги 5-8.

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

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

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

Особенности построения программных средств системы ввода-вывода ЭВМ

Функционирование любой вычислительной системы обычно сводится к выполнению двух видов работы: обработке информации и операций по осуществлению ее ввода-вывода.

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

Устройства ввода-вывода подключаются к системе через порты.

Могут существовать два адресных пространства: пространство памяти и пространство ввода-вывода.

Порты, как правило, отображаются в адресное пространство ввода-вывода и иногда – непосредственно в адресное пространство памяти.

Использование того или иного адресного пространства определяется типом команды, выполняемой процессором, или типом ее операндов.

Физическим управлением устройством ввода-вывода, передачей информации через порт и выставлением некоторых сигналов на магистрали занимается контроллер устройства.

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

Структура контроллера устройства

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

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

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

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

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

Логические принципы организации ввода-вывода

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

Рис. Диспетчер устройств. Ресурсы по типу.

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

Структура системы ввода-вывода

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

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

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

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

Функции базовой подсистемы ввода-вывода

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

16

studfiles.net

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *