Файловая система компьютера. Файловая система и файловая структура

Автономные ФС. Объединение ФС. Монтирование .

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

Рис. Иерархия файловых систем

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

    На каждом из устройств размещается авто­номная файловая система, то есть файлы, находящиеся на этом устройстве, описы­ваются деревом каталогов, никак не связанным с деревьями каталогов на других устройствах. В таком случае для однозначной идентификации файла пользова­тель наряду с составным символьным именем файла должен указывать иденти­фикатор логического устройства. (система MS-DOS, в которой полное имя файла включает буквенный идентификатор логического диска: например, A:\privat\letter\uni\let1.doc.)

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

Рассмот­рим, как осуществляется эта операция на примере ОС UNIX. Среди всех имеющихся в системе логических дисковых устройств операционная система выделяет одно устройство, называемое системным. Пусть имеются две файловые системы, расположенные на разных логических дисках (рис. 4), при­чем один из дисков является системным. Файловая система, расположенная на системном диске, назначается корневой. Для связи иерархий файлов в корневой файловой системе выбирается некото­рый существующий каталог, в данном примере - каталог man. После выполне­ния монтирования выбранный каталог man становится корневым каталогом вто­рой файловой системы. Через этот каталог монтируемая файловая система подсоединяется как поддерево к общему дереву (рис. 5). После монтирования общей файловой системы для пользователя нет логической разницы между корневой и смонтированной файловыми системами, в частности именование файлов производится так же, как если бы она с самого начала была единой.

Рис. Общая файловая система после монтирования

1.7. Логическая организация файла

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

Структурированный и неструктурированный файл

В первом случае, когда все действия, связанные со структуризацией и интерпретацией содержимого файла целиком относятся к ведению приложения , файл представляется ФС неструктурированной последовательностью данных. Прило­жение формулирует запросы к файловой системе на ввод-вывод, используя об­щие для всех приложений системные средства, например, указывая смещение от начала файла и количество байт, которые необходимо считать или записать. Поступивший к приложению поток байт интерпретируется в соответствии с за­ложенной в программе логикой. Например, компилятор генерирует, а редактор связей воспринимает вполне определенный формат объектного модуля програм­мы. При этом формат файла, в котором хранится объектный модуль, известен только этим программам. Подчеркнем, что интерпретация данных никак не свя­зана с действительным способом их хранения в файловой системе. Модель файла, в соответствии с которой содержимое файла представляется не­структурированной последовательностью (потоком) байт, стала популярной вместе с ОС UNIX, а теперь она широко используется в большинстве современных ОС, в том числе в MS-DOS, Windows NT/2000, NetWare. Неструктурированная модель файла позволяет легко организовать разделение файла между несколькими приложениями: разные приложения могут по-своему структурировать и интерпретировать данные, содержащиеся в файле.

Другая модель файла, которая применялась в ОС OS/360, DEC RSX и VMS, а в настоящее время используется достаточно редко, – это структурированный файл. В этом случае поддержание структуры файла поручается файловой системе. Файловая система видит файл как упорядоченную последовательность логических записей. Приложение может обращаться к ФС с запросами на ввод-вывод на уровне записей, например «считать запись 25 из файла FILE.DOC». ФС должна обладать информацией о структуре файла, достаточной для того, чтобы выделить любую запись. ФС предоставляет приложению доступ к записи, а вся дальнейшая обработка данных, содержащихся в этой записи, выполняется приложением. Развитием этого подхода стали системы управления базами данных (СУБД), которые поддерживают не только сложную структуру данных, но и взаимосвязи между ними .

Структуризация файла

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

Способы структуризации :

    Размер записи фиксирован в пределах файла, а записи в различных файлах, принадлежащих одной и той же файловой системе, могут иметь различный размер. В таком случае доступ к n-й записи файла осуществляется либо путем последовательного чтения (n-1) предшествующих записей, либо прямо по адресу, вычисленному по ее порядковому номеру. Например, если L - длина записи, то начальный адрес n-й записи равен Lxn.

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

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

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

Доброго времени суток уважаемый пользователь, в этой статье речь пойдет о такой теме, как файлы. А именно мы рассмотрим: Управление файлами , типы файлов , файловая структура , атрибуты файла .

Файловая система

