Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все ответы.doc
Скачиваний:
21
Добавлен:
09.09.2019
Размер:
3.79 Mб
Скачать

15. Файлы

Под файлом понимают именованный набор данных, организованных в виде совокупности записей одинаковой структуры. Для управления этими данными создаются соответствующие файловые системы.

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

Предоставляя место для хранения файлов, операционные системы используют понятие каталога (directory) как способ объединения файлов в группы. Для создания и удаления каталога также необходимы системные вызовы. Они же обеспечивают перемещение файла в каталог и удаление файла из каталога. Содержимое каталога могут составлять файлы или другие каталоги. Эта модель создает структуру — файловую систему.

Иерархии процессов и файлов организованы в виде деревьев, но на этом сходство заканчивается. Иерархия процессов обычно не очень глубока (в ней редко бывает больше трех уровней), тогда как файловая структура часто имеет 4, 5 и больше уровней в глубину. Иерархия процессов как правило живет недолго (несколько минут), тогда как иерархия каталогов может существовать годами. Принадлежность и защита также различны для процессов и файлов. Обычно только родительский процесс может управлять или даже просто иметь доступ к дочернему процессу, однако практически всегда существует механизм, позволяющий читать файлы и каталоги не только владельцу файла, но и более широкой группе пользователей.

Каждый файл в иерархии каталогов можно изменить, задав его имя пути, называемое также полным именем файла. Путь начинается из вершины структуры каталогов, называемой корневым каталогом. Такое абсолютное имя пути состоит из списка пути, который надо пройти от корневого каталога к файлу, с разделением отдельных компонентов косой чертой. Например, на рисунке путь к файлу CS101 выглядит как /Faculty/Prof.Brown/Courses/CS101. Первая косая черта говорит, что этот путь — абсолютный, то есть начинается от корневого каталога.

В каждый момент времени у каждого процесса есть свой рабочий каталог, в котором ищутся пути файлов, не начинающиеся с косой черты. То есть использование пути Courses/CS101 даст тот же самый файл, что и абсолютный путь, написанный выше. Процессы могут изменять свой рабочий каталог, используя системные вызовы.

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

Файловую систему сменного диска можно присоединять к главному дереву. Сначала корневая система на жестком диске и вторая корневая система на сменном носителе никак не связаны между собой. Но файлы на диске нельзя использовать, т.к. для них невозможно определить путь. Системный вызов позволяет присоединить файловую систему на диске к корневой файловой системе в том месте, где этого захочет программа. Если система содержит несколько жестких дисков, все они могут быть встроены в общее дерево таким же образом.

Специальные файлы — служат для того, чтобы устройства ввода-вывода выглядели как файлы. При этом можно прочесть информацию из специальных файлов или записать ее туда с помощью тех же самых системных вызовов, которые используются для чтения и записи файлов. 2 вида специальных файлов — блочные и символьные специальные файлы. Блочные — используются для моделирования устройств, состоящих из набора произвольно адресуемых блоков (напр, диски). Открывая блочный спец.файл и читая, например, блок 4, программа может получить доступ к 4 блоку напрямую на устройстве, без обращения к содержащейся на нем файловой системе. Таким же образом символьные файлы используются для моделирования принтеров, модемов и других устройств, которые принимают или выдают поток символов.

Канал — это псевдофайл, который можно использовать для связи двух процессов. Если процессы А и В захотят пообщаться с помощью канала, они должны установить его заранее. Когда процесс А хочет отправить данные процессу В, он пишет их в канал, как если бы это был выходной файл. Процесс В может прочесть данные, читая их из канала, как если бы он был файлом с входными данными.