В Unix и операционных системах, созданных на его основе, файловая система считается центральным компонентом операционной системы. [1] Она также была одной из первых частей системы, разработанной и реализованной Кеном Томпсоном в первой экспериментальной версии Unix, датированной 1969 годом . [2]
Как и в других операционных системах, файловая система обеспечивает хранение и извлечение информации, а также одну из нескольких форм межпроцессного взаимодействия , в том смысле, что множество небольших программ, которые традиционно образуют систему Unix, могут хранить информацию в файлах, чтобы другие программы могли ее читать, хотя каналы дополняли ее в этой роли, начиная с третьего издания . Кроме того, файловая система обеспечивает доступ к другим ресурсам через так называемые файлы устройств , которые являются точками входа для терминалов , принтеров и мышей .
В остальной части статьи Unix используется как общее название для обозначения как оригинальной операционной системы Unix, так и ее многочисленных аналогов .
Файловая система выглядит как одно корневое дерево каталогов. [1] Вместо того, чтобы обращаться к отдельным томам, таким как разделы диска , съемные носители и сетевые папки , как к отдельным деревьям (как это делается в DOS и Windows : каждый диск имеет букву диска, которая обозначает корень его дерева файловой системы), такие тома можно монтировать в каталог, в результате чего дерево файловой системы тома будет отображаться как этот каталог в более крупном дереве. [1] Корень всего дерева обозначается /
.
В оригинальной Bell Labs Unix была принята двухдисковая конфигурация, где первый диск содержал программы запуска, а второй — файлы и программы пользователей. Этот второй диск был смонтирован в пустой каталог, указанный usr
на первом диске, в результате чего два диска отображались как одна файловая система, а содержимое второго диска можно было просмотреть по адресу /usr
.
Каталоги Unix не содержат файлов. Вместо этого они содержат имена файлов в паре со ссылками на так называемые inodes , которые в свою очередь содержат как файл, так и его метаданные (владелец, разрешения, время последнего доступа и т. д., но не имя). Несколько имен в файловой системе могут ссылаться на один и тот же файл, эта функция называется жесткой ссылкой . [1] Математические характеристики жестких ссылок делают файловую систему ограниченным типом направленного ациклического графа , хотя каталоги по-прежнему образуют дерево, поскольку они, как правило, не могут быть жестко связаны. (Как первоначально предполагалось в 1969 году, файловая система Unix фактически будет использоваться как общий граф с жесткими ссылками на каталоги, предоставляющие навигацию, вместо имен путей. [2] )
Первоначальная файловая система Unix поддерживала три типа файлов: обычные файлы, каталоги и «специальные файлы», также называемые файлами устройств. [1] Berkeley Software Distribution (BSD) и System V добавили тип файла, который использовался для межпроцессного взаимодействия : BSD добавила сокеты , [3] а System V добавила файлы FIFO .
BSD также добавила символические ссылки (часто называемые «симлинками») к диапазону типов файлов, которые являются файлами, ссылающимися на другие файлы, и дополняют жесткие ссылки. [3] Символические ссылки были смоделированы по образцу аналогичной функции в Multics , [4] и отличаются от жестких ссылок тем, что они могут охватывать файловые системы и что их существование не зависит от целевого объекта. Другие системы Unix могут поддерживать дополнительные типы файлов. [5]
Существуют определенные соглашения для поиска некоторых видов файлов, таких как программы, файлы конфигурации системы и домашние каталоги пользователей . Они были впервые задокументированы в hier(7)
man-странице начиная с версии 7 Unix ; [6] последующие версии, производные и клоны обычно имеют похожую man-страницу. [7] [8] [9] [10] [11] [12]
Детали структуры каталогов со временем менялись. Хотя структура файловой системы не является частью спецификации Single UNIX , существует несколько попыток стандартизировать (части) ее, например, System V Application Binary Interface , Intel Binary Compatibility Standard , Common Operating System Environment и Linux Foundation Filesystem Hierarchy Standard (FHS). [13]
Ниже представлен обобщенный обзор типичных расположений файлов в операционной системе Unix: