Л 21 ОС

лекция

Лекция №21

Тема: «Состав и назначение стандартных каталогов»

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

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

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

Каждый (под)каталог может содержать как отдельные файлы, так и подкаталоги. Иерархическую структуру каталогов обычно иллюстрируют рисунком «дерева каталогов», в котором каждый каталог изображается узлом «дерева», а файлы — «листьями». В MS Windows или DOS каталоговая структура строится отдельно для каждого физического носителя (т. е., имеем не отдельное «дерево», а целый «лес») и корневой каталог каждой каталоговой структуры обозначается какой-нибудь буквой латинского алфавита (отсюда уже возникает некоторое ограничение). В Linux (и UNIX вообще) строится единая каталоговая структура для всех  носителей, и единственный  корневой  каталог этой структуры обозначается символом «/». В эту единую каталоговую структуру можно подключить любое число каталогов, физически расположенных на разных носителях (как  говорят, «смонтировать файловую систему» или «смонтировать носитель»). Имена каталогов строятся по тем же правилам, что и имена файлов. И, вообще, каталоги в принципе  ничем, кроме своей  внутренней структуры  (до которой  ОС  уже  есть  дело) не отличаются от «обычных» файлов, например, текстовых.

Полным именем файла (или путем к файлу) называется список имен вложенных друг в друга подкаталогов, начинающийся с корневого каталога  и  оканчивающийся  собственно именем файла. При этом имена подкаталогов в этом списке разделяются тем же символом «/», который служит для обозначения корневого каталога. Например, на моем компьютере /home/kos/ve/book/filesystem1.htm является полным именем того файла, в котором я сохранил первый вариант данного текста.

В каждый момент времени пользователь работает с одним экземпляром оболочки shell и эта оболочка хранит значение так называемого «текущего» каталога, т. е. того каталога, в котором пользователь сейчас работает. Имеется специальная команда, которая сообщает вам значение текущего каталога — pwd.

В Linux типовая структура каталогов выдерживается, пожалуй, даже более строго, чем в Windows. Более того, существует стандарт на структуру каталогов для UNIX-подобных ОС, так называемый Filesystem Hierarchy Standart (FHS).

Стандарт FHS предлагает создать в корневом каталоге следующие подкаталоги:

  1. bin — этот каталог содержит в основном готовые к исполнению программы, большинство из которых необходимы во время старта системы (или в однопользовательском системном режиме, используемом для отладки). Здесь хранится значительное количество общеупотребительных команд Linux.
  2. boot— неизменяемые файлы, необходимые для загрузки системы;
  3. dev— файлы устройств;
  4. etc-этот каталог и его подкаталоги содержат большинство данных, необходимых для начальной загрузки системы и основные конфигурационные файлы. В /etc находятся,  например,  файл  inittab,  пределяющий  загружаемую  конфигурацию,  и файл  паролей  пользователей  passwd.  Часть  конфигурационных  файлов  может находится и в /usr/etc. Каталог /etc не должен содержать двоичных файлов (их следует перенести в /bin или /sbin). Ниже приводится назначение основных (но далеко не всех!) подкаталогов каталога /etc;
  5. home —  домашние каталоги пользователей;
  6. lib — основные разделяемые библиотеки и модули ядра; этот каталог содержит разделяемые библиотеки функций, необходимых компилятору  языка C и модули (драйверы устройств). Даже если в системе не установлен компилятор языка C, разделяемые библиотеки необходимы, поскольку они используются многими прикладными программами. Они загружаются в память по мере необходимости выполнения каких-то функций, что позволяет уменьшить объем кода программ — в противном случае один и тот же код многократно повторялся бы в различных программах
  7. mnt— это точка монтирования для временно монтируемых файловых систем. Если на компьютере запускается поочередно Linux и MS DOS, то этот каталог обычно используется, чтобы монтировать файловую систему MS DOS. Если вы имеете привычку монтировать несколько дополнительных носителей, например, дискеты, CD-ROM, дополнительный жесткий диск и т. д., то можно создать в нем соответственно дополнительные подкаталоги для каждого носителя;
  8. root— домашний каталог пользователя суперпользователя root;
  9. opt— дополнительные пакеты программного обеспечения;
  10. sbin— основные системные исполняемые файлы;
  11. tmp— временные файлы;
  12. usr — этот каталог огромен и его структура в основном повторяет структуру корневого каталога. В его подкаталогах находятся все основные приложения. В соответствии со стандартом FHS рекомендуется выделять для этого каталога отдельный раздел диска или вообще располагать его на сетевом диске, общем для всех компьютеров в сети. Такой раздел или диск монтируют только для чтения и располагают в нем общие конфигурационные и исполняемые файлы, документацию, системные утилиты и библиотеки, а также включаемые файлы (файлы типа include);
  13. var— переменные данные.

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