Файлы

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

Чтобы предоставить место для хранения файлов, многие операционные системы персональных компьютеров используют каталог как способ объединения файлов в группы.

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

Рис. 1.14. Файловая система факультета университета


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

Каждый файл, принадлежащий иерархии каталогов, может быть обозначен своим полным именем с указанием пути к файлу, начиная с вершины иерархии — корневого каталога. Этот абсолютный путь состоит из списка каталогов, которые нужно пройти от корневого каталога, чтобы добраться до файла, где в качестве разделителей компонентов служат символы косой черты (слеша). На рис. 1.14 путь к файлу CS101 будет иметь вид /Faculty/Prof.Brown/Courses/CS101. Первая косая черта является признаком использования абсолютного пути, который начинается в корневом каталоге. Следует заметить: в Windows в качестве разделителя вместо прямой косой черты (/) используется обратная (\), поэтому показанный выше путь к файлу должен быть записан в следующем виде: \Faculty\Prof.Brown\Courses\CS101. На страницах этой книги при указании путей к файлам будет в основном использоваться соглашение, действующее в UNIX.

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

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

Другое важное понятие в UNIX — смонтированная файловая система. Большинство настольных компьютеров оснащено одним и более приводами оптических дисков, в которые могут вставляться компакт-диски, диски DVD и Blu-ray. У компьютеров, как правило, есть USB-порты, к которым может быть подключена USB-память (фактически это твердотельные устройства, заменяющие дисковые накопители), а некоторые компьютеры имеют приводы гибких дисков или подключенные к ним внешние жесткие диски.

Чтобы предоставить удобный способ работы с этими съемными носителями информации, UNIX позволяет файловой системе на оптическом диске подключаться к основному дереву. Рассмотрим ситуацию, показанную на рис. 1.15, а. Перед вызовом команды mount корневая файловая система на жестком диске и вторая файловая система на компакт-диске существуют отдельно и не связаны друг с другом.

Однако файлы на компакт-диске нельзя использовать, поскольку отсутствует способ определения для них полных имен. UNIX не позволяет указывать в начале полного имени номер или имя устройства, поскольку это привело бы к жесткой зависимости от устройств, которой операционным системам лучше избегать. Вместо этого системный вызов mount позволяет подключить файловую систему на компакт-диске к корневой файловой системе в том месте, где этого потребует программа. На рис. 1.15, б файловая система на компакт-диске была подключена к каталогу b, открыв доступ к файлам /b/x и /b/y. Если в каталоге b содержались какие-нибудь файлы, то пока к нему подключена файловая система компакт-диска, эти файлы будут недоступны, поскольку путь /b стал ссылкой на корневой каталог компакт-диска. (Потеря доступа к этим файлам — во многом надуманная проблема: файловые системы практически всегда подключаются к пустым каталогам.) Если система оснащена несколькими жесткими дисками, то все они могут быть подключены к единому дереву аналогичным образом.

Еще одним важным понятием в UNIX является специальный файл. Специальные файлы служат для того, чтобы устройства ввода-вывода были похожи на файлы. При этом с ними можно проводить операции чтения и записи, используя те же системные вызовы, которые применяются для чтения и записи файлов. Существуют два вида специальных файлов: блочные специальные файлы и символьные специальные файлы. Блочные специальные файлы используются для моделирования устройств, содержащих набор блоков с произвольной адресацией, таких как диски. Открывая блочный специальный файл и считывая, скажем, блок 4, программа может напрямую получить доступ к четвертому блоку устройства независимо от структуры имеющейся у него файловой системы. Аналогичным образом символьные специальные файлы используются для моделирования принтеров, модемов и других устройств, которые принимают или выдают поток символов. В соответствии с принятым соглашением специальные файлы хранятся в каталоге /dev. Например, путь /dev/lp может относиться к принтеру (который когда-то назывался строчным принтером — line printer).

Рис. 1.15. Файлы на компакт-диске: а — перед подключением недоступны; б — после подключения становятся частью корневой файловой системы


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

Рис. 1.16. Два процесса, соединенные каналом


Файловая система играет очень важную роль. Ей будет уделено значительно больше внимания в главе 4, а также в главах 10 и 11.

1.5.4.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Файлы:

  1. МЕТОД КОРРЕКЦИИ ПРОШЛОГО
  2. 7.8. ВНУТРЕННИЙ ПОРЯДОК
  3. Установка программы Астропроцессор ZET
  4. Социальные сети
  5. О программе Астропроцессор ZET
  6. Навыки, хитрости, производительность
  7. Осмотр средств вычислительной техники
  8. Трудолюбивые лентяи
  9. Относитесь к сомнению, как к дружественному напоминанию
  10. ВМЕСТО ЗАКЛЮЧЕНИЯ
  11. 6.1. Институт Гэллапа1