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


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

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

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

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

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

В операционной системе API для ввода-вывода имеет иерархическую структуру. Системные вызовы – верхний уровень – инкапсулируют поведение устройств ввода-вывода. Более низкий уровень – драйверы устройств – скрывают различия между контроллерами устройств от ядра ОС.

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

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

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

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

Основные действия ОС по управлению вводом-выводом: планирование работы устройств ввода-вывода; буферизация устройств; кэширование устройств; буферизация вывода (spooling); резервирование устройств и контроль отсутствия тупиков.

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

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

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