Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Дополнительные атрибуты файла



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

• пользователь, или владелец, файла;

• группа, пользователи, принадлежащие к группе, которой принадлежит файл;

• все остальные, куда включаются все пользователи системы, не принадлежащие к группе файла.

Для каждого из этих пользователей определен специальный набор разрешений. Несмотря на то что с файлом можно проделать множество операций, Linux обобщает разрешения на выполнение трех файловых операций: чтение, запись и выполнение. Так как каждый класс операций применяется ко всем трем категориям пользователей, каждый файл имеет набор из девяти связанных с ним разрешений.

Другие атрибуты файла включают размер файла, метку времени создания, время по­следнего изменения, которые отображаются утилитой Is. Когда мы рассмотрим реализа­цию файлов в ядре, мы увидим, что многие другие атрибуты файла являются невидимыми для пользователя.

Директории и пути к файлам

Директория - это файл, поддерживающий иерархическую структуру файловой системы. Директория следит за содержащимися в ней файлами, внутренними директориями и ин­формацией о самой себе. В Linux каждый пользователь обладает собственной «домашней директорией» (home directory), в которой хранятся его файлы и создается его собственное дерево директорий. На рис. 6.1 мы можем увидеть пример организации древовидной структуры файловой системы.


6.1 Общая концепция файловой системы



При организации файловой системы в древовидную структуру отдельное имя файла не позволяет обнаружить файл; нам нужно знать, где в дереве этот файл находится. Путь к файлу (pathname) описывает местонахождение файла. Путь к файлу можно описать от­носительно корня дерева. Такой путь будет называться абсолютным (absolute pathname). Абсолютный путь начинается с корневой директории, обозначаемой /. Имя узла дирек­тории, т. е. имя директории, завершается /, например: bin/. Таким образом, абсолютный путь к файлу представляет собой набор всех узлов директорий, которые нужно посетить, чтобы добраться до файла. На рис. 6.1 абсолютным путем к файлу hwl. txt является /hime/ana/cslOl /hwl. txt. Кроме этого? путь может быть представлен относитель­ным путем (relative pathname). Это зависит от рабочей директории (working directory) связанного с файлом процесса. Рабочая директория, или текущая директория, - это дирек­тория, связанная с выполнением процесса. Таким образом, если рабочей директорией на­шего процесса будет /hime/ana/, мы можем ссылаться на файл как на cslOl/hwl. txt.

В Linux директории содержат файлы, выполняющие различные задачи во время ра­боты операционной системы. Например, разделяемые файлы хранятся в /usr и /opt, а неразделяемые в /etc и /boot. Таким же образом нестатические файлы, содержимое которых изменяется системными программами, хранятся в директории vcertain в /var. Информацию о стандарте на структуру каталогов фаловой системы (file system hi­erarchy standard) можно найти по адресу http: //www.pathname. com/fhs1.

В Linux с каждой директорией связаны две сущности: . (читается как «дот») и.. (читается как «дот дот»). Означает текущую директорию, а вторая - родительскую дирек­торию. Для корневой директории. и.. означают текущую директорию. (Другими сло­вами, корневая директория является собственной родительской директорией.) Соответст­венно меняется и запись относительного пути. В нашем предыдущем примере рабочей директорией была /home/ana и относительным путем к нашему файлу cswlOl/ hwl. txt. Относительным путем для hwl. txt в директории paul из нашей рабочей директории будет.. /paul/cal 01 /hwl. txt, так как вначале нам нужно подняться на уровень выше.

Файловые операции

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

1 Русский перевод можно найти по адресу http: //rus-linux.net/MyLDP/file-sys/fhs-2.2-rus/. Примеч. науч. ред.



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


Файловые описатели

Файловые описатели имеют тип int, используемый системой для идентификации открытых файлов. Системный вызов open () возвращает описатель файла, который можно использовать в дальнейших операциях с этим файлом. В следующих разделах мы рассмотрим, как описатель файла описывается в терминах ядра.

Каждый процесс хранит массив файловых описателей. Когда мы обсуждали струк­туры ядра для поддержки файловой системы, мы видели, как эта информация организует­ся в массив. Существует соглашение, согласно которому первый элемент массива (файло­вый описатель 0) ассоциирован со стандартным вводом, второй элемент (файловый опи­сатель 1) - со стандартным выводом, а третий (файловый описатель 2) - со стандартным вы­водом ошибок. Они позволяют приложениям открывать файлы стандартного ввода, выво­да и ошибок. Рис. 6.2 иллюстрирует массив файловых описателей, связанных с процессом.

Рис. 6.2. Массив файловых описателей

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


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-03-25; Просмотров: 1753; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.01 с.)
Главная | Случайная страница | Обратная связь