Безопасность операционных систем. Безбогов А.А - 63 стр.

UptoLike

Типичными функциями для независимого от устройств слоя являются:
обеспечение общего интерфейса к драйверам устройств;
именование устройств;
защита устройств;
обеспечение независимого размера блока;
буферизация;
распределение памяти на блок-ориентированных устройствах;
распределение и освобождение выделенных устройств;
уведомление об ошибках.
Остановимся на некоторых функциях данного перечня. Верхним слоям программного обеспечения неудобно работать с
блоками разной величины, поэтому данный слой обеспечивает единый размер блока, например, за счет объединения не-
скольких различных блоков в единый логический блок. В связи с этим верхние уровни имеют дело с абстрактными устрой-
ствами, которые используют единый размер логического блока независимо от размера физического сектора.
При создании файла или заполнении его новыми данными необходимо выделить ему новые блоки. Для этого ОС долж-
на вести список или битовую карту свободных блоков диска. На основании информации о наличии свободного места на дис-
ке может быть разработан алгоритм поиска свободного блока, независимый от устройства и реализуемый программным сло-
ем, находящимся выше слоя драйверов.
5.5.3.5. ПОЛЬЗОВАТЕЛЬСКИЙ СЛОЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Хотя большая часть программного обеспечения ввода-вывода находится внутри ОС, некоторая его часть содержится в
библиотеках, связываемых с пользовательскими программами. Системные вызовы, включающие вызовы ввода-вывода,
обычно делаются библиотечными процедурами. Если программа, написанная на языке С, содержит вызов
count = write (fd, buffer, nbytes),
то библиотечная процедура write будет связана с программой. Набор подобных процедур является частью системы ввода-
вывода. В частности, форматирование ввода или вывода выполняется библиотечными процедурами. Примером может слу-
жить функция printf языка С, которая принимает строку формата и, возможно, некоторые переменные в качестве входной
информации, затем строит строку символов и делает вызов write для вывода этой строки. Стандартная библиотека ввода-
вывода содержит большое число процедур, которые выполняют ввод-вывод и работают как часть пользовательской про-
граммы.
Другой категорией программного обеспечения ввода-вывода является подсистема спулинга (spooling). Спулингэто
способ работы с выделенными устройствами в мультипрограммной системе. Рассмотрим типичное устройство, требующее
спулингапринтер. Хотя технически легко позволить каждому пользовательскому процессу открыть специальный файл,
связанный с принтером, такой способ опасен из-за того, что пользовательский процесс может монополизировать принтер на
произвольное время. Вместо этого создается специальный процессмонитор, который получает исключительные права на
использование этого устройства. Также создается специальный каталог, называемый каталогом спулинга. Для того чтобы
напечатать файл, пользовательский процесс помещает выводимую информацию в этот файл и помещает его в каталог спу-
линга. Процесс-монитор по очереди распечатывает все файлы, содержащиеся в каталоге спулинга.
Контрольные вопросы к теме 5
1. Что такое данные, источник данных, организация данных?
2.
Перечислите методы организации данных. В чем их различия?
3. Опишите способы организации файлов.
4.
Как можно хранить файлы на носителе?
5.
Перечислите основные операции над файлами.
6. Перечислите и опишите уровни многоуровневой модели файловой системы.
7.
Каковы основные компоненты архитектуры современных файловых систем?
8.
Дайте определения системе ввода-вывода.
9.
Что такое драйвер ввода-вывода?
10.
Перечислите и охарактеризуйте типы устройств ввода-вывода.
11.
На какие слои (уровни) разбито программное обеспечение ввода-вывода, каково их назначение?