Спонсор: 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 >
Василий Четвертаков
Василий Четвертаков
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Константин Леденев
Константин Леденев
Россия
Олег Равков
Олег Равков
Россия