ВУЗ:
Составители:
Типичными функциями для независимого от устройств слоя являются:
•
обеспечение общего интерфейса к драйверам устройств;
•
именование устройств;
•
защита устройств;
•
обеспечение независимого размера блока;
•
буферизация;
•
распределение памяти на блок-ориентированных устройствах;
•
распределение и освобождение выделенных устройств;
•
уведомление об ошибках.
Остановимся на некоторых функциях данного перечня. Верхним слоям программного обеспечения неудобно работать с
блоками разной величины, поэтому данный слой обеспечивает единый размер блока, например, за счет объединения не-
скольких различных блоков в единый логический блок. В связи с этим верхние уровни имеют дело с абстрактными устрой-
ствами, которые используют единый размер логического блока независимо от размера физического сектора.
При создании файла или заполнении его новыми данными необходимо выделить ему новые блоки. Для этого ОС долж-
на вести список или битовую карту свободных блоков диска. На основании информации о наличии свободного места на дис-
ке может быть разработан алгоритм поиска свободного блока, независимый от устройства и реализуемый программным сло-
ем, находящимся выше слоя драйверов.
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.
На какие слои (уровни) разбито программное обеспечение ввода-вывода, каково их назначение?
Страницы
- « первая
- ‹ предыдущая
- …
- 61
- 62
- 63
- 64
- 65
- …
- следующая ›
- последняя »
