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

21. Лекция: Системы ввода-вывода

В лекции рассмотрены следующие вопросы: организация ввода-вывода в компьютерной системе и ее поддержка в ОС; контроллеры; драйверы; контроллеры с прямым доступом к памяти (Direct Memory Access – DMA); цикл выполнения задания в ОС, чередование вычислений и ввода вывода, прерывания.

Содержание

  • Введение

  • Аппаратура ввода-вывода

  • Основные концепции

  • Опрос устройств

  • Прерывания

  • Ввод-вывод с прямым доступом к памяти (DMA)

  • Программный интерфейс ввода-вывода

  • Блочные и символьные устройства

  • Сетевые устройства существенно отличаются от блочных и символьных; имеют свой собственный интерфейс и систему команд

  • Часы и таймеры

  • Блокируемый (синхронный) и не блокируемый (асинхронный) ввод-вывод

  • Подсистема ввода-вывода в ядре ОС

  • Структуры данных для ввода-вывода в ядре ОС

  • Жизненный цикл запроса на ввод-вывод

  • Производительность ввода-вывода

  • Ключевые термины

  • Краткие итоги

  • Набор для практики

    • Вопросы

    • Упражнения

    • Темы для курсовых работ, рефератов, эссе

Введение

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

  • Аппаратура ввода-вывода

  • Интерфейс приложений для ввода-вывода

  • Подсистема ввода-вывода в ядре ОС

  • Преобразование запросов на ввод-вывод в аппаратные операции

  • Производительность систем ввода-вывода.

Аппаратура ввода-вывода

В настоящее время наблюдается все более и более активное развитие устройств ввода-вывода в компьютерных системах. В значительной степени это объясняется, во-первых, необходимостью ввода, обработки и вывода мультимедийной информации (аудио, видео, цифровых фотографий, отсканированных образов и других изображений), во-вторых, постоянной потребностью в увеличении скорости и емкости устройств вследствие гигантского роста размеров обрабатываемой информации. Еще в 1980-х гг., например, нормой считалось использование гибких дискет (FDD) емкостью 1.44 мегабайта для резервного копирования. Сейчас устройствами FDD настольные и портативные компьютеры вообще не комплектуются, а, что касается резервного копирования, то и устройств емкостью 128 гигабайт может оказаться недостаточно для этой цели.

Обзор аппаратуры ввода-вывода дан в "Особенности ОС для различных классов компьютерных систем. ОС реального времени. ОС для облачных вычислений ". Набор устройств включает, в частности:

  • клавиатуру и мышь;

  • жесткие диски (HDD), включая внутренние и внешние (ZIV drives);

  • flash-память;

  • ленточные стримеры;

  • компакт-диски BluRay, DVD, CD;

  • твердотельные накопители на магнитных дисках (solid state disks – SSD);

  • ZIP drives, JAZ drives – уже устаревающие, но еще используемые устройства для резервного копирования со съемными носителями (их постепенно вытесняет флэш-память, физические размеры модулей которой гораздо меньше, а емкость – больше);

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

  • устройства для мультимедийного ввода-вывода: порты и адаптеры IEEE 1394 (Fire-Wire) для подключения цифровых видеоустройств; порты и адаптеры High Definition Multimedia Interface (HDMI) для подключения видеоаппаратуры стандарта High Definition (HD); кард-ридеры для нескольких форматов (SmartMedia и др.) носителей, используемых в цифровых фотоаппаратах;

  • мониторы, видеокарты (видеоадаптеры) и графические процессоры, в том числе – многоядерные;

  • принтеры, сканеры.

Основные концепции

Рассмотрим общие концепции аппаратуры и ОС, связанные с устройствами ввода-вывода.

Каждое устройство подключается к компьютерной системе через порт – контроллер и разъем (либо беспроводное устройство) для передачи данных между устройством ввода-вывода и компьютером. Каждый порт имеет свое традиционное обозначение и свой номер в системе. Порт может существовать физически, как разъем для проводного соединения и связанный с ним контроллер порта (например, USB – универсальный порт для подключения широкого спектра устройств; LPT – порт для подключения принтеров и сканеров), либо может быть организован операционной системой как виртуальный порт для унификации обработки внешних устройств. Виртуальные порты, обычно – коммуникационные порты (COM) с большими номерами – например, COM10, COM15, - организуются для обмена с устройствами беспроводной связи – например, мобильными телефонами и органайзерами. Беспроводная связь чаще всего организуется через Bluetooth – радиосвязь на расстоянии до 20 м, в новых стандартах – до 1 км.

Шина (bus) - это цепочка устройств прямого доступа в компьютерной системе, через которую передается информация от одних устройств к другим. Обычно в настольных и портативных компьютерах используется шина PCI (Personal Computer Interface), тактовая частота которой в современных компьютерах 1 – 1.5 GHz. Она фактически и определяет суммарную производительность компьютерной системы. К шине PCI подключены контроллеры внешних устройств и портов.

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

Типовая структура общей шины персонального компьютера изображена на рис. 21.1.

