Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_модуль2.doc
Скачиваний:
15
Добавлен:
25.08.2019
Размер:
258.05 Кб
Скачать

В ведение в операционные системы Модуль 2 стр. 14

Введение в операционные системы

Модуль 2

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

В современных ОС функции обмена данными с периферийными устройствами выполняет подсистема ввода-вывода (Input/Output Subsystem или IOS).

Клиенты IOS:

1 Приложения.

2 Компоненты ОС (для получение системных данных или их вывод).

Основными компонентами IOS являются:

  1. драйверы (управляющие ВУ);

  2. файловые системы.

Задачи ОС по управлению файлами и устройствами

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 работают в десятки раз медленнее процессора).

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

Буферизация данных позволяет.

  1. Согласовать скорости работы ЦП и устройств I/O.

  2. Сократить количество реальных операций ввода-вывода за счет кэширования данных.

Разделение устройств и данных между процессами

Устройства I/O могут предоставляться процессам как в монопольное, так и в совместное использование.

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

Одно и то же устройство в разные периоды времени может использоваться как в совместном, так и в монопольном режиме. Но существуют устройства с один из режимов, например последовательные порты и терминалы используются в монопольном режиме, а диски — в режиме совместного доступа.

Например, CD-RW одним программам предоставляется в совместное, а другим в монопольное (для записи) использование.

Поддержка синхронных и асинхронных операций ввода-вывода

Операция ввода-вывода может выполняться по отношению к программе, запросившей операцию, в синхронном или асинхронном режимах.

Смысл этих режимов как и при использовании системных вызовов.

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

Асинхронный режим значит, что программа продолжает выполняться во время I/O.

IOS должна предоставлять своим клиентам (пользовательским процессам и кодам ядра) возможность выполнять как синхронные, так и асинхронные операции ввода-вывода, в зависимости от потребностей вызывающей стороны.

Пользовательские процессы обычно используют синхронные процедуры I/O (в связи с тем, что такие операции длятся долго и потоку все равно придется ждать получения результатов операции для того, чтобы продолжить свою работу).

Внутренние вызовы операций I/O из модулей ядра обычно выполняются в виде асинхронных процедур (так как кодам ядра нужна свобода в выборе дальнейшего поведения после запроса операции ввода-вывода). Использование асинхронных процедур приводит к более гибким решениям, так как на основе асинхронного вызова всегда можно построить синхронный, создав дополнительную промежуточную процедуру, блокирующую выполнение вызвавшей процедуры до момента завершения ввода-вывода.