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

6. Файловые системы

6.1. Структуры файловых систем для пользователя

Практической основой любой ОС служит ее базовая файловая система. Так основой старенькой MS DOS являлась существующая до сих пор файловая система FAT в двух модификациях: FAT16 и FAT12 (соответственно для жестких и гибких дисков). Основой Windows NT служит файловая система NTFS (NT File System), операционная система OS/2 основана на файловой системе HPFS (High Performance File System). OC MS DOS даже основную часть своего названия получила от слова Disk (Disk Operation System). Более того, наличие собственной файловой системы в составе ОС непосредственно определяет само существование ОС, так как более простые программные комплексы, используемые в настоящее время только для микропроцессорных систем и содержащие только средства управления устройствами и интерфейс с пользователем, относятся к так называемым мониторам и управляющим программам для микропроцессоров. (Заметим, что последняя из четырех основных функций, определяющих ОС – обеспечение параллельного использования оборудования и ресурсов – относится только к многопрограммных ОС.)

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

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

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

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

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

Внешняя сторона файловой системы в основном сводится к форме именования файлов в программах. Каждый файл имеет собственное имя, подобно тому, как собственное имя имеет человек, но как и для человека оно может не быть уникальным. Поэтому потребовалось использовать так называемое полное имя файла, которое однозначно обозначает файл в вычислительной системе. Ограничимся пока полным именем в границах отдельного компьютера (об обозначении файлов уникальными обозначениями в пределах сети речь будет идти при рассмотрении каналов передачи данных). Полное имя по своему смыслу аналогично именованию человека, в котором для однозначного толкования приводится информация о местонахождении. Этот прием использовался человечеством с глубокой древности. Так часть имени известного средневекового математика было использовано для обозначения алгоритма (Abu Ja'far Mahammed ibn Musa al-Khowarizmi, т.е. из Хорезма).

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

В первом приближении файловые системы с внешней стороны подразделяются на использующие и на не использующие обозначения логических дисков (в более ранних ОС логическим дискам соответствовало, хотя и не совсем точно, понятие имени тома). Файловые системы типа FAT, NTFS и HPFS используют логические диски, а файловые системы, непосредственно предназначенные для Unix, никогда логических дисков не используют. Применение логических дисков (или ранее имен томов дисков) заметно упрощает для непрофессионального пользователя обозначения файлов: можно указать нахождение файла на логическом диске, где, как он знает, этот файл "лежит". Такой прием показался очень удобным для предшественника операционной системы MS DOS и ее первых версий, предназначавшихся для компьютеров, в которых из дисковой памяти присутствовали только накопители на гибких дисках в количестве нескольких штук. (При этом указывалось, на каком накопителе находится желаемый программистом файл.) До сих пор отзвук этого положения сохранился в ситуации с флоппи-дисками, которые почти всегда теперь именуют буквой A.

Более общий подход использует ОС Unix, где все возможные файлы собраны в одно единственное дерево связями типа "описано в каталоге". Здесь файловое дерево включает три разновидности объектов: обычные файлы, каталоги и специальные файлы. Специальные файлы соответствуют устройствам компьютера: реальным или виртуальным. Дерево внешней структуры файловой системы Unix имеет единственный корень, обозначаемый символом / (прямая разделительная черта – slash). Этот корень является корневым каталогом, перечисляющим каталоги следующего уровня. Любой каталог, отличный от корневого, может содержать любое число обычных файлов и каталогов следующего уровня. С учетом свойств древовидной структуры математического графа (парных связей между объектами) любой узел этой структуры можно однозначно задать последовательностью каталогов, через которые идет путь от корневого узла к данному узлу, и собственным обозначением последнего узла в последнем каталоге. При этом допуётимыми являются одинаковые обозначения узлов дерева, если они не связаны непосредственно с одним и тем же каталогом. Таким обѐазом,0требование именования узлов в дереве, а следовательно, и в древовидной структуре файловой системы заключается в уникальности имени в пределах одного каталога. (Формальное описание внешней структуры файловой системы в виде дерева заключается в том, что любой обычный или специальный файл должен быть концевой вершиной - листом, а промежуточные вершины дерева, не являющиеся концевыми, – каталогами.)

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

Последовательность каталогов, задающих путь от корневого узла к данному файлу, так и называется путь (path). В файловых системах FAT, NTFS и HPFS разделителем в такой последовательности каталогов служит символ \ (обратная разделительная черта – backslash). В файловых системах Unix символом разделения в обозначении последовательности каталогов является прямая разделительная черта (символ /). Заметим, что последний вариант на самом деле более практичен, так как обратная разделительная черта является специальным символом в языке Си, и задание этого символа в своем родном значении требует его двойного указания. Поэтому полное имя файла file, находящегося в каталоге с именем user корневого каталога диска C, будет на языке Cи обозначаться текстом "C:\\user\\file", а аналогичное полное имя файла file, находящегося в каталоге с именем usr корневого каталога файловой системы Unix будет на языке Cи обозначаться текстом "/usr/file". (Как говорится, мелочь, а приятно.)

Кроме внутренней информации, хранимой собственно в файле, любой файл может иметь атрибуты доступа. В простейших системах типа FAT и преемственных к ним HPFS и NTFS для обслуживания таких атрибутов служит команда ATTRIB.

Аргументом команды может быть имя отдельного файла или задание совокупности файлов через метасимволы. В простейшей форме – без опций – эта команда выводит атрибуты, обозначаемые символами S, H, R, A (System, Hidden, ReadOnly, Archive). Кроме того, в формах

ATTRIB -атрибут файл

ATTRIB +атрибут файл

эту команду можно использовать для сброса соответствующего атрибута (операция -) или установки его (операция +). При этом атрибут задается одним символом, и в одной команде может быть задано несколько операций сброса или установки атрибутов. Аналогичные действия можно выполнять с помощью утилиты Проводник (EXPLORER) графической оболочки Windows или других визуальных средств просмотра в этой оболочке, которые допускают вызов диалоговой панели Свойства из контекстного меню. Действия над атрибутами в этой панели очевидны по их оформлению. В инструментальной системе FAR быстрым средством вызова диалогового окна получения и изменения атрибутов файла служит комбинация клавиш Ctrl-A (с участием клавиши латинской буквы A).

В Unix системах вместо атрибутов используются характеристики доступа для трех категорий пользователей: самого владельца (или создателя), обозначаемого в командах символом u, для членов его группы (обозначаемых символом g) и всех остальных, обозначаемых символом o (others). Для каждой категории может быть задано независимо от других три типа доступа: по чтению (символ r), по записи (символ w) и по выполнению (символ x). Выдача информации о характеристиках доступа запрашивается командой ls с ключом -l в виде

ls -l имяфайла

Изменение характеристик доступа файла разрешается только его владельцу или администратору и выполняется командой

chmod операция имяфайла

В качестве операции используется запись вида пользователь+типдоступа, где оба операнда задаются в простейшем случае одним символом из указанных выше. Например, установка доступа "по выполнению для всех" задается командой

chmod o+x имяфайла

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