Независимое от устройств программное обеспечение ввода-вывода
Независимое от устройств программное обеспечение ввода-вывода обеспечивает следующее.
1. Единообразный интерфейс для драйверов устройств.
2. Буферизация.
3. Сообщения об ошибках.
4. Захват и освобождение выделенных устройств.
5. Размер блока, не зависящий от устройства.
Программное обеспечение ввода-вывода пространства пользователя
Программное обеспечение ввода-вывода пространства пользователя состоит из библиотек, присоединенных к программам пользователя. Системные вызовы ввода обычно состоят из библиотечных процедур. Если программа на языке C содержит вызов write, то библиотечная процедура write будет скомпонована с программой, и, таким образом, будет содержаться в исполняемом файле.
Хотя многие такие процедуры мало что делают кроме обращения к системному вызову с соответствующими параметрами, есть ряд процедур ввода-вывода, выполняющих определенную работу. В частности, библиотечными процедурами выполняются операции форматного ввода и вывода. (Например, функция printf языка C.)
Вопросы для самоконтроля
1. Перечислите принципы программного обеспечения ввода-вывода.
2. Что такое независимость от устройств?
3. Перечислите уровни программного обеспечения ввода-вывода.
4. Перечислите и кратко охарактеризуйте три способа выполнения ввода-вывода.
5. В чем состоит различие между блочными устройствами и символьными устройствами?
6. Каковы функции обработчиков прерываний?
7. Какие функции выполняют драйверы устройств?
8. Каковы функции программного обеспечения ввода-вывода, независимого от устройств?
Тема 18. Физическая организация файловой системы
Цели и задачи файловой системы
Файл – это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные. Основные цели использования файла: долговременное и надежное хранение информации; совместное использование информации.
Файловая система (ФС) – это часть операционной системы, включающая:
– совокупность всех файлов на диске;
– наборы структур данных, используемых для управления файлами;
– комплекс системных программных средств, реализующих операции над файлами.
ФС играет роль промежуточного слоя, экранирующего все сложности физической организации долговременного хранилища данных, и создающего для программ более простую логическую модель этого хранилища, а также предоставляя им набор удобных в использовании команд для манипулирования файлами.
Задачи, решаемые файловой системой, зависят от способа организации вычислительного процесса в целом. Основные функции в однопользовательских и однопрограммных ОС (MS DOS):
– именование файлов;
– программный интерфейс для приложений;
– отображения логической модели файловой системы на физическую организацию хранилища данных;
– устойчивость файловой системы к сбоям питания, ошибкам аппаратных и программных средств.
В однопользовательских мультипрограммных ОС также должны быть предусмотрены средства блокировки файла и его частей, предотвращения гонок, исключение тупиков, согласование копий и т. п.
В многопользовательских ОС появляется еще одна задача: защита файлов одного пользователя от несанкционированного доступа другого пользователя.
Еще более сложными становятся функции ФС, которая работает в составе сетевой ОС.
Принципы размещения файлов, каталогов и системной информации на реальном устройстве описываются физической организацией файловой системы. Разные ФС имеют разную физическую организацию.
Устройство диска
Основным типом устройства для хранения файлов являются дисковые накопители. Эти устройства предназначены для считывания и записи данных на жесткие и гибкие магнитные диски. Жесткий диск состоит из одной или нескольких стеклянных или металлических пластин, каждая из которых покрыта с одной или двух сторон магнитным материалом. На каждой стороне каждой пластины размечены тонкие концентрические кольца – дорожки (tracks), на которых хранятся данные. Когда диск вращается, элемент, называемый головкой, считывает двоичные данные с магнитной дорожки или записывает их на магнитную дорожку.
Головка может позиционироваться над заданной дорожкой. Обычно все головки закреплены на едином перемещающем механизме и двигаются синхронно. Поэтому, когда головка фиксируется на заданной дорожке одной поверхности, все остальные головки останавливаются над дорожками с такими же номерами. Совокупность дорожек одного радиуса на всех поверхностях всех пластин пакета называется цилиндром. Каждая дорожка разбивается на фрагменты, называемые секторами, или блоками, так что все дорожки имеют равное число секторов, в которые можно максимально записать одно и то же число байт. Сектор имеет фиксированный для конкретной системы размер, выражающийся степенью двойки. Чаще всего размер сектора составляет 512 байт. Учитывая, что дорожки разного радиуса имеют одинаковое число секторов, плотность записи становится тем выше, чем ближе дорожка к центру.
Сектор – наименьшая адресуемая единица обмена данными дискового устройства с оперативной памятью. Для того чтобы контроллер мог найти на диске нужный сектор, необходимо задать ему все составляющие адреса сектора: номер цилиндра, номер поверхности и номер сектора. ОС при работе с диском использует, как правило, собственную единицу дискового пространства, называемую кластером. (В UNIX кластер называется блоком.) При создании файла место на диске ему выделяется кластерами.
Дорожки и секторы создаются в результате выполнения процедуры физического, или низкоуровневого, форматирования диска, предшествующей использованию диска. Для определения границ блоков на диск записывается идентификационная информация. Низкоуровневый формат диска не зависит от типа ОС, которая этот диск будет использовать.
Разметку диска под конкретный тип файловой системы выполняют процедуры высокоуровневого, или логического, форматирования. При высокоуровневом форматировании определяется размер кластера и на диск записывается информация, необходимая для работы файловой системы, в том числе информация о доступном и неиспользуемом пространстве, о границах областей, отведенных под файлы и каталоги, информация о поврежденных областях. Кроме того, на диск записывается загрузчик операционной системы – небольшая программа, которая начинает процесс инициализации операционной системы после включения питания или рестарта компьютера.
Прежде чем форматировать диск под определенную файловую систему, он может быть разбит на разделы. Раздел – это непрерывная часть физического диска, которую операционная система представляет пользователю как логическое устройство (используются также названия логический диск и логический раздел). Логическое устройство функционирует так, как если бы это был отдельный физический диск. ОС разного типа используют единое для всех них представление о разделах, но создают на его основе логические устройства, специфические для каждого типа ОС. Так же как файловая система, с которой работает одна ОС, в общем случае не может интерпретироваться ОС другого типа, логические устройства не могут быть использованы операционными системами разного типа. На каждом логическом устройстве может создаваться только одна файловая система.
На разных логических устройствах одного и того же физического диска могут располагаться файловые системы разного типа.