Презентацию к данной лекции Вы можете скачать здесь.
Введение
Устройства и системы ввода-вывода в современных компьютерных и операционных системах весьма разнообразны. В лекции рассмотрены следующие вопросы:
Аппаратура ввода-вывода
Интерфейс приложений для ввода-вывода
Подсистема ввода-вывода в ядре ОС
Преобразование запросов на ввод-вывод в аппаратные операции
Производительность систем ввода-вывода.
Аппаратура ввода-вывода
В настоящее время наблюдается все более и более активное развитие устройств ввода-вывода в компьютерных системах. В значительной степени это объясняется, во-первых, необходимостью ввода, обработки и вывода мультимедийной информации (аудио, видео, цифровых фотографий, отсканированных образов и других изображений), во-вторых, постоянной потребностью в увеличении скорости и емкости устройств вследствие гигантского роста размеров обрабатываемой информации. Еще в 1980-х гг., например, нормой считалось использование гибких дискет (FDD) емкостью 1.44 мегабайта для резервного копирования. Сейчас устройствами FDD настольные и портативные компьютеры вообще не комплектуются, а, что касается резервного копирования, то и устройств емкостью 128 гигабайт может оказаться недостаточно для этой цели.
Обзор аппаратуры ввода-вывода дан в . Набор устройств включает, в частности:
клавиатуру и мышь;
жесткие диски (HDD), включая внутренние и внешние;
flash-память;
ленточные стримеры;
компакт-диски BluRay, DVD, CD;
твердотельные накопители на магнитных дисках (solid state disks – SSD);
ZIP drives, JAZ drives – уже устаревающие, но еще используемые устройства для резервного копирования со съемными носителями (их постепенно вытесняет флэш-память, физические размеры модулей которой гораздо меньше, а емкость – больше);
магнито-оптические диски – ныне уже устаревшие устройства для резервного копирования, но долгое время использовавшиеся;
устройства для мультимедийного ввода-вывода: порты и адаптеры IEEE 1394 (Fire-Wire) для подключения цифровых видеоустройств; порты и адаптеры High Definition Multimedia Interface (HDMI) для подключения видеоаппаратуры стандарта High Definition (HD); кард-ридеры для нескольких форматов (SmartMedia и др.) носителей, используемых в цифровых фотоаппаратах;
мониторы, видеокарты (видеоадаптеры) и графические процессоры, в том числе – многоядерные;
принтеры, сканеры.
Основные концепции
Рассмотрим общие концепции аппаратуры и ОС, связанные с устройствами ввода-вывода.
Каждое устройство подключается к компьютерной системе через порт – контроллер и разъем (либо беспроводное устройство) для передачи данных между устройством ввода-вывода и компьютером. Каждый порт имеет свое традиционное обозначение и свой номер в системе. Порт может существовать физически, как разъем для проводного соединения и связанный с ним контроллер порта (например, USB – универсальный порт для подключения широкого спектра устройств; LPT – порт для подключения принтеров и сканеров), либо может быть организован операционной системой как виртуальный порт для унификации обработки внешних устройств. Виртуальные порты, обычно – коммуникационные порты (COM) с большими номерами – например, COM10, COM15, - организуются для обмена с устройствами беспроводной связи – например, мобильными телефонами и органайзерами. Беспроводная связь чаще всего организуется через Bluetooth – радиосвязь на расстоянии до 20 м, в новых стандартах – до 1 км.
Шина (bus) - это цепочка устройств прямого доступа в компьютерной системе, через которую передается информация от одних устройств к другим. Обычно в настольных и портативных компьютерах используется шина PCI (Peripheral Computer Interface),тактовая частота которой в современных компьютерах 1 – 1.5 GHz. Она фактически и определяет суммарную производительность компьютерной системы. К шине PCI подключены контроллеры внешних устройств и портов.
Контроллер (host adapter) – специализированный микропроцессор для управления внешним устройством и портом. Контроллер внешнего устройства – это устройство управления командами ввода-вывода с данным внешним устройством. Устройства имеют адреса, используемые командами непосредственного ввода-вывода и командами ввода-вывода, отображаемого в память. Каждый контроллер устройства использует свой буфер памяти для хранения одного или нескольких блоков информации, расположенный либо в специализированной памяти устройства (контроллера), либо являющийся частью оперативной памяти компьтерной системы.
Типовая структура общей шины персонального компьютера изображена на рис 21.1.
(рис 21.1) Типовая структура общей шины персонального компьютера.
Некоторые пояснения к схеме.
IDE – типовой интерфейс для подключения внутри корпуса компьютера через .Шлейф имеет характерную плоскую форму, шириной 2 -3 см, очень малой толщины, с широким разъемом. В современных компьютерах для внутренних дисков вместо IDE используется более высокоскоростной интерфейс SATA.
Контроллер и шина SCSI – возможность подключения к одному SCSI-порту цепочки (гирлянды) SCSI-устройств (дисков, сканеров, устройств CD-ROM и DVD-ROM и др.), каждое из которых имеет свой, уникальный в данной цепочке, номер – SCSI ID от 0 до 9. Удобство интерфейса SCSI в том, что цепочка организуется из внешних устройств, каждое из которых соединяется SCSI-кабелем со следующим, а последнее устройство в цепочке содержит включенный терминатор, обозначающий конец цепочки. Это удобно при наращивании объема внешней памяти компьютера. SCSI-устройства использовались автором на рабочих станциях SPARC фирмы Sun, которая являлась одним из активных сторонников интерфейса SCSI (Small Computer System Interface).
В таблица 1 приведен пример адресов внешних устройств персонального компьютера.
Пример таблицы адресов внешних устройств ПК (частично)
| диапазон адресов устройств ввода-вывода (шестнадцатиричных) | устройство |
| 000-00F |
DMA-контроллер |
| 020-021 |
контроллер прерываний |
| 040-043 |
таймер |
| 200-20F |
игровой контроллер |
| 2F8-2FF |
последовательный порт (вторичный) |
| 320-32F |
контроллер жесткого диска |
| 378-37F |
параллельный порт |
| 3D0-3DF |
графический контроллер |
| 3F0-3F7 |
контроллер гибких дисков (дискет) |
| 3F8-3FF |
последовательный порт (первичный) |
Опрос устройств
Операционная система с помощью прерываний по таймеру организует опрос устройств – периодический анализ состояния каждого внешнего устройства. В процессе работы в состоянии устройств могли произойти изменения, например, пользователь установил флэшку в USB-порт, включил или выключил принтер и т.д. При опросе устройств ОС определяет состояние каждого устройства, которое может быть следующим:
command-ready – готово к выполнению команд;
busy – занято;
error – ошибка.
При выполнении ввода-вывода аппаратура организует цикл busy-wait ожидания ввода-вывода с устройством: если устройство занято, процесс ждет его освобождения.
Прерывания
Линия запросов на прерывания (interrupt request – IRQ) переключается устройством ввода-вывода, которое сигнализирует с помощью запроса на прерывание о начале или окончании ввода-вывода.
Обработчик прерываний получает сигнал о прерывании. Сигнал может быть замаскирован (maskable),чтобы игнорировать или задержать прерывание – например, если прерывание произошло в обработчике другого прерывания.
Вектор прерываний – резидентный массив, содержащий адреса обработчиков прерываний в операционной системе, - используется с целью переадресовки прерывания для обработки соответствующим обработчиком (handler).
Работа с вектором прерываний основана на приоритетах внешних устройств, инициировавших прерывания.
На рис 21.2 приведена схема ввода-вывода, управляемого прерываниями.
(рис 21.2) Ввод-вывод, управляемый прерываниями.
В таблица 2 приведены номера прерываний в процессоре Intel Pentium.
Tаблица номеров прерываний в процессоре Intel Pentium
| Номер прерывания | Описание |
| 0 |
ошибка при делении |
| 1 |
исключение при отладке |
| 2 |
прерывание по null |
| 3 |
точка остановки |
| 4 |
прерывание, обнаруженное INTO |
| 5 |
исключение по выходу за границы |
| 6 |
неверный код операции |
| 7 |
устройство недоступно |
| 8 |
двойное прерывание |
| 9 |
переполнение сегмента сопроцессора |
| 10 |
неверный сегмент состояния задачи |
| 11 |
сегмент отсутствует |
| 12 |
ошибка стека |
| 13 |
общее прерывание по защите |
| 14 |
отказ страницы |
| 15 |
(зарезервировано Intel, не использовать) |
| 16 |
ошибка в операции с плавающей точкой |
| 17 |
контроль выравнивания |
| 18 |
контроль аппаратуры |
| 19-31 |
зарезервировано Intel, не использовать |
| 32-255 |
маскируемые прерывания |
Ввод-вывод с прямым доступом к памяти (DMA)
Как уже отмечалось ранее, при традиционной организации ввода-вывода контроллер устройства использует собственную буферную память, что приводит к необходимости двойной пересылке данных – сначала процессор пересылает данные в буфер, созданный ОС, затем ОС пересылает данные в буфер устройства. Ввод-вывод с прямым доступом к памяти (Direct Memory Access – DMA) - более эффективная схема организации ввода-вывода, основанная на использовании фрагмента основной памяти в качестве буфера устройства для выполнения ввода-вывода. Схема .используется с целью избежать программируемого ввода-вывода для больших пересылок данных. Схема требует специальной аппаратуры – DMA-контроллера – в настоящее время такие контроллеры приобретают все более широкое распространение. DMA позволяет избежать участия процессора в пересылках больших объемов данных непосредственно между устройством ввода-вывода и
памятью.
На рис 21.3 приведена схема организации DMA.
(рис 21.3) Процесс выполнения ввода-вывода по схеме DMA.
Программный интерфейс ввода-вывода
При проектировании и реализации программного интерфейса (API) ввода-вывода используются принципы уровней абстракции.
Модули операционной системы, реализующие системные вызовы для ввода-вывода, инкапсулируют поведение конкретных устройств ввода-вывода и обеспечивают более абстрактный интерфейс.
Более низкий уровень, уровень драйверов устройств, скрывает различия между контроллерами ввода-вывода конкретных устройств от ядра ОС.
Устройства ввода-вывода различаются по многим параметрам в силу их специфики, например:
Устройство для работы с потоками символов или с блоками;
Устройство последовательного или прямого доступа;
Разделяемое или специализированное (монополизируемое) устройство;
Различия по скорости выполнения операций устройствами;
Устройство для чтения/записи, или только для чтении, или только для записи.
Структура модулей ввода-вывода в ядре, разработанная и реализованная по этим
принципам, изображена на рис 21.4.
(рис 21.4) Структура модулей ввода-вывода в ядре ОС.
Классификация устройств ввода-вывода по различным характеристикам и их примеры приведены в таблица 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): ввод-вывод выделяется в отдельный поток. Из системных вызовов для ввода-вывода предусмотрен быстрый возврат с выдачей в качестве результата числа байтов, фактически прочитанного или записанного.
Асинхронный ввод-вывод основан на иной парадигме: процесс исполняется одновременно с выполнением ввода-вывода. Вследствие этого, он более сложен в использовании, так как большинство программистов до сих пор привыкли мыслить и реализовывать программы в последовательном стиле. После завершения асинхронного ввода-вывода подсистема ввода-вывода генерирует сигнал (исключение) в процессе, его использующем. Программирование асинхронного ввода-вывода основано на использовании пары операций типа начать асинхронный ввод-вывод и закончить асинхронный ввод-вывод (подождать его результатов). Такая схема чревата ошибками, так как программистам свойственно забывать завершающие действия, парные инициализирующим, если среда разработки им об этом не напоминает. Однако именно асинхронный ввод-вывод обеспечивает наибольшую эффективность.
Подсистема ввода-вывода в ядре ОС
Операционная система управляет устройствами ввода-вывода.
ОС осуществляет планирование, включая упорядочение запросов на ввод-вывод в очередях к каждому устройству.
ОС обеспечивает буферизацию – запись данных в память в процессе передачи между устройствами. Цели буферизации:
балансировка устройств с разными скоростями;
сглаживание несоответствия размера данных для работы с устройством;
поддержка "семантики копирования".
Как неоднократно отмечалось, для оптимизации работы с внешними устройствами организуется кэширование – использование быстрой память, в которой хранится копия данных (фактически в ней сохраняются наиболее часто используемые блоки). Следует, однако, иметь в виду, что содержимое кэш-памяти - всегда только копия реальных данных, поэтому в некоторых случаях приходится синхронизировать содержимое кэша с содержимым диска, чтобы не допустить рассогласованности информации. Кэширование - ключ к повышению производительности дисковых устройств.
Весьма важна также такая функция ОС, как буферизация вывода (spooling) – задержка вывода на устройство, с целью поддержания целостности информации, выводимой одним и тем же процессом. Типичный пример – печать на принтер.
ОС выполняет также резервирование устройства – обеспечение монопольного доступа к нему. Имеются системные вызовы для занятия и освобождения устройства монопольного доступа. ОС контролирует отсутствие тупиков (deadlocks), которые возможны при монопольном использовании устройств.
ОС выполняет обработку ошибок ввода-вывода. Система поддерживает восстановление информации после чтения с диска, недоступности устройства, временных сбоев при записи. В большинстве случаев возвращается номер (код) ошибки, в случае, если запрос на ввод-вывод завершается неудачно. В системные журналы записывается информация об обнаруженных проблемах.
Структуры данных для ввода-вывода в ядре ОС
В ядре ОС хранится информация о состоянии для компонент ввода-вывода, включая таблицы открытых файлов, сетевых соединений, состояние символьных устройств. Она представляет собой большое число сложных структур данных (очередей ввода-вывода и таблиц устройств) для контроля буферов, распределения памяти и др. Реализация многих из этих системных структур использует объектно-ориентированные методы и передачу сообщений.
Структура модулей ввода-вывода в системе UNIX изображена на рис 21.5.
(рис 21.5) Структура модулей ввода-вывода в ядре UNIX.
Жизненный цикл запроса на ввод-вывод
Рассмотрим более подробно процесс чтения из дискового файла. Он состоит из следующих этапов:
Определяется устройство, на котором хранится файл;
Выполняется трансляция имени в представление устройства;
Физически считанные данные с диска размещаются в буфере;
Данные становятся доступными для запросившего их процесса;
Управление возвращается процессу.
Жизненный цикл запроса на ввод-вывод изображен на рис 21.6.
(рис 21.6) Жизненный цикл запроса на ввод-вывод.
Производительность ввода-вывода
Ввод-вывод – важный фактор в производительности системы. Имеются несколько факторов, определяющих, насколько ввод-вывод критичен по эффективности в системе:
Ввод-вывод требует от процессора исполнения драйвера устройства - кода уровня ядра ОС;
Необходимо выполнять контекстные переключения, связанные с прерываниями;
Необходимо выполнять копирование данных.
Особенно напряженным в любой компьютерной системе является сетевой трафик, так как его скорость фактически определяет скорость и производительность работы всей распределенной системы (например, работы с удаленными файловыми системами), а также скорость получения информации из Интернета или корпоративной сети.
На рис 21.7 изображена детальная схема взаимодействия компьютеров при наборе символьной информации и передачи ее через сеть. Схема дает представление о сложности взаимодействия, действиях аппаратуры и программного обеспечения, выполняемых для каждого набранного и передаваемого символа, количестве прерываний, их обработок и соответствующих контекстных переключений.
(рис 21.7) Cхема взаимодействия компьютеров при наборе символьной информации и передачи ее через сеть.
Выводы. Для повышения производительности ввода-вывода и сетевого взаимодействия в системе необходимо:
Сократить число контекстных переключений;
Сократить объем копирования данных;
Сократить число прерываний, используя большие переходы, интеллектуальные контроллеры и опрос устройств;
Использовать DMA (Direct Memory Access);
Сбалансировать нагрузку на процессор, память и шину и производительность ввода-вывода с целью повышения суммарной производительности.
Ключевые термины
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-контроллеры (реферат).
Обзор архитектур реализаций ввода-вывода в операционных системах (реферат),
Обзор сетевых устройств в компьютерных системах (реферат).
Реализация модели взаимодействия процессора, драйвера устройства, контроллера устройства при обработке запроса на ввод-вывод (курсовая работа).
Реализация модели части операционной системы и аппаратуры, выполняющей обработку ввода-вывода на одном внешнем устройстве (системные вызовы, драйвер устройства, контроллер устройства) (курсовая работа)..
Реализация синхронным и асинхронным методом копирования содержимого одного файла в другой и сравнительный анализ производительности (курсовая работа).