Одной из основных задач ОС является предоставление удобств пользователю при работе с данными, хранящимися на дисках. Для этого ОС подменяет физическую структуру хранящихся данных некоторой удобной для пользователя логической моделью, которая реализуется в виде дерева каталогов, выводимого на экран такими утилитами, как Norton Commander, Far Manager или Windows Explorer. Базовым элементом этой модели является файл , который так же, как и файловая система в целом, может характеризоваться как логической, так и физической структурой.

Управление файлами

Файл – именованная область внешней памяти, предназначенная для считывания и записи данных.

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

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

Файловая система включает:Файловая система включает:

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

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

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

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

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

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

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

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

Пример

Файловая система FAT (file allocation table) имеет множество реализаций как система управления файлами

  • Система, разработанная для первых ПК называлась просто FAT (сейчас ее называют просто FAT-12) . Ее разрабатывали для работы с дискетами, и некоторое время она использовалась для работы с жесткими дисками.
  • Потом ее усовершенствовали для работы с жесткими дисками большего объема, и эта новая реализация получила название FAT–16. это название используется и по отношению к СУФ самой MS-DOS.
  • Реализация СУФ для OS/2 называется super-FAT (основное отличие – возможность поддерживать для каждого файла расширенные атрибуты).
  • Есть версия СУФ и для Windows 9x/NT и т.д. (FAT-32).

Типы файлов

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

Обычные файлы могут быть двух типов:

  1. Программные (исполняемые) – представляют собой программы, написанные на командном языке ОС, и выполняют некоторые системные функции (имеют расширения.exe, .com, .bat).
  2. Файлы данных – все прочие типы файлов: текстовые и графические документы, электронные таблицы, базы данных и др.

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

Специальные файлы – это фиктивные файлы, ассоциированные с устройствами ввода/вывода, которые используются для унификации механизма доступа к файлам и внешним устройствам. Специальные файлы позволяют пользователю осуществлять операции ввода/вывода посредством обычных команд записи с файлов или чтения из файлов. Эти команды обрабатываются сначала программами ФС, а затем на некотором этапе выполнения запроса преобразуются ОС в команды управления соответствующим устройством (PRN, LPT1 – для порта принтера (символьные имена, для ОС – это файлы), CON – для клавиатуры).

Пример . Copy con text1 (работа с клавиатурой).

Файловая структура

Файловая структура – вся совокупность файлов на диске и взаимосвязей между ними (порядок хранения файлов на диске).

Виды файловых структур:

  • простая , или одноуровневая : каталог представляет собой линейную последовательность файлов.
  • иерархическая или многоуровневая : каталог сам может входить в состав другого каталога и содержать внутри себя множество файлов и подкаталогов. Иерархическая структура может быть двух видов: «Дерево» и «Сеть». Каталоги образуют «Дерево», если файлу разрешено входить только в один каталог (ОС MS-DOS, Windows) и «Сеть» – если файл может входить сразу в несколько каталогов (UNIX).
  • Файловая структура может быть представлена в виде графа, описывающего иерархию каталогов и файлов:



Типы имен файлов

Файлы идентифицируются именами. Пользователи дают файлам символьные имена , при этом учитываются ограничения ОС как на используемые символы, так и на длину имени. В ранних файловых системах эти границы были весьма узкими. Так в популярной файловой системе FAT длина имен ограничивается известной схемой 8.3 (8 символов — собственно имя, 3 символа — расширение имени), а в ОС UNIX System V имя не может содержать более 14 символов.

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

Например, Windows NT в своей файловой системе NTFS устанавливает, что имя файла может содержать до 255 символов, не считая завершающего нулевого символа.

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

Символьные имена могут быть трех типов: простые, составные и относительные:

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

В древовидной файловой структуре между файлом и его полным именем имеется взаимно однозначное соответствие – «один файл — одно полное имя». В сетевой файловой структуре файл может входить в несколько каталогов, а значит может иметь несколько полных имен; здесь справедливо соответствие – «один файл — много полных имен».

Для файла 2.doc определить все три типа имени, при условии, что текущим каталогом является каталог 2008_год.

  • Простое имя: 2.doc
  • Полное имя: C:\2008_год\Документы\2.doc
  • Относительное имя: Документы\2.doc

Атрибуты файлов

