Файлы в UNIX играют ключевую роль, что не всегда справедливо для других ОС. Помимо того, что информация хранится в виде файлов, файлы в ОС UNIX определяют привелегии пользователей, поскольку права пользователя в большенстве случаев контролируются с помощью прав доступа к файлам. Файлы обеспечивают доступ к переферийным устройствам, включая накопители на магнитных дисках, CD-ROM, принтеры, терминалы, сетевые адаптеры и даже память.Для приложений UNIX доступ к дисковому файлу неотличим от доступа к принтеру. Наконец, все программы, которые выполняются в системе, системные процессы и даже ядро UNIX являются исполняемыми файлами. Как и во многих современных ОС в UNIX файлы организованы в виде древовидной структуры. Корнем этого дерева является корневой каталог, имеющий имя “/”. Имена всех остальных файлов содержат путь от корневого каталога до файла. Таким образом, полное имя любого файла начинается с “/” и не содержит идентификатора устройства на котором он фактически хранится. Однако, это не означает, что в системе присутствует только одна файловая система. В большенстве случаев единое дерево, такое каким его видит пользователь системы, составлено из нескольких отдельных файловых систем, которые могут иметь различную внутреннюю структуру, а файлы, принадлежащие этим файловым системам, могут быть расположены на различных устройствах.
Имя файла является атрибутом файловой системы. Каждый файл имеет связанные с ним метаданные (хранящиеся в индексных дескрипторах - inode), содержащие все характеристики файла и позволяющие операционной системе выполнять операции, заказанные прикладной; открыть файл, прочитать, записать данные, создать или удалить файл. В частности метаданные содержат указатели на дисковые блоки хранения данных файла. Имя файла в файловой системе является указателем на его метаданные.
В UNIX существуют 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами: обычный файл (regular file), каталог (directory), специальный файл устройства (special device file), FIFO или именованный канал (named pipe), связь (link), coket.
Обычный файл: представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для ОС такие файлы представляют собой просто последовательность байтов. Вся интерпритация содержимого файла производится прикладной программой, обрабатывающей файл. К этим файлам относятся: текстовые файлы, исполняемые программы и т.п.
Каталог - файл, содержащий имена находящихся в нём файлов, а также указатели на метаданные позволяющие ОС оперировать этими файлами. Любая задача, имеющая право на чтение каталога, может прочесть его содержимое, но только ядро имеет право на запись в каталог.
Специальный файл устройства обеспечивает доступ к физическому устройству. В UNIX различают символьные и блочные файлы устройств. Доступ к устройствам осуществляется путём открытия, чтения и записи в специальный файл устройства.
Символьные файлы устройств используются для небуферезированного обмена данными с устройством. В противоположность этому блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины – блоков. Доступ к некоторым устройствам может осуществляться как через символьные, так и через блочные специальные файлы.
FIFO или именованный канал – файл, испльзуемый для связи между процессами. В отличии от программных каналов FIFO имеют имена.
Связь. Как уже говорилось каталог содержит имена файлов и указатели на их метаданные. В то же время сами метаданные не содержат ни имени файла, ни указателя на это имя. Такая архитектура позволяет одному файлу иметь неколько имён в файловой системе. Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо то того, как его называют в файловой системе. Такая связь имени файла с его данными называется жесткой связью. Два имени одного файла имеют абсолютно равноправные жесткие связи. В списках файлов эти файлы будут отличаться только именем, все остальные атрибуты файла будут абсолютно одинаковыми. С точки зрения пользователя – это два разных файла. Изменения, внесённые в любой из этих файлов, затронут и другой. Удаление одного из них не приведёт к удалению самого файла. По определению жесткие связи указывают на один и тот же индексный дескриптор inode. Поэтому проверить, имеют ли два имени файла жёсткую связь, можно, вызвав команду ls с ключом – i. Информацию о наличии у файла нескольких имён можно получить с помощью команды ls – l. Во второй колонке указывается число жёстких связей данного файла.
Жёсткая связь является естественной формой связи имени файла с его метаданными и не принадлежит к особому типу файла.
Особым типом файла является символическая связь, позволяющая косвенно адресовать файл. В отличие от жесткой связи, символическая связь адресует файл, который, в свою очередь ссылается на другой файл. В результате, последний файл адресуется символической связью косвенно. Данные файла, являющегося символической связью, содержат только имя целевого файла. Символическая связь является особым типом файла и ОС работает с таким файлом не так, как с обычным.
Сокеты – предназначены для взаимодействия между процессами. Интерфейс сокетов часто используется для доступа к сети, а также для реализации системы межпроцессорного взаимодействия.