- •Синхронизация скоростей обмена данными
- •Разделение устройств и данных между процессами
- •Поддержка синхронных и асинхронных операций ввода-вывода
- •Менеджер ввода-вывода
- •Способы доступа к устройствам ввода-вывода
- •Способы реализации ввода - вывода
- •Драйверы
- •Функции драйвера
- •Многоуровневые драйверы
- •Байт и Блок -ориентированность
- •Динамическая загрузка и выгрузка драйверов
- •Типы файлов
- •Создавать,
- •Иерархия файловой системы
- •Имена файлов
- •Монтирование
- •Атрибуты файлов
- •Вопросы по модулю №2
В
ведение
в операционные системы Модуль 2 стр.
Введение в операционные системы
Модуль 2
Подсистема ввода - вывода
В современных ОС функции обмена данными с периферийными устройствами выполняет подсистема ввода-вывода (Input/Output Subsystem или IOS).
Клиенты IOS:
1 Приложения.
2 Компоненты ОС (для получение системных данных или их вывод).
Основными компонентами IOS являются:
драйверы (управляющие ВУ);
файловые системы.
Задачи ОС по управлению файлами и устройствами
IOS мультизадачной ОС при обмене данными с внешними устройствами компьютера должна решать ряд общих задач, из которых наиболее важными являются следующие:
1) организация параллельной работы устройств I/O и процессора;
2) согласование скоростей обмена и кэширование данных;
3) разделение устройств и данных между процессами;
4) обеспечение удобного логического интерфейса между устройствами и системой когда любое устройство представляется для прикладного программиста последовательным набором байт, с которым можно работать с помощью унифицированных системных вызовов (например, read и write);
5) поддержка возможности простого включения в систему широкого набора драйверов;
6) динамическая загрузка и выгрузка драйверов из ОП;
7) поддержка нескольких файловых систем;
8) поддержка синхронных и асинхронных операций I/O.
Синхронизация скоростей обмена данными
Каждое устройство I/O вычислительной системы (диск, принтер, терминал и т. п.) снабжено (специализированным блоком управления) контроллером. Контроллер взаимодействует с драйвером, а драйвер – с программой.
Драйвер — системный программный модуль для управления определенным устройством I/O.
Контроллер принимает от драйвера выводимую на устройство информацию, а также команды для ее управления.
В IOS для согласования скоростей обмена используется буферизация.
Буферизация – механизм синхронизации процессов I/O, необходимый для обеспечения высокой скорости I/O, при котором поступающие данные от процесса временно помещаются в память.
Обычно для этого используют быструю память (ОП, КЭШ), но когда разница между скоростью обмена с ОП и скоростью работы ВУ становится большой, (чтобы в качестве временного буфера можно было бы использовать оперативную память — ее объема может просто не хватить) то в качестве буфера используется дисковый файл, называемый также спул-файлом. (от spool – Simultaeneous Peripherial Operation Off-Line — метод работы с устройствами, ввода – вывода в многозадачной ОС, при котором у процессов создается иллюзия монопольного и мгновенного доступа к устройству. Данные накапливаются, обрабатываются и не смешиваются).
Типичный пример применения спулинга дает организация вывода данных на принтер. Для печатаемых документов объем в несколько десятков мегабайт — не редкость, поэтому для их временного хранения объема оперативной памяти явно недостаточно.
Другими словами, буферизация необходима для обеспечения высокой скорости I/O (устройства I/O работают в десятки раз медленнее процессора).
Есть ОС, в которых большая часть оперативной памяти отводится не под коды прикладных программ, а под буферизацию данных.
Буферизация данных позволяет.
Согласовать скорости работы ЦП и устройств I/O.
Сократить количество реальных операций ввода-вывода за счет кэширования данных.
Разделение устройств и данных между процессами
Устройства I/O могут предоставляться процессам как в монопольное, так и в совместное использование.
ОС может контролировать доступ не только к устройству вцелом, но и к отдельным порциям данных, хранимых или отображаемых этим устройством. Диск является типичным примером устройства, для которого важно контролировать доступ не к устройству вцелом, а к отдельным каталогам и файлам.
Одно и то же устройство в разные периоды времени может использоваться как в совместном, так и в монопольном режиме. Но существуют устройства с один из режимов, например последовательные порты и терминалы используются в монопольном режиме, а диски — в режиме совместного доступа.
Например, CD-RW одним программам предоставляется в совместное, а другим в монопольное (для записи) использование.
Поддержка синхронных и асинхронных операций ввода-вывода
Операция ввода-вывода может выполняться по отношению к программе, запросившей операцию, в синхронном или асинхронном режимах.
Смысл этих режимов как и при использовании системных вызовов.
Синхронный режим означает, что программа приостанавливает свою работу до тех пор, пока операция I/O не будет завершена.
Асинхронный режим значит, что программа продолжает выполняться во время I/O.
IOS должна предоставлять своим клиентам (пользовательским процессам и кодам ядра) возможность выполнять как синхронные, так и асинхронные операции ввода-вывода, в зависимости от потребностей вызывающей стороны.
Пользовательские процессы обычно используют синхронные процедуры I/O (в связи с тем, что такие операции длятся долго и потоку все равно придется ждать получения результатов операции для того, чтобы продолжить свою работу).
Внутренние вызовы операций I/O из модулей ядра обычно выполняются в виде асинхронных процедур (так как кодам ядра нужна свобода в выборе дальнейшего поведения после запроса операции ввода-вывода). Использование асинхронных процедур приводит к более гибким решениям, так как на основе асинхронного вызова всегда можно построить синхронный, создав дополнительную промежуточную процедуру, блокирующую выполнение вызвавшей процедуры до момента завершения ввода-вывода.