Системы ввода-вывода
Ключевые термины
PCI (Peripheral Computer Interface) – системная шина, используемая в персональных компьютерах, к которой подключены процессор, память и внешние устройства.
SCSI ID – номер SCSI-устройства в цепочке SCSI-устройств (от 0 до 9), устанавливаемый непосредственно на корпусе устройства специальным переключателем.
Буферизация – запись данных в память в процессе передачи между устройствами.
Буферизация вывода (spooling) – задержка вывода на устройство, с целью поддержания целостности информации, выводимой одним и тем же процессом.
Ввод-вывод с прямым доступом к памяти (Direct Memory Access – DMA) - эффективная схема организации ввода-вывода, основанная на использовании фрагмента основной памяти в качестве буфера устройства для выполнения ввода-вывода.
Вектор прерываний – резидентный массив, содержащий адреса обработчиков прерываний в операционной системе.
Виртуальный порт – реально в физическом воплощении не существующий порт, организуемый и инсталлируемый операционной системой для унификации обработки внешних устройств; как правило – коммуникационный порт с большим номером (COM10, COM15), используемый для обмена с устройствами беспроводной связи – например, мобильными телефонами и органайзерами.
Контроллер (host adapter) – специализированный микропроцессор для управления внешним устройством и портом.
Маскируемый (maskable) сигнал о прерывании – сигнал о прерывании, заблокированный с целью игнорирования или задержки прерывания.
Обработчик прерывания – модуль ядра ОС, осуществляющий обработку прерывания с заданным номером.
Опрос устройств – периодический анализ состояния каждого внешнего устройства, выполняемый операционной системой при обработке прерывания по таймеру.
Порт – контроллер и разъем (либо беспроводное устройство) для передачи данных между устройством ввода-вывода и компьютером.
Резервирование устройства – обеспечение операционной системой монопольного доступа пользовательских процессов к устройству ввода-вывода.
Сетевое соединение (network connection) – высокоуровневая концепция, абстракция сетевого устройства, поддерживаемая операционной системой для пользователя.
Цепочка (гирлянда) SCSI-устройств – физически соединенные друг с другом SCSI-устройства, подключенные к одному SCSI-порту и имеющие разные номера SCSI ID.
Цикл busy-wait – взаимодействие процессора с внешним устройством, при котором, если устройство занято, процесс ждет его освобождения.
Шина (bus) - цепочка устройств прямого доступа в компьютерной системе, через которую передается информация от одних устройств к другим.
Шлейф – широкий плоский кабель, используемый внутри корпуса компьютера для подсоединения дисков и оптических дисков к системной шине.
Краткие итоги
Набор устройств ввода-вывода весьма широк, он постоянно развивается и совершенствуется, значительно увеличивается быстродействие и емкость устройств.
В компьютерной системе каждое устройство ввода-вывода подключено к соответствующему порту. Устройство и порт имеют свои контроллеры – специализированные процессоры для управления ими. Процессор, память и внешние устройства в системе соединены общей системной шиной (наиболее распространена шина PCI). Каждое устройство имеет адрес, используемый командами непосредственного ввода-вывода и ввода-вывода, отображаемого в память.
ОС периодически, с помощью прерываний по таймеру, выполняет опрос всех внешних устройств – проверку их состояния. Возможные состояния: готово к выполнению команд, занято, ошибка.
Контроллер устройства по окончании ввода-вывода генерирует сигнал о прерывании, в результате управление получает обработчик прерывания – модуль ядра ОС. Указатели обработчиков всех видов прерываний собраны в резидентный массив – вектор прерываний.
Для оптимизации ввода-вывода используется прямой доступ к памяти (DMA) – метод организации ввода-вывода, при котором в качестве буфера устройства используется фрагмент основной памяти. Данный метод основан на использовании специальных DMA-контроллеров. DMA позволяет разгрузить процессор, освободив его от работы по пересылки данных для ввода-вывода.
В операционной системе API для ввода-вывода имеет иерархическую структуру. Системные вызовы – верхний уровень – инкапсулируют поведение устройств ввода-вывода. Более низкий уровень – драйверы устройств – скрывают различия между контроллерами устройств от ядра ОС.
Устройства ввода-вывода подразделяются на блочные и символьные, последовательного и произвольного доступа, резервируемое или разделяемое, только для чтения, для записи или для чтения-записи, и различаются по скоростям работы. Блочные устройства выполняют команды вида: прочитать, записать или найти блок с заданным номером. Символьные устройства выполняют команды вида: ввести символ, вывести символ, с программируемой возможностью построчного редактирования.
Сетевые устройства отличаются от блочных и символьных, имеют свой собственный интерфейс, поддерживают распространенные сетевые протоколы, реализуют функцию выбора сетевого пакета.
Часы и таймеры обеспечивают хранение информации о текущем времени, прошедшем интервале времени, периодические прерывания по таймеру.
Ввод-вывод подразделяется на синхронный и асинхронный. Первый проще для понимания, но менее эффективен. Второй более эффективен, но требует глубокого понимания и осторожности, чтобы избежать ошибок.
Основные действия ОС по управлению вводом-выводом: планирование работы устройств ввода-вывода; буферизация устройств; кэширование устройств; буферизация вывода (spooling); резервирование устройств и контроль отсутствия тупиков.
ОС обрабатывает ошибки ввода-вывода, поддерживает восстановление информации после чтения с диска, недоступности устройства, временных сбоев. Процессу возвращается код ошибки. В системных журналах фиксируется информация обо всех обнаруженных проблемах.
В ядре ОС хранится большое число сложных системных структур (очередей, таблиц, заголовков открытых файлов и др.) для управления вводом-выводом.
Производительность ввода-вывода улучшается при сокращении числа контекстных переключений, сокращении копирования данных, сокращении числа прерываний, использовании DMA, балансировке нагрузки на компоненты системы.
Набор для практики
Вопросы
- Какие виды устройств ввода-вывода используются в компьютерных системах?
- Что такое порт?
- Что такое виртуальный порт?
- Что такое системная шина?
- Что такое контроллер?
- Что такое опрос устройств?
- Каковы возможные состояния устройства?
- Каким образом генерируется прерывание об окончании ввода-вывода?
- Что такое маскируемый сигнал о прерывании и какова цель маскирования?
- Что такое DMA и какова его цель?
- На какие виды делятся устройства по специфике обрабатываемой информации?
- На какие виды делятся устройства с точки зрения организации методов доступа?
- Приведите примеры блочных устройств.
- Приведите примеры символьных устройств.
- Каковы особенности сетевых устройств?
- Для чего используются часы и таймеры?
- Какие два метода организации ввода-вывода используются в системах, с точки зрения синхронизации процесса и инициируемого им ввода-вывода?
- Какие основные функции выполняет ОС для организации ввода-вывода?
- Что такое буферизация устройств?
- Что такое кэширование устройств?
- Что такое планирование устройств?
- Что такое резервирование устройств?
- Что такое spooling?
- Как обрабатывается запрос процесса на ввод-вывод?
- Какие факторы влияют на производительность ввода-вывода?
Упражнения
- Реализуйте модель взаимодействия процессора, драйвера устройства, контроллера устройства при обработке запроса на ввод-вывод.
- Изучите и опишите в виде таблицы типы и номера прерываний в используемом Вами компьютере.
- Реализуйте модель части операционной системы и аппаратуры, выполняющей обработку ввода-вывода на одном внешнем устройстве (системные вызовы, драйвер устройства, контроллер устройства).
- Реализуйте синхронным и асинхронным методом копирование содержимого одного файла в другой, проанализируйте результаты и сравните время выполнения в обоих случаях.
Темы для курсовых работ, рефератов, эссе
- Обзор видов внешних устройств в современных компьютерах (реферат).
- Обзор видов прерываний и методов их обработки в современных компьютерах (реферат).
- Метод DMA и DMA-контроллеры (реферат).
- Обзор архитектур реализаций ввода-вывода в операционных системах (реферат),
- Обзор сетевых устройств в компьютерных системах (реферат).
- Реализация модели взаимодействия процессора, драйвера устройства, контроллера устройства при обработке запроса на ввод-вывод (курсовая работа).
- Реализация модели части операционной системы и аппаратуры, выполняющей обработку ввода-вывода на одном внешнем устройстве (системные вызовы, драйвер устройства, контроллер устройства) (курсовая работа)..
- Реализация синхронным и асинхронным методом копирования содержимого одного файла в другой и сравнительный анализ производительности (курсовая работа).