- •Лекция-1:
- •Лекция-2:
- •Лекция-3:
- •Лекция-4:
- •Лекция-5:
- •Лекция-6:
- •Лекция-7:
- •Лекция-8:
- •Лекция-9:
- •Лекция-10:
- •Лекция-11:
- •Лекция-12:
- •Лекция-13:
- •Лекция-14:
- •Лекция-14:
- •Лекция-15:
- •Лекция-16:
- •Лекция-17:
- •Лекция-18:
- •Лекция-19:
- •Применение алгоритма банкира
- •Лекция-20:
- •Лекция-21
- •Лекция-22
- •Лекция-23
- •Лекция-24
Лекция-2:
Основы файловой системы UNIX
С точки зрения пользователей в UNIX есть два типа объектов: файлы и процессы. Все данные хранятся в виде файлов, а когда запускается программа, ядро загружает соответствующий исполняемый файл, создаёт образ процесса и передаёт ему управление. Во время работы процессы могут взаимодействовать с файлами.
Файлы в операционной системе играют одну из важнейших ролей, т.к. в них хранятся не только данные, но файлы также определяют и привилегии пользователей путём введения прав доступа к файлам. При обращении пользователя к файлу сравниваются права доступа, установленные для файла с правами конкретного пользователя. Файлы также обеспечивают доступ к периферийным устройствам машины.
Файлы организованы в древовидную файловую систему. Каждый файл имеет имя, определяющее его положение в дереве файловой системы. Корнем дерева является корневой каталог с именем “/”, имена всех остальных файлов содержат путь: /home/student/proga.cpp
Имя файла атрибут файловой системы, а не набора некоторых данных на диске. Каждый файл имеет связанные с ним метаданные, которые хранятся в индексных дескрипторах. Индексный дескриптор содержит все характеристики файла, позволяющие операционной системе выполнять операции, затребованные прикладной задачей. В метаданных содержатся и указатели на дисковые области, в которых хранятся данные.
Имя файла в файловой системе указатель на его метаданные. Сами метаданные не содержат указателя на имя файла. Полное имя файла не содержит указателя на физический носитель, где находится файл.
Типы файлов
В UNIX существуют следующие типы файлов:
Обычный файл
Каталог
Специальный файл устройства
Файл FIFO или именованный канал
Связь (link)
Сокет (socket)
Рассмотрим эти типы файлов подробнее:
Обычный файл: наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Интерпретация содержимого определяется прикладной программой, обрабатывающей файлы.
Каталог: файл, содержащий имена, находящихся в нём файлов, а также указатели на дополнительную информацию (индексные дескрипторы), позволяющую операционной системе производить операции над этими файлами. Каталоги определяют положение файла в дереве файловой системы, т.к. сам файл не содержит информации о своём местонахождении. По существу каталог представляет собой таблицу, где каждая запись соответствует одному файлу.
10520 .
10534 ..
8671 file1.txt
9731 file2.txt
4554 p1.c
Специальный файл устройства: обеспечивает доступ у физическому устройству. В UNIX различаются символьные и блочные файлы устройств. Символьные устройства применяются для не буферизированного обмена данными с устройствами (клавиатура, экран терминала), а блочные файлы для обмене данными в виде пакетов фиксированной длины (дисковые накопители). К некоторым устройствам доступ может быть как блочный, так и символьный. Доступ к устройствам, как и к файлам, осуществляется путём открытия, чтения и записи в специальные файлы устройств.
Файл FIFO или именованный канал: специальный файл для связи между процессами на запись и чтение и позволяет связать по данным несколько процессов. Поддержка файла FIFO появилась в UNIX, начиная с Release-5.
Связь (link). Индексные дескрипторы не содержать ни имени файла, ни указателя на него. Такой подход позволяет одному файлу иметь несколько имён в файловой системе. Имена жёстко связаны с индексными дескрипторами, и, соответственно, с данными файла, а сам файл существует независимо от того, как его называют, в файловой системе. Такая связь имени файла с его данными жёсткая связь: ln p1 /home/student/proga2.cpp будет создана жёсткая связь.
Жёсткие связи абсолютно равноправны. Изменения, вносимые в файл, проявятся при обращении к файлу по любому из его имён. Можно переместить файл, но жёсткая связь не нарушится. Операционная система контролирует количество жёстких связей у файла и файл не удаляется до тех пор, пока у него есть хотя бы одна жёсткая связь. Отдельные файлы можно удалять, но это не приводит к потере данных. Информацию о наличии жёстких связей можно получить с помощью команды: ls -l
Жёсткая связь является естественной формой связи имени файла с его индексным дескриптором и не принадлежит к особому типу файлов.
Особым типом файла является символическая связь, позволяющая косвенно адресовать файл, который, в свою очередь, ссылается на другой файл... В результате последний файл в такой цепочке адресуется символической связью косвенно. В файле, который является символической связью, содержится только имя целевого файла. Создать символическую связь можно с помощью команды: ln -s proga3.cpp /home/student/rulezz.cpp
Теперь по команде cat rulezz.cpp на экран будет выведено содержимое файла proga3.cpp
Таким образом, при обращении к файлу, который является символической связью, действие переадресуется тому файлу, на который указывает связь.
Сокет (socket): специальный файл, предназначенный для взаимодействием между процессами. Интерфейс сокетов часто используется для доступа к сети TCP/IP, в некоторых реализациях с его помощью осуществляется межпроцессорное взаимодействие.
Структура файловой системы UNIX
Корневой каталог основа файловой системы UNIX. Все остальные файлы и каталоги располагаются в рамках структуры, порождённой корневым каталогом, независимо от их физического местонахождения.
В /bin находятся наиболее часто употребимые команды и утилиты системы.
В /dev находятся специальные файлы устройств, являющиеся интерфейсом доступа к периферийным устройствам. Этот каталог может содержать несколько подкаталогов, группирующих несколько файлов устройств одного типа.
В /etc находятся системные конфигурационные файлы и утилиты администрирования. Самые важные скрипты инициализации системы, которые хранятся в каталогах rcN, где N номер, определяющий уровень выполнения системы.
В /default находятся параметры, задающиеся по умолчанию для многих команд.
В /lib находятся библиотечные файлы C и других языков программирования.
Каталог /lost+found каталог потерянных файлов. При аппаратных сбоях и сбоях операционной системы могут появляться безымянные файлы. Программы проверки и восстановления помещают сюда неповреждённые безымянные файлы под числовыми именами.
Каталог /mnt стандартный каталог для временного связывания (монтирования) физических файловых систем к корневой для получения единого дерева логической файловой системы. Обычно содержимое этого каталога пусто, т.к. при монтировании он перекрывается связанной файловой системой.
Каталог /home предназначен для размещения каталогов пользователей.
Каталог /usr каталог различных сервисных систем.
В каталоге /spool находятся выполняемые файлы утилит UNIX.
Каталог /tmp предназначен для хранения временных файлов для работы UNIX.