Типи файлів.

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Коли користувач виконуєте команду ls -1, символ перед правами доступу визначає один з двох типів файлів: звичайні файли (-) і каталоги (d). Коли користувач переміщується по дереву файлів і переглядає вміст каталогів, він може також зустріти й інші типи файлів:

1. Файли символьного режиму: ці файли є або спеціальними системними файлами (типу /dev/null), або периферійними пристроями (послідовні або рівнобіжні порти), характерною рисою яких є те, що їхній уміст (якщо він є) не буферизується (тобто він не зберігається в пам'яті). Такі файли позначаються буквою с.

2. Файли блокового режиму: ці файли є периферійними пристроями, і, на відміну від символьних файлів, їхній уміст буферизується. Файлами цієї категорії є, наприклад, тверді диски, розділи твердого диска, дисководи, приводи CD-ROM та інші пристрої збереження даних. Приклади файлів блокового доступу: /dev/hda, /dev/sda5. Такі файли позначаються буквою b.

3. Символічні посилання: ці файли є дуже розповсюдженими і широко використовуються в процедурі запуску системи Mandriva Linux. Їх мета – зв'язувати файли символічним способом. Це означає, що вони є файлами, що містять шлях до іншого файлу. Вони можуть указувати на неіснуючий файл. Дуже часто їх називають "м'якими посиланнями", і позначаються такі файли буквою "l".

4. Іменовані канали: дуже схожі на канали, використовувані в командах shеll'а, але з тією різницею, що в цих каналів і справді є імена. Однак вони дуже рідкі. Такі файли позначаються буквою р.

5. Сокети: це тип файлу для всіх мережних підключень, але тільки деякі з них мають назви. А саме головне, що існує кілька типів сокетів. Такі файли позначаються буквою s.



Типы файлов


При работе с ОС Linux важно понимать, что любой объект ОС является файлом. Это ключевая особенность ОС Linux по сравнению с операционными системами семейства Windows. Файлы различаются как по своей структуре, так и по своему предназначению. В ОС Linux определены семь типов файлов:

   * регулярные файлы (обычные файлы);
   * каталоги;
   * ссылки;
   * сокеты;
   * именованные каналы;
   * файлы блочных устройств;
   * файлы символьных устройств.

Определить тип файла можно с помощью команды Is -Id. Первый символ в строке вывода обозначает тип файла. В следующем листинге выдается информация о файле

brw-rw------ 1 root disk 22, 0 Dec 22 13:30 /dev/hdc


Регулярные файлы. К регулярным файлам относятся бинарные файлы, библиотеки, текстовые файлы и файлы различных приложений. ОС Linux не накладывает никаких ограничений на структуру данных файлов. К их содержимому возможен как последовательный, так и прямой доступ.


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


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


Сокеты. Сокет - это специальный тип файла, используемый процессами для взаимодействия друг с другом. Установленные посредством сокетов соединения позволяют процессам взаимодей­ствовать, не подвергаясь влиянию других процессов. В ОС Linux выделяется несколько видов сокетов, использование которых предполагает наличие сетевой инфраструктуры. Локальные сокеты доступны только на локальном компьютере, обращение к ним осуществляется через специальные объекты файловой системы, а не через сетевые порты. Такие сокеты принято называть сокетами домена UNIX (UNIX domain socket). Помимо локальных сокетов существуют сетевые сокеты, позволяющие процессам обмениваться данными по сети. Несмотря на то, что другие процессы распознают файлы сокетов как элементы каталога, только процессы, между которыми установлено соответствующее соединение, могут осуществлять чтение и запись файлов сокета. С локальными сокетами работают различные сервисы ОС Linux - CUPS, X Window и Syslog.


Именованные каналы (FIFO). Файлы данного типа подобны сокетам, поскольку тоже используются для взаимодействия между процессами, однако в отличие от сокетов в именованных каналах данные передаются только в одном направлении.


Файлы блочных и символьных устройств. Файлы блочных и символьных устройств позволяют приложениям получать доступ к аппаратным средствам и периферийному оборудованию системы. На этапе конфигурирования к ядру ОС Linux динамически подгружаются необходимые модули, предназначенные для управления аппаратными средствами системы. За управление конкретным устройством отвечает специальный модуль, называемый драйвером устройства. Драйверы устройств образуют стандартный интерфейс взаимодействия, который воспринимается пользователем как набор обычных файлов. Получив запрос к файлу символьного или блочного устройства, ядро передает данный запрос соответствующему драйверу. Файлы блочных и символьных устройств сами по себе не являются драйверами. Их можно рассматривать как шлюзы, через которые драйвер принимает запросы на выполнение предусмотренных операций. Файлы символьных устройств не используют буферизацию в процессе операций ввода-вывода. Все операции ввода-вывода осуществляются немедленно по мере поступления. К символьным устройствам относятся виртуальные терминалы, модемы и другие устройства, не поддерживающие произвольный доступ к данным. Файлы блочных устройств обрабатываются драйверами, которые осуществляют ввод-вывод данных цельными блоками. В данном случае, на уровне ядра выполняется буферизация данных ввода-вывода. К блочным устройствам относятся такие устройства как жесткие диски, DVD приводы, модули памяти, а так же все остальные устройства, поддерживающие произвольный доступ к данным. Файлы блочных и символьных устройств характеризуются двумя номерами: старшим (major) и младшим (minor). Старший номер устройства позволяет ядру определить, к какому драйверу относится файл, а младший номер идентифицирует конкретное физическое устройство.