Важной характеристикой файла являются атрибуты. Атрибуты – это информация, описывающая свойства файлов. Примеры возможных атрибутов файлов:

  • Признак «только для чтения» (Read-Only);
  • Признак «скрытый файл» (Hidden);
  • Признак «системный файл» (System);
  • Признак «архивный файл» (Archive);
  • Тип файла (обычный файл, каталог, специальный файл);
  • Владелец файла;
  • Создатель файла;
  • Пароль для доступа к файлу;
  • Информация о разрешенных операциях доступа к файлу;
  • Время создания, последнего доступа и последнего изменения;
  • Текущий размер файла;
  • Максимальный размер файла;
  • Признак «временный (удалить после завершения процесса)»;
  • Признак блокировки.

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

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

Права доступа к файлу

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

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

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

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

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

Обычные файлы, или просто файлы, содержат информацию произвольного характера, которую заносит в них пользователь или которая образуется в результате работы системных и пользовательских программ. Большинство современных операционных систем (например, UNIX, Windows, OS/2) никак не ограничивает и не контролирует содержимое и структуру обычного файла. Содержание обычного файла определяется приложением, которое с ним работает. Например, текстовый редактор создает текстовые файлы, состоящие из строк символов, представленных в каком-либо коде. Это могут быть документы, исходные тексты программ и т. п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют коды символов, они часто имеют сложную внутреннюю структуру, например исполняемый код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов - их собственные исполняемые файлы.

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

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

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

Иерархическая структура файловой системы

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

Рис. 1. Иерархия файловых систем

Граф, описывающий иерархию каталогов, может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог (рис. 1, б), и сеть - если файл может входить сразу в несколько каталогов (рис. 1, в). Например, в MS-DOS и Windows каталоги образуют древовидную структуру, а в UNIX - сетевую. В древовидной структуре каждый файл является листом. Каталог самого верхнего уровня называется корневым каталогом, или корнем (root).

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

Частным случаем иерархической структуры является одноуровневая организация, когда все файлы входят в один каталог (рис. 1, а).

Типы файлов. Иерархическая структура файловой системы

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

Обычные файлы, или просто файлы, содержат информацию произвольного характера, которую заносит в них пользователь или которая образуется в результате работы системных и пользовательских программ. Большинство современных операционных систем (например, UNIX, Windows, OS/2) никак не ограничивает и не контролирует содержимое и структуру обычного файла. Содержание обычного файла определяется приложением, которое с ним работает.

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

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

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

Рис. 6. 1. Иерархия файловых систем

Граф, описывающий иерархию каталогов, может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог (рис. 6. 1, б), и сеть - если файл может входить сразу в несколько каталогов (рис. 6. 1, в). Например, в MS-DOS и Windows каталоги образуют древовидную структуру, а в UNIX - сетевую. В древовидной структуре каждый файл является листом. Каталог самого верхнего уровня называется корневым каталогом или корнем (root).

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

Рис. 1 . Иерархия файловой системы extX построенная в виде дерева.

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

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

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

Например, для выборки файла «client .c » (рис. 1 ) , находящегося в каталоге «с», который находится в каталоге «tcp », который, в свою очередь, находится в каталоге «usr » и соответственно в каталоге «root » (рис. 1), служит следующая символьная строка: /usr /tcp /c /client .c . Если символьная строка начинается со знака (/), то поиск начинается с корневого каталога всей файловой системы. Имя маршрута, которое не начинается со знака (/), заставляет ОС начать поиск с текущего каталога.

Система всегда связывает каждого пользователя с определенным каталогом. Когда вы логически включаетесь в систему по команде login , вы автоматически оказываетесь в каталоге (директории) с именем home . Этот каталог назначается администратором системы при регистрации вас как пользователя. Если ваше username , к примеру, inter , то после команды login inter и введения пароля в ответ на запрос password , вы войдете в систему и автоматически перейдете в каталог /home /inter . Разумеется, после этого вы можете по команде cd (Change Directory ) сменить ваш текущий каталог на какой угодно.

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

Каждому подключенному устройству (терминалу, дискам, принтеру, и т. д.), соответствует как минимум один специальный файл . Большая часть этих специальных файлов хранится в каталоге /dev (рис. 1) :

$ cd /dev

$ ls -l

console пульт управления системы

dsk порции на диске

fd 0 флоппи-диск 1

mem память

l р принтер

l р0 параллельный порт 0

root порция на диске для корневой файловой системы

swap своп-порция

syscon альтернативное имя пульта

systty еще одно имя для системной консоли

term директория для терминалов

ttyS 0 серийный порт 0 (COM 1)

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

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