Рис. 21.1.  Типовая структура общей шины персонального компьютера.

Некоторые пояснения к схеме.

IDE – типовой интерфейс для подключения внутри корпуса компьютера через шлейфы внутренних жестких дисков, устройств CD – и DVD-ROM. Шлейф имеет характерную плоскую форму, шириной 2 -3 см, очень малой толщины, с широким разъемом. В современных компьютерах для внутренних дисков вместо IDE используется более высокоскоростной интерфейс SATA.

Контроллер и шина SCSI – возможность подключения к одному SCSI-порту цепочки (гирлянды) SCSI-устройств (дисков, сканеров, устройств CD-ROM и DVD-ROM и др.), каждое из которых имеет свой, уникальный в данной цепочке, номер – SCSI ID от 0 до 9. Удобство интерфейса SCSI в том, что цепочка организуется из внешних устройств, каждое из которых соединяется SCSI-кабелем со следующим, а последнее устройство в цепочке содержит включенный терминатор, обозначающий конец цепочки. Это удобно при наращивании объема внешней памяти компьютера. SCSI-устройства использовались автором на рабочих станциях SPARC фирмы Sun, которая являлась одним из активных сторонников интерфейса SCSI (Small Computer System Interface).

В таблица 1 приведен пример адресов внешних устройств персонального компьютера.

Таблица 1. Пример таблицы адресов внешних устройств ПК (частично)

