Если каждому вычислительному процессу представляется виртуальное устройство(принтер), то поток символов идет сначала в спул-файл.
Системные процессы, которые управляют спул-файлом – спулеры чтения(Spool-reader) или спулеры записи (Spool-writer).
Локальный спул-файл – файл на компьютере, к которому присоеденен принтер.
Сетевой принтер – некоторый локальный принтер, предоставленный сети. Компьютер, предоставляющий его – принт-сервер.
Буферизированный ввод-вывод:
Буферизация – метод сглаживания всплесков количества запросов на ввод-вывод и является актуальной как для блочных, так и символьных устройств. Буферизация увеличивает производительность ОС и отдельны процессов/потоков. Однако, при слишком частой буферизации и увеличении числа буферов производительность уменьшается.
Буферизированный ввод-вывод – методика, при которой для увеличения эффективности ввода-вывода ввод данных может выполняться заранее, до реального запроса, а вывод данных немного позже реального запроса.
|
|
Процедура упреждающего ввода (опережающего считывания) для многих типов процессов/потоков плохо работает, поскольку доступ к данным обычно осуществляется последовательно.
Буферизация в ядре с последующим копированием в пространство пользователя – схема буферизированного ввода-вывода, предусматривающая создание буфера внутри ядра после заполнения которого при необходимости вводится страница с буфером пользователя.
Двойная буферизация – схема буферизированного ввода-вывода, предусматривающая создание двух буферов внутри ядра.
Циклицеская буферизация – схема из множества буферов (более 2).
Проблема небуферизированного ввода данных, получаемых от символьного устройства в том, что пользовательский процесс должен возобновляться для каждого поступающего символа, т.е. в многократных краткосрочных запусках пользовательского процесса.
Синхронный и асинхронный ввод-вывод
Синхронный ввод-вывод – ситуация, при которой диспетчер ввода-вывода получает от секции завершения сообщение р том, что операция завершилась, и переводит процесс/поток в состояние готовности к выполнению, и она продолжает выполняться.
Для увеличения скорости выполнения приложений при необходимости предлагается использовать асинхронный ввод-вывод. Простейший вариант асинхронного вывода – буферизированный вывод данных.
Для осуществления асинхронного ввода нужно выделить область памяти для временного хранения считываемых с устройства данных и связывать выделенный буфер с процессом/потоков, заказавшим операцию, а также сам запрос на операцию разбить на две части.
|
|
Асинхронный ввод-вывод характерен для большинства мультипрограммных ОС.
Если асинхронный ввод-вывод отсутствует, то его можно реализовать самому, организовав для вывода данных отдельный поток выполнения.
Аппаратура ввода-вывода – совокупность аппаратных процессоров, на которых выполняются так называемые внешние процессы.
На магнитном диске память организована блоками. При вращении диска магнитная головка, зафиксированная в одном положении образует дорожку. Блоки данных на дорожках – сектора. Размер сектора – 512 байт. Цилиндры – группы дорожек одного радиуса, расположенные на поверхностях магнитных дисков.
Деление дискового пространства на несколько частей-разделов (partitions) позволяет организовать на одном физическом устройстве несколько логических дисков.