Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Дополнительные атрибуты файла
Файлы имеют еще несколько атрибутов помимо имени, типа и данных. Операционная система ассоциирует с каждым файлом дополнительную информацию, такую как разрешения для доступа к файлу. Защита файла становится чрезвычайно важной на многопользовательских системах, таких, как 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 hierarchy 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; Просмотров: 2305; Нарушение авторского права страницы