Спонсор: Microsoft
Опубликован: 13.11.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Лекция 21:

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

< Лекция 20 || Лекция 21: 12345 || Лекция 22 >

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

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

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

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

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

  • Устройство для работы с потоками символов или с блоками;
  • Устройство последовательного или прямого доступа;
  • Разделяемое или специализированное (монополизируемое) устройство;
  • Различия по скорости выполнения операций устройствами;
  • Устройство для чтения/записи, или только для чтении, или только для записи.

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

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

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

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

Таблица 3. Характеристики устройств ввода-вывода
классификация варианты примеры
режим передачи данных
  • символьный
  • блочный
  • терминал
  • диск
метод доступа
  • последовательный
  • произвольный
  • модем
  • CD-ROM
метод передачи данных
  • синхронный
  • асинхронный
  • лента
  • клавиатура
возможность совместного доступа
  • монопольный
  • общий
  • лента
  • клавиатура
скорость устройства
  • латентность
  • время поиска
  • скорость передачи
  • задержка между операциями
направленнность ввода-вывода
  • только чтение
  • только запись
  • чтение-запись
  • CD-ROM
  • графический контроллер
  • диск

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

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

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

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

Сетевые устройства и их драйверы в ОС поддерживают традиционные или специфические сетевые протоколы и способы передачи информации через сеть. Например, ОС 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): ввод-вывод выделяется в отдельный поток. Из системных вызовов для ввода-вывода предусмотрен быстрый возврат с выдачей в качестве результата числа байтов, фактически прочитанного или записанного.

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

< Лекция 20 || Лекция 21: 12345 || Лекция 22 >
Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Олег Волков
Олег Волков
Россия, Балаково, МБОУ СОШ 19