диапазон адресов устройств ввода-вывода (шестнадцатиричных

устройство

000-00F

DMA-контроллер

020-021

контроллер прерываний

040-043

таймер

200-20F

игровой контроллер

2F8-2FF

последовательный порт (вторичный)

320-32F

контроллер жесткого диска

378-37F

параллельный порт

3D0-3DF

графический контроллер

3F0-3F7

контроллер гибких дисков (дискет)

3F8-3FF

последовательный порт (первичный)

Опрос устройств

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

  • command-ready – готово к выполнению команд;

  • busy – занато;

  • error – ошибка.

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

Прерывания

Линия запросов на прерывания (interrupt request – IRQ) переключается устройством ввода-вывода, которое сигнализирует с помощью запроса на прерывание о начале или окончании ввода-вывода.

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

Вектор прерываний – резидентный массив, содержащий адреса обработчиков прерываний в операционной системе, - используется с целью переадресовки прерывания для обработки соответствующим обработчиком (handler).

Работа с вектором прерываний основана на приоритетах внешних устройств, инициировавших прерывания.

На рис. 21.2 приведена схема ввода-вывода, управляемого прерываниями.

Рис. 21.2.  Ввод-вывод, управляемый прерываниями.

В таблица 2 приведены номера прерываний в процессоре Intel Pentium.

Таблица 2. Tаблица номеров прерываний в процессоре Intel Pentium

Номер прерывания

Описание

0

ошибка при делении

1

исключение при отладке

2

прерывание по null

3

точка остановки

4

прерывание, обнаруженное INTO

5

исключение по выходу за границы

6

неверный код операции

7

устройство недоступно

8

двойное прерывание

9

переполнение сегмента сопроцессора

10

неверный сегмент состояния задачи

11

сегмент отсутствует

12

ошибка стека

13

общее прерывание по защите

14

отказ страницы

15

(зарезервировано Intel, не использовать)

16

ошибка в операции с плавающей точкой

17

контроль выравнивания

18

контроль аппаратуры

19-31

зарезервировано Intel, не использовать

32-255

маскируемые прерывания

Ввод-вывод с прямым доступом к памяти (DMA)

Как уже отмечалось ранее, при традиционной организации ввода-вывода контроллер устройства использует собственную буферную память, что приводит к необходимости двойной пересылки данных – сначала процессор пересылает данные в буфер, созданный ОС, затем ОС пересылает данные в буфер устройства. Ввод-вывод с прямым доступом к памяти (Direct Memory Access – DMA) - более эффективная схема организации ввода-вывода, основанная на использовании фрагмента основной памяти в качестве буфера устройства для выполнения ввода-вывода. Схема .используется с целью избежать программируемого ввода-вывода для больших пересылок данных. Схема требует специальной аппаратуры – DMA-контроллера – в настоящее время такие контроллеры приобретают все более широкое распространение. DMA позволяет избежать участия процессора в пересылках больших объемов данных непосредственно между устройством ввода-вывода и памятью.

На рис. 21.3 приведена схема организации DMA.

Рис. 21.3.  Процесс выполнения ввода-вывода по схеме DMA.

Программный интерфейс ввода-вывода

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

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

Более низкий уровень, уровень драйверов устройств, скрывает различия между контроллерами ввода-вывода конкретных устройств от ядра ОС.

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

  • Устройство для работы с потоками символов или с блоками;

  • Устройство последовательного или прямого доступа;

  • Разделяемое или специализированное (монополизируемое) устройство;

  • Различия по скорости выполнения операций устройствами;

  • Устройство для чтения/записи, или только для чтении, или только для записи.

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

Рис. 21.4.  Структура модулей ввода-вывода в ядре ОС.

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

Таблица 3. Характеристики устройств ввода-вывода

классификация

варианты

примеры

режим передачи данных

  • символьный

  • блочный

  • терминал

  • диск

метод доступа

  • последовательный

  • произвольный

  • модем

  • CD-ROM

метод передачи данных

  • синхронный

  • асинхронный

  • лента

  • клавиатура

возможность совместного доступа

  • монопольный

  • общий

  • лента

  • клавиатура

скорость устройства

  • латентность

  • время поиска

  • скорость передачи

  • задержка между операциями

направленнность ввода-вывода

  • только чтение

  • только запись

  • чтение-запись

  • CD-ROM

  • графический контроллер

  • диск

Блочные и символьные устройства

Типичный пример блочного устройства – устройство управления дисками. Оно выполняет команды вида: read, write, seek (считать, записать или найти блок с заданным номером). Устройство может выполнять чистый ввод-вывод или доступ к файловой системе. Имеется возможность доступа к файлу, отображаемому в память.

Типичные примеры символьных устройств – клавиатура, мышь, последовательные порты. Такие устройства выполняют команды вида: get, put (считать или записать символ). Библиотеки верхнего уровня в операционной системе для символьных устройств допускают построчное редактирование посимвольно введенной информации.

Сетевые устройства существенно отличаются от блочных и символьных; имеют свой собственный интерфейс и систему команд

Сетевые устройства и их драйверы в ОС поддерживают традиционные или специфические сетевые протоколы и способы передачи информации через сеть. Например, ОС UNIX и Windows NT / 9x / 2000 поддерживают сокетный интерфейс. Сетевое устройство отделяет сетевой протокол от сетевой операции. Команды сетевых устройств включают функцию select – выбор сетевого пакета. Сетевые устройства различны по подходам к реализации (конвейеры, pipes, FIFO, потоки, очереди, почтовые ящики). В типичной конфигурации настольного или портативного компьютера присутствуют следующие сетевые устройства:

  • сетевой адаптер локальной сети (Ethernet), имеющий разъем типа RJ45 для подключения сетевого кабеля twisted pair (витая пара) или BNC (коаксиального);

  • устройство для подключения к беспроводной сети типа IEEE.802.11x (Wi-Fi);

  • устройство для подключения к локальной сети IEEE 1394 (FireWire) для передачи цифрового видео;

  • уже несколько устаревший, но до сих пор используемый в компьютерах способ подсоединения к сети Интернет - встроенный модем для передачи информации по телефонной линии (dial-up) со скоростью максимум порядка 5-6 килобайт в секунду.

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

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

Сетевые протоколы подробно рассмотрены далее в специальных разделах курса.

Часы и таймеры

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

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

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

Блокируемый (синхронный) и не блокируемый (асинхронный) ввод-вывод

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

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

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

Подсистема ввода-вывода в ядре ОС

Операционная система управляет устройствами ввода-вывода.

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

ОС обеспечивает буферизацию – запись данных в память в процессе передачи между устройствами. Цели буферизации:

  • балансировка устройств с разными скоростями;

  • сглаживание несоответствия размера данных для работы с устройством;

  • поддержка "семантики копирования".

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

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

ОС выполняет также резервирование устройства – обеспечение монопольного доступа к нему. Имеются системные вызовы для занятия и освобождения устройства монопольного доступа. ОС контролирует отсутствие тупиков (deadlocks), которые возможны при монопольном использовании устройств.

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

Структуры данных для ввода-вывода в ядре ОС

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

Структура модулей ввода-вывода в системе UNIX изображена на рис. 21.5.

Рис. 21.5.  Структура модулей ввода-вывода в ядре UNIX.

Жизненный цикл запроса на ввод-вывод

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

  • Определяется устройство, на котором хранится файл;

  • Выполняется трансляция имени в представление устройства;

  • Физически считанные данные с диска размещаются в буфере;

  • Данные становятся доступными для запросившего их процесса;

  • Управление возвращается процессу.

Жизненный цикл запроса на ввод-вывод изображен на рис. 21.6.

Рис. 21.6.  Жизненный цикл запроса на ввод-вывод.

Производительность ввода-вывода

Ввод-вывод – важный фактор в производительности системы. Имеются несколько факторов, определяющих, насколько ввод-вывод критичен по эффективности в системе:

  • Ввод-вывод требует от процессора исполнения драйвера устройства - кода уровня ядра ОС;

  • Необходимо выполнять контекстные переключения, связанные с прерываниями;

  • Необходимо выполнять копирование данных.

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

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

Рис. 21.7.  Схема взаимодействия компьютеров при наборе символьной информации и передачи ее через сеть.

Выводы. Для повышения производительности ввода-вывода и сетевого взаимодействия в системе необходимо:

  • Сократить число контекстных переключений;

  • Сократить объем копирования данных;

  • Сократить число прерываний, используя большие переходы, интеллектуальные контроллеры и опрос устройств;

  • Использовать DMA (Direct Memory Access);

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

Соседние файлы в папке все лекции по ОС