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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Определяется устройство, на котором хранится файл;
  • Выполняется трансляция имени в представление устройства;
  • Физически считанные данные с диска размещаются в буфере;
  • Данные становятся доступными для запросившего их процесса;
  • Управление возвращается процессу.

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

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

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

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

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

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

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

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

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

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

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

  • Сократить число контекстных переключений;
  • Сократить объем копирования данных;
  • Сократить число прерываний, используя большие переходы, интеллектуальные контроллеры и опрос устройств;
  • Использовать DMA (Direct Memory Access);
  • Сбалансировать нагрузку на процессор, память и шину и производительность ввода-вывода с целью повышения суммарной производительности.
< Лекция 20 || Лекция 21: 12345 || Лекция 22 >
Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Олег Волков
Олег Волков
Россия, Балаково, МБОУ СОШ 19