Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект 17 страниц.doc
Скачиваний:
14
Добавлен:
15.06.2014
Размер:
826.37 Кб
Скачать

Лекция-2:

Основы файловой системы UNIX

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

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

Файлы организованы в древовидную файловую систему. Каждый файл имеет имя, определяющее его положение в дереве файловой системы. Корнем дерева является корневой каталог с именем “/”, имена всех остальных файлов содержат путь: /home/student/proga.cpp

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

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

Типы файлов

В UNIX существуют следующие типы файлов:

  1. Обычный файл

  2. Каталог

  3. Специальный файл устройства

  4. Файл FIFO или именованный канал

  5. Связь (link)

  6. Сокет (socket)

Рассмотрим эти типы файлов подробнее:

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

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

10520 .

10534 ..

8671 file1.txt

9731 file2.txt

4554 p1.c

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

  2. Файл FIFO или именованный канал: специальный файл для связи между процессами  на запись и чтение и позволяет связать по данным несколько процессов. Поддержка файла FIFO появилась в UNIX, начиная с Release-5.

  3. Связь (link). Индексные дескрипторы не содержать ни имени файла, ни указателя на него. Такой подход позволяет одному файлу иметь несколько имён в файловой системе. Имена жёстко связаны с индексными дескрипторами, и, соответственно, с данными файла, а сам файл существует независимо от того, как его называют, в файловой системе. Такая связь имени файла с его данными  жёсткая связь: ln p1 /home/student/proga2.cpp  будет создана жёсткая связь.

Жёсткие связи абсолютно равноправны. Изменения, вносимые в файл, проявятся при обращении к файлу по любому из его имён. Можно переместить файл, но жёсткая связь не нарушится. Операционная система контролирует количество жёстких связей у файла и файл не удаляется до тех пор, пока у него есть хотя бы одна жёсткая связь. Отдельные файлы можно удалять, но это не приводит к потере данных. Информацию о наличии жёстких связей можно получить с помощью команды: ls -l

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

Особым типом файла является символическая связь, позволяющая косвенно адресовать файл, который, в свою очередь, ссылается на другой файл... В результате последний файл в такой цепочке адресуется символической связью косвенно. В файле, который является символической связью, содержится только имя целевого файла. Создать символическую связь можно с помощью команды: ln -s proga3.cpp /home/student/rulezz.cpp

Теперь по команде cat rulezz.cpp на экран будет выведено содержимое файла proga3.cpp

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

  1. Сокет (socket): специальный файл, предназначенный для взаимодействием между процессами. Интерфейс сокетов часто используется для доступа к сети TCP/IP, в некоторых реализациях с его помощью осуществляется межпроцессорное взаимодействие.

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

Корневой каталог  основа файловой системы UNIX. Все остальные файлы и каталоги располагаются в рамках структуры, порождённой корневым каталогом, независимо от их физического местонахождения.

В /bin находятся наиболее часто употребимые команды и утилиты системы.

В /dev находятся специальные файлы устройств, являющиеся интерфейсом доступа к периферийным устройствам. Этот каталог может содержать несколько подкаталогов, группирующих несколько файлов устройств одного типа.

В /etc находятся системные конфигурационные файлы и утилиты администрирования. Самые важные  скрипты инициализации системы, которые хранятся в каталогах rcN, где N  номер, определяющий уровень выполнения системы.

В /default находятся параметры, задающиеся по умолчанию для многих команд.

В /lib находятся библиотечные файлы C и других языков программирования.

Каталог /lost+found  каталог потерянных файлов. При аппаратных сбоях и сбоях операционной системы могут появляться безымянные файлы. Программы проверки и восстановления помещают сюда неповреждённые безымянные файлы под числовыми именами.

Каталог /mnt  стандартный каталог для временного связывания (монтирования) физических файловых систем к корневой для получения единого дерева логической файловой системы. Обычно содержимое этого каталога пусто, т.к. при монтировании он перекрывается связанной файловой системой.

Каталог /home предназначен для размещения каталогов пользователей.

Каталог /usr  каталог различных сервисных систем.

В каталоге /spool находятся выполняемые файлы утилит UNIX.

Каталог /tmp предназначен для хранения временных файлов для работы UNIX.