Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

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


Особенности и принципы построения файловых систем OC Linux.

Особенности и принципы построения

 файловых систем OC Linux.

                Файловая система - обязательная часть любой операционной системы, от ее архитектуры, возможностей, надежности во многом зависит работоспособность операционной системы. ОС Linux поддерживает несколько различных файловых систем. Знание принципов построения и структур файловой системы в "аварийных" ситуациях позволит восстановить работоспособность файловой системы или "прочитать" недоступный из-за дефекта файл.
                В операционной системе типа Linux и доступ к устройствам осуществляется через специальные файлы (файл устройства). Такой файл является точкой доступа к драйверу устройства. Различают два типа файлов устройств: символьные и блочные.

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

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

Некоторые устройства имеют как символьный, так и блочный интерфейс. Канал (FIFO, PIPE) - файлы этого типа используются для связи между процессами для передачи данных. 
                Файл ссылка (link) используется для связи, так как индексный дескриптор может быть связан с несколькими именами файлов. Дескриптор содержит поле, хранящее число, с которым ассоциируется файл. Добавление ссылки заключается в создании записи каталога, где номер индексного дескриптора указывает на другой дескриптор, и увеличении счетчика ссылок в дескрипторе. При удалении ссылки ядро уменьшает счетчик ссылок и удаляет дескриптор, если этот счетчик станет равным нулю. Такие ссылки называются жесткими и могут использоваться только внутри одной файловой системы. 
                Так же существует еще один тип ссылок, называемый символической ссылкой. Эта ссылка содержит только имя файла. Так как символическая ссылка не указывает на индексный дескриптор, то возможно создание ссылок на файлы, расположенные в другой файловой системе. Эти ссылки могут указывать на файл любого типа, даже на несуществующий. 
                Сокеты предназначены для взаимодействия между процессами. Часто используются для доступа к сети TCP/IP.
                Основной функцией любой файловой системы является распределение дискового пространства на именованные участки - файлы. Файловая система extX организована чрезвычайно просто, ее файлы представляют собой просто последовательности байтов. К ним обращаются как к текстовым или двоичным данным, но различаются они лишь содержимым, а не структурой и методом доступа. Эта система универсальна тем, что в ней не делается никаких предположений о внутренней структуре данных файла, и доступ к любому внешнему устройству, а также к другому процессу осуществляется как к обычному файлу.

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

QIP Shot - Image: 2016-05-05 11:26:16
Рис. 1. Иерархия файловой системы, построенная в виде дерева

                Обычные файлы размещаются в адресуемых блоках данных на диске и содержат информацию, которую в них заносит пользователь. Готовые к исполнению программы, объектные модули и т. д. также являются файлами. Система не накладывает никаких ограничений на внутреннюю структуру информации, хранимой в файле. Структурой информации управляет пользователь, а не система, в ней могут существовать самые различные форматы, которые известны только программам, которые эти файлы создают или этими файлами пользуются. Обычный файл является бесструктурным массивом байтов с прямым доступом, но текстовые файлы в принято формировать в виде строк произвольной длины, отделенных друг от друга символом перевода строки.
                Каталоги - это папки, в которых хранятся файлы, сгруппированные по какому-нибудь произвольному признаку (например, выполнимые программы, текстовые документы, библиотеки и библиотечные модули, исходные тексты программ и т. д.). Группы каталогов, в свою очередь, могут образовать логический том с главным корневым каталогом, на который может быть смонтирована та или иная файловая система. Каталоги содержат информацию о файлах: имена, длины, размеры, методы доступа, режимы и типы. Каталоги содержат важную информацию о файлах, поэтому они защищены механизмами операционной системы. Для записи и чтения информации из файла-каталога требуются системные привилегии (в отличие от обычного файла). Во всех других отношениях каталог, с точки зрения ОС, это такой же обычный файл.
                В системе применяется универсальное соглашение об именах: полное имя состоит из цепочки имен каталогов, через которые проходит маршрут от корня дерева (корневого каталога) до самого файла. 
Например, для выборки файла "client.c", находящегося в каталоге "с", который находится в каталоге "tcp", который, в свою очередь, находится в каталоге "usr" и соответственно в каталоге "root" (рис. 1), служит следующая символьная строка: /usr/tcp/c/client.c. Если символьная строка начинается со знака (/), то поиск начинается с корневого каталога всей файловой системы. Имя маршрута, которое не начинается со знака (/), заставляет ОС начать поиск с текущего каталога. 
                Система всегда связывает каждого пользователя с определенным каталогом. Когда вы логически включаетесь в систему по команде login, вы автоматически оказываетесь в каталоге (директории) с именем home. Этот каталог назначается администратором системы при регистрации вас как пользователя. Если ваше username, к примеру, inter, то после команды login inter и введения пароля в ответ на запрос password, вы войдете в систему и автоматически перейдете в каталог /home/inter. Разумеется, после этого вы можете по команде cd (Change Directory) сменить ваш текущий каталог на какой угодно. По существующей конвенции имя каталога (..) всегда указывает на каталог, который находится уровнем выше. Например, если текущий каталог - это /home/inter, то выполнение команды cd .. приведет к переходу в каталог /home.
Другая конвенция использует точку (.), как обозначение текущего каталога. Узнать текущее местоположение можно, введя команду pwd. Она отобразит полный путь, начиная с корня файловой системы /.
                Внутренняя структура каталога организована следующим образом: для каждого файла или другого каталога нижнего уровня создается одна запись, содержащая номер индексного дескриптора. В индексном дескрипторе сосредоточена информация о типе файла (каталог, обычный файл или специальный файл), о коде его защиты, длине, дате и времени создания, а также о расположении данных файла на диске.       Существует по одному дескриптору на каждый файл, и именно с ними работает файловая система. Обычный пользователь не использует индексные дескрипторы, но если индексная структура нарушена и нуждается в восстановлении, то потребуется вмешательство системного администратора.
                Использование дескриптора (описателя файлов) позволяет отделить имя файла, с которым оперирует пользователь, от специфических данных, с которыми работает операционная система. Такой подход чрезвычайно гибок и позволяет манипулировать внешним представлением иерархии файлов, не перемещая самих файлов. Один и тот же файл поместить в разные каталоги, создав в них соответствующие именные ссылки на этот файл, никуда его физически не перемещая. Файл может иметь одно и то же имя в разных каталогах или имена-синонимы, но ссылаться они будут на один и тот же индексный дескриптор, который является ключом для доступа к данным файла.
                Каждая новая ссылка из каталогов к индексному дескриптору отмечается в специальном поле. Это позволяет файловой системе следить за занятостью файла. Как только счетчик ссылок в результате удаления файла из каталогов станет равным нулю, индексный дескриптор освобождается, а дисковое пространство может быть использовано для записи других файлов.

QIP Shot - Image: 2016-05-05 11:27:19
Рис. 2. Фрагмент файловой системы (содержание каталогов root и bin)

Фрагмент файловой системы и содержание каталогов root (в данном контексте под root понимается корень файловой системы, а на домашний каталог системного администратора) и bin изображены на рис. 2. Каталог root является корневым каталогом тома и потому имеет индексный дескриптор с номером 1. Файлы с именами "." и ".." , в каталоге root ссылаются сами на себя, так как каталога более высокого уровня нет. Имена myprog и prog1 ссылаются на один и тот же индексный дескриптор, т. е. на один и тот же файл.


Лицензия