Основные понятия

Операционная система Linux разработана в соответствии с требованиями международного стандарта на UNIX-совместимые системы IEEE POSIX, поэтому логично будет кратко рассмотреть сначала структуру файловой системы ОС UNIX.

Одним из достоинств ОС UNIX является то, что система базируется на небольшом числе интуитивно ясных понятий. Однако, несмотря на простоту этих понятий, к ним нужно привыкнуть. Без этого невозможно понять существо ОС UNIX.

Пользователь

С самого начала ОС UNIX замышлялась как интерактивная система. Другими словами, UNIX предназначен для терминальной работы. Чтобы начать работать, человек должен "войти" в систему, введя со свободного терминала свое учетное имя (account name) и, возможно, пароль (password). Человек, зарегистрированный в учетных файлах системы, и, следовательно, имеющий учетное имя, называется зарегистрированным пользователем системы. Регистрацию новых пользователей обычно выполняет администратор системы. Пользователь не может изменить свое учетное имя, но может установить и/или изменить свой пароль. Пароли хранятся в отдельном файле в закодированном виде. Не стоит забывать свой пароль, снова узнать его не поможет даже администратор!

Все пользователи ОС UNIX явно или неявно работают с файлами. Файловая система ОС UNIX имеет древовидную структуру. Промежуточными узлами дерева являются каталоги со ссылками на другие каталоги или файлы, а листья дерева соответствуют файлам или пустым каталогам. Каждому зарегистрированному пользователю соответствует некоторый каталог файловой системы, который называется "домашним" (home) каталогом пользователя. При входе в систему пользователь получает неограниченный доступ к своему домашнему каталогу и всем каталогам и файлам, содержащимся в нем. Пользователь может создавать, удалять и модифицировать каталоги и файлы, содержащиеся в домашнем каталоге. Потенциально возможен доступ и ко всем другим файлам, однако он может быть ограничен, если пользователь не имеет достаточных привилегий.

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

Понятие файла является одним из наиболее важных для ОС UNIX. Все файлы, с которыми могут манипулировать пользователи, располагаются в файловой системе, представляющей собой дерево, промежуточные вершины которого соответствуют каталогам, и листья - файлам и пустым каталогам. Примерная структура файловой системы ОС UNIX показана на рисунке 2.1. Реально на каждом логическом диске (разделе физического дискового пакета) располагается отдельная иерархия каталогов и файлов. Для получения общего дерева в динамике используется "монтирование" отдельных иерархий к фиксированной корневой файловой системе.

Замечание: В мире ОС UNIX по историческим причинам термин "файловая система" является перегруженным, обозначая одновременно иерархию каталогов и файлов и часть ядра, которая управляет каталогами и файлами. Видимо, было бы правильнее называть иерархию каталогов и файлов архивом файлов, а термин "файловая система" использовать только во втором смысле. Однако, следуя традиции ОС UNIX, мы будем использовать этот термин в двух смыслах, различая значения по контексту.

Каждый каталог и файл файловой системы имеет уникальное полное имя (в ОС UNIX это имя принято называть full pathname - имя, задающее полный путь, поскольку оно действительно задает полный путь от корня файловой системы через цепочку каталогов к соответствующему каталогу или файлу; я буду использовать термин "полное имя", поскольку для pathname отсутствует благозвучный русский аналог). Каталог, являющийся корнем файловой системы (корневой каталог), в любой файловой системе имеет предопределенное имя "/" (слэш). Полное имя файла, например, /bin/sh означает, что в корневом каталоге должно содержаться имя каталога bin, а в каталоге bin должно содержаться имя файла sh. Коротким или относительным именем файла (relative pathname) называется имя (возможно, составное), задающее путь к файлу от текущего рабочего каталога (существует команда и соответствующий системный вызов, позволяющие установить текущий рабочий каталог).

В каждом каталоге содержатся два специальных имени, имя ".", именующее сам этот каталог, и имя "..", именующее "родительский" каталог данного каталога, т.е. каталог, непосредственно предшествующий данному в иерархии каталогов.

Рис. 2.1. Структура каталогов файловой системы

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

Структура файловой системы

Файловая система обычно размещается на дисках или других устройствах внешней памяти, имеющих блочную структуру. Кроме блоков, сохраняющих каталоги и файлы, во внешней памяти поддерживается еще несколько служебных областей.

В мире UNIX существует несколько разных видов файловых систем со своей структурой внешней памяти. Наиболее известны традиционная файловая система UNIX System V (s5) и файловая система семейства UNIX BSD (ufs). Файловая система s5 состоит из четырех секций (рисунок 2.2,a). В файловой системе ufs на логическом диске (разделе реального диска) находится последовательность секций файловой системы (рисунок 2.2,b).

Рис. 2.2. Структура внешней памяти файловых систем s5 и ufs

Кратко опишем суть и назначение каждой области диска.

    Boot-блок содержит программу раскрутки, которая служит для первоначального запуска ОС UNIX. В файловых системах s5 реально используется boot-блок только корневой файловой системы. В дополнительных файловых системах эта область присутствует, но не используется.

    Суперблок - это наиболее ответственная область файловой системы, содержащая информацию, которая необходима для работы с файловой системой в целом. Суперблок содержит список свободных блоков и свободные i-узлы (information nodes - информационные узлы). В файловых системах ufs для повышения устойчивости поддерживается несколько копий суперблока (как видно из рисунка 2.2,b, по одной копии на группу цилиндров). Каждая копия суперблока имеет размер 8196 байт, и только одна копия суперблока используется при монтировании файловой системы (см. ниже). Однако, если при монтировании устанавливается, что первичная копия суперблока повреждена или не удовлетворяет критериям целостности информации, используется резервная копия.

    Блок группы цилиндров содержит число i-узлов, специфицированных в списке i-узлов для данной группы цилиндров, и число блоков данных, которые связаны с этими i-узлами. Размер блока группы цилиндров зависит от размера файловой системы. Для повышения эффективности файловая система ufs старается размещать i-узлы и блоки данных в одной и той же группе цилиндров.

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

    Блоки данных - в этой части файловой системы хранятся реальные данные файлов. В случае файловой системы ufs все блоки данных одного файла пытаются разместить в одной группе цилиндров. Размер блока данных определяется при форматировании файловой системы командой mkfs и может быть установлен в 512, 1024, 2048, 4096 или 8192 байтов.

Монтируемые файловые системы

Файлы любой файловой системы становятся доступными только после "монтирования" этой файловой системы. Файлы "не смонтированной" файловой системы не являются видимыми операционной системой.

Для монтирования файловой системы используется системный вызов mount. Монтирование файловой системы означает следующее. В имеющемся к моменту монтирования дереве каталогов и файлов должен иметься листовой узел - пустой каталог (в терминологии UNIX такой каталог, используемый для монтирования файловой системы, называется directory mount point - точка монтирования). В любой файловой системе имеется корневой каталог. Во время выполнения системного вызова mount корневой каталог монтируемой файловой системы совмещается с каталогом - точкой монтирования, в результате чего образуется новая иерархия с полными именами каталогов и файлов.

Смонтированная файловая система впоследствии может быть отсоединена от общей иерархии с использованием системного вызова umount. Для успешного выполнения этого системного вызова требуется, чтобы отсоединяемая файловая система к этому моменту не находилась в использовании (т.е. ни один файл из этой файловой системы не был открыт). Корневая файловая система всегда является смонтированной, и к ней не применим системный вызов umount.

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

Интерфейс с файловой системой

Ядро ОС UNIX поддерживает для работы с файлами несколько системных вызовов. Среди них наиболее важными являются open, creat, read, write, lseek и close.

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

Файл в системных вызовах, обеспечивающих реальный доступ к данным, идентифицируется своим дескриптором (целым значением). Дескриптор файла выдается системными вызовами open (открыть файл) и creat (создать файл). Основным параметром операций открытия и создания файла является полное или относительное имя файла. Кроме того, при открытии файла указывается также режим открытия (только чтение, только запись, запись и чтение и т.д.) и характеристика, определяющая возможности доступа к файлу:

open(pathname, oflag [,mode])

Одним из признаков, которые могут участвовать в параметре oflag, является признак O_CREAT, наличие которого указывает на необходимость создания файла, если при выполнении системного вызова open файл с указанным именем не существует (параметр mode имеет смысл только при наличии этого признака). Тем не менее по историческим причинам и для обеспечения совместимости с предыдущими версиями ОС UNIX отдельно поддерживается системный вызов creat, выполняющий практически те же функции.

Открытый файл может использоваться для чтения и записи последовательностей байтов. Для этого поддерживаются два системных вызова:

read(fd, buffer, count) и write(fd, buffer, count)

Здесь fd - дескриптор файла (полученный при ранее выполненном системном вызове open или creat), buffer - указатель символьного массива и count - число байтов, которые должны быть прочитаны из файла или в него записаны. Значение функции read или write - целое число, которое совпадает со значением count, если операция заканчивается успешно, равно нулю при достижении конца файла и отрицательно при возникновении ошибок.

В каждом открытом файле существует текущая позиция. Сразу после открытия файл позиционируется на первый байт. Другими словами, если сразу после открытия файла выполняется системный вызов read (или write), то будут прочитаны (или записаны) первые count байтов содержимого файла (конечно, они будут успешно прочитаны только в том случае, если файл реально содержит по крайней мере count байтов). После выполнения системного вызова read (или write) указатель чтения/записи файла будет установлен в позицию count+1 и т.д.

Такой, чисто последовательный стиль работы, оказывается во многих случаях достаточным, но часто бывает необходимо читать или изменять файл с произвольной позиции (например, как без такой возможности хранить в файле прямо индексируемые массивы данных?). Для явного позиционирования файла служит системный вызов

lseek(fd, offset, origin)

Как и раньше, здесь fd - дескриптор ранее открытого файла. Параметр offset задает значение относительного смещения указателя чтения/записи, а параметр origin указывает, относительно какой позиции должно применяться смещение. Возможны три значения параметра origin. Значение 0 указывает, что значение offset должно рассматриваться как смещение относительно начала файла. Значение 1 означает, что значение offset является смещением относительно текущей позиции файла. Наконец, значение 2 говорит о том, что задается смещение относительно конца файла. Заметим, что типом данных параметра offset является long int. Это значит, что, во-первых, могут задаваться достаточно длинные смещения и, во-вторых, смещения могут быть положительными и отрицательными.

Например, после выполнения системного вызова

указатель чтения/записи соответствующего файла будет установлен на начало (на первый байт) файла. Системный вызов

UNIX стандарту Filesystem ... команды. Рисунок 1.2.Структура каталогов ОС Linux Основным каталогом файловой системы ОС Linux является корневой каталог...

  • Установка операционной системы Linux

    Реферат >> Информатика

    Мощных и гибких методов управления файловыми системами Linux или Linux -подобных операционных систем. Во многих... одна древовидная структура каталогов, и эта структура может занимать несколько разделов. Когда файловая система монтируется...

  • Понимание файловой системы Linux, структуры каталогов, размещения конфигурационных, исполняемых и временных файлов поможет вам лучше разбираться в своей системе и стать успешным системным администратором. Файловая система Linux будет непривычна именно для новичка, только что перешедшего с Windows, ведь здесь все совсем по-другому. В отличие от Windows, программа не находится в одной папке, а, как правило, распределена по корневой файловой системе. Это распределение поддается определенным правилам. Вы когда-нибудь задавались вопросом, почему некоторые программы находятся в папке /bin, или /sbin, /usr/sbin, /usr/local/bin, в чем разница между этими каталогами?

    Например, программа less, находится в каталоге /usr/bin, но почему не в /sbin или /usr/sbin. А такие программы, как ifconfig или fdisk находятся в каталоге /sbin и нигде иначе.

    В этой статье будет полностью рассмотрена структура файловой системы Linux, после ее прочтения вы сможете понять смысл использования большинства папок в корневом каталоге Linux.

    / - корень

    Это главный каталог в системе Linux. По сути, это и есть файловая система Linux. Здесь нет дисков или чего-то подобного, как в Windows. Вместо этого, адреса всех файлов начинаются с корня, а дополнительные разделы, флешки или оптические диски подключаются в папки корневого каталога.

    Обратите внимание, что у пользователя root домашний каталог /root, но не сам /.

    /bin - (binaries) бинарные файлы пользователя

    Этот каталог содержит исполняемые файлы. Здесь расположены программы, которые можно использовать в однопользовательском режиме или режиме восстановления. Одним словом, те утилиты, которые могут использоваться пока еще не подключен каталог /usr/. Это такие общие команды, как cat, ls, tail, ps и т д.

    /sbin - (system binaries) системные исполняемые файлы

    Так же как и /bin, содержит двоичные исполняемые файлы, которые доступны на ранних этапах загрузки, когда не примонтирован каталог /usr. Но здесь находятся программы, которые можно выполнять только с правами суперпользователя. Это разные утилиты для обслуживания системы. Например, iptables, reboot, fdisk, ifconfig,swapon и т д.

    /etc - (etcetera) конфигурационные файлы

    В этой папке содержатся конфигурационные файлы всех программ, установленных в системе.

    Кроме конфигурационных файлов, в системе инициализации Init Scripts, здесь находятся скрипты запуска и завершения системных демонов, монтирования файловых систем и автозагрузки программ. Структура каталогов linux в этой папке может быть немного запутанной, но предназначение всех их - настройка и конфигурация.

    /dev - (devices) файлы устройств

    В Linux все, в том числе внешние устройства являются файлами. Таким образом, все подключенные флешки, клавиатуры, микрофоны, камеры - это просто файлы в каталоге /dev/. Этот каталог содержит не совсем обычную файловую систему. Структура файловой системы Linux и содержащиеся в папке /dev файлы инициализируются при загрузке системы, сервисом udev. Выполняется сканирование всех подключенных устройств и создание для них специальных файлов. Это такие устройства, как: /dev/sda, /dev/sr0, /dev/tty1, /dev/usbmon0 и т д.

    /proc - (proccess) информация о процессах

    Это тоже необычная файловая система, а подсистема, динамически создаваемая ядром. Здесь содержится вся информация о запущенных процессах в реальном времени. По сути, это псевдофайловая система, содержащая подробную информацию о каждом процессе, его Pid, имя исполняемого файла, параметры запуска, доступ к оперативной памяти и так далее. Также здесь можно найти информацию об использовании системных ресурсов, например, /proc/cpuinfo, /proc/meminfo или /proc/uptime. Кроме файлов в этом каталоге есть большая структура папок linux, из которых можно узнать достаточно много информации о системе.

    /var (variable) - Переменные файлы

    Название каталога /var говорит само за себя, он должен содержать файлы, которые часто изменяются. Размер этих файлов постоянно увеличивается. Здесь содержатся файлы системных журналов, различные кеши, базы данных и так далее. Дальше рассмотрим назначение каталогов Linux в папке /var/.

    /var/log - Файлы логов

    /var/lib - базы данных

    Еще один тип изменяемых файлов - это файлы баз данных, пакеты, сохраненные пакетным менеджером и т д.

    /var/mail - почта

    В эту папку почтовый сервер складывает все полученные или отправленные электронные письма, здесь же могут находиться его логи и файлы конфигурации.

    /var/spool - принтер

    Изначально, эта папка отвечала за очереди печати на принтере и работу набора программ cpus.

    /var/lock - файлы блокировок

    Здесь находятся файлы блокировок. Эти файлы означают, что определенный ресурс, файл или устройство занят и не может быть использован другим процессом. Apt-get, например, блокирует свою базу данных, чтобы другие программы не могли ее использовать, пока программа с ней работает.

    /var/run - PID процессов

    Содержит файлы с PID процессов, которые могут быть использованы, для взаимодействия между программами. В отличие от каталога /run данные сохраняются после перезагрузки.

    /tmp (temp) - Временные файлы

    В этом каталоге содержатся временные файлы, созданные системой, любыми программами или пользователями. Все пользователи имеют право записи в эту директорию.

    Файлы удаляются при каждой перезагрузке. Аналогом Windows является папка Windows\Temp, здесь тоже хранятся все временные файлы.

    /usr - (user applications) Программы пользователя

    Это самый большой каталог с большим количеством функций. Тут наиболее большая структура каталогов Linux. Здесь находятся исполняемые файлы, исходники программ, различные ресурсы приложений, картинки, музыку и документацию.

    /usr/bin/ - Исполняемые файлы

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

    /usr/sbin/

    Содержит двоичные файлы программ для системного администрирования, которые нужно выполнять с правами суперпользователя. Например, таких как Gparted, sshd, useradd, userdel и т д.

    /usr/lib/ - Библиотеки

    Содержит библиотеки для программ из /usr/bin или /usr/sbin.

    /usr/local - Файлы пользователя

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

    /home - Домашняя папка

    В этой папке хранятся домашние каталоги всех пользователей. В них они могут хранить свои личные файлы, настройки программ и т д. Например, /home/sergiy и т д. Если сравнивать с Windows, то это ваша папка пользователя на диске C, но в отличии от WIndows, home как правило размещается на отдельном разделе, поэтому при переустановке системы все ваши данные и настройки программ сохранятся.

    /boot - Файлы загрузчика

    Содержит все файлы, связанные с загрузчиком системы. Это ядро vmlinuz, образ initrd, а также файлы загрузчика, находящие в каталоге /boot/grub.

    /lib (library) - Системные библиотеки

    Содержит файлы системных библиотек, которые используются исполняемыми файлами в каталогах /bin и /sbin.

    Библиотеки имеют имена файлов с расширением *.so и начинаются с префикса lib*. Например, libncurses.so.5.7. Папка /lib64 в 64 битных системах содержит 64 битные версии библиотек из /lib. Эту папку можно сравнить с WIndows\system32, там тоже сгружены все библиотеки системы, только там они лежат смешанные с исполняемыми файлами, а здесь все отдельно.

    /opt (Optional applications) - Дополнительные программы

    В эту папку устанавливаются проприетарные программы, игры или драйвера. Это программы созданные в виде отдельных исполняемых файлов самими производителями. Такие программы устанавливаются в под-каталоги /opt/, они очень похожи на программы Windows, все исполняемые файлы, библиотеки и файлы конфигурации находятся в одной папке.

    /mnt (mount) - Монтирование

    В этот каталог системные администраторы могут монтировать внешние или дополнительные файловые системы.

    /media - Съемные носители

    В этот каталог система монтирует все подключаемые внешние накопители - USB флешки, оптические диски и другие носители информации.

    /srv (server) - Сервер

    В этом каталоге содержатся файлы серверов и сервисов. Например, могут содержаться файлы веб-сервера apache.

    /run - процессы

    Еще один каталог, содержащий PID файлы процессов, похожий на /var/run, но в отличие от него, он размещен в TMPFS, а поэтому после перезагрузки все файлы теряются.

    /sys (system) - Информация о системе

    Назначение каталогов Linux из этой папки - получение информации о системе непосредственно от ядра. Это еще одна файловая система организуемая ядром и позволяющая просматривать и изменить многие параметры работы системы, например, работу swap, контролировать вентиляторы и многое другое.

    Несмотря на то, что основным назначением файловой системы является упорядочение хранимых ресурсов, программистам не очень хотелось бы “изобретать велосипед” для управления объектами других типов. В Linux объектами файловой системы являются: процессы, устройства, структуры данных ядра и параметры настройки, каналы межзадачного взаимодействия, папки, и, конечно, обычные файлы. Такое устройство файловой системы имеет как преимущества, так и недостатки. К преимуществам относится единый программный интерфейс, легкость доступа из интерпретатора команд. К недостаткам относится реализация файловой системы по методу Франкенштейна.

    Файловая система состоит из четырех основных компонентов:

    1. Пространство имен – методы именования объектов и организации в виде единой иерархии
    2. API – набор системных вызовов для перемещения между объектами и управления ими
    3. Методы безопасности – схема защиты, сокрытия и совместного использования объектов
    4. Реализация – программный код, который связывает логические модели с дисковой подсистемой

    Файловая система – это единая иерархическая структура, которая начинается с каталога / и разветвляется, охватывая произвольное число каталогов.

    Каталог верхнего уровня называется корневым . Это моноиерархическая система отличается от используемой в Windows, где применяется понятие пространства имен, основанное на принципе деления диска на разделы.

    Цепочка имен каталогов, через которые необходимо пройти для доступа к заданному файлу, вместе с именем этого файла образуют путь к файлу. Путь может быть абсолютным (например, /temp/foo ) или относительным (например, book4/filesystem ). Последние интерпретируются начиная с текущего каталога. Стоит отметить, что текущий каталог есть у каждого процесса (большинство процессов никогда не изменяют свои рабочие каталоги, и поэтому просто наследуют текущий каталог процесса, который их запустил).

    Существует ограничение на длину имени файла – не более 255 символов. В имя нельзя включать символ косой черты и нулевые символы. Также есть ограничение на длину пути, который передается ядру в качестве аргумента системного вызова – 4095 байт.

    Монтирование и демонтирование файловой системы

    Файловое дерево формируется из отдельных частей, которые носят название файловых систем. Каждая файловая система имеет корневой каталог и список его подкаталогов и файлов. Большинство файловых систем представляет собой разделы жесткого диска или логические тома, но, как было сказано ранее, файловая система может принять облик всего, что подчиняется определенным функциональным признакам – сетевых файловых систем, компонентов ядра, дисков, устройств и т.д.

    В большинстве случаев файловые системы присоединяются к файловому дереву с помощью команды mount . Эта команда связывает каталог существующего файлового дерева, называемый точкой монтирования, корневым каталогом новой файловой системы. На время монтирования доступ к прежнему содержимому точки монтирования становится невозможным. Например, команда $ sudo mount /dev/sda4 /users монтирует на устройстве /dev/sda4 файловую систему /users . По окончании монтирования можно с помощью команды ls /users просмотреть содержимое файловой системы. Список смонтированных пользователями файловых систем хранится в файле /etc/fstab . Демонтируются файловые системы с помощью команды umount . Занятую файловую систему демонтировать невозможно.

    Организация файловой системы

    Корневая файловая система содержит корневой каталог и минимальный набор файлов и подкаталогов. Файл ядра находится в недрах корневой файловой системы, но не имеет стандартного имени или точного местоположения.

    Частью корневой файловой системы являются также каталог /etc для критических системных файлов и файлов конфигурации, каталоги /sbin и /bin - для важных ути­лит и иногда каталог /tmp - для временных файлов. Каталог /dev - это обычно ре­альный каталог, который включен в корневую файловую систему, но он (частично или полностью) может перекрываться другими файловыми системами, если ваша система виртуализировала поддержку своих устройств.

    Одни системы хранят совместно используемые библиотечные файлы и прочие важ­ные программы (например, препроцессор языка С) в каталоге /lib . Другие переместили эти элементы в каталог /usr/lib , оставив для каталога /lib роль символьной ссылки.

    Огромное значение имеют также каталоги /usr и /var . В первом хранится большин­ство стандартных программ и другие полезные компоненты, в частности интерактивная документация и библиотеки. Совсем не обязательно, чтобы каталог /usr был отдельной файловой системой, однако для удобства администрирования его, как правило, монти­руют именно так. Для того чтобы система могла загрузиться в многопользовательском режиме, необходимы оба каталога - /usr и /var . В каталоге /var содержатся буферные каталоги, журнальные файлы, учетная инфор­мация и прочие компоненты, специфичные для каждого компьютера. Поскольку при возникновении проблем журнальные файлы быстро разрастаются, рекомендуется помещать каталог /var в отдельную файловую систему. Домашние каталоги пользователей чаще всего хранятся в отдельной файловой си­стеме, которая обычно монтируется в корневом каталоге. Отдельные файловые системы можно использовать и для хранения больших информационных массивов, например библиотек исходных кодов программ и баз данных.

    В таблице приведены стандартные каталоги и их содержимое

    Каталог ОС Содержимое
    /bin Все Команды операционной системы ядра
    /boot LS Ядро и файлы для его загрузки
    /dev Все Файлы устройств: дисков, принтеров, псевдотерминалов и т.д.
    /etc Все Важные файлы запуска и конфигурации системы
    /home Все Стандартные домашние каталоги пользователей
    /kernel S Компоненты ядра
    /lib Все Библиотеки, совместно используемые библиотеки и компоненты компилятора языка C
    /media LS Точки монтирования файловых системы на съемных носителях
    /mnt LSA Временные точки монтирования
    /opt Все Программные пакеты необязательных приложения (которые пока не находят широкого применения)
    /proc LSA Информация о всех выполняющихся процессах
    /root LS Домашний каталог суперпользователя (часто просто /)
    /sbin Все Команды, необходимые для обеспечения минимальной работоспособности системы
    /stand H Автономные утилиты, средства диагностики и форматирования дисков
    /tmp Все Временные файлы, которые могут удаляться при перезагрузке
    /usr Все Иерархия дополнительных файлов и программ
    /usb/bin Все Содержимое
    /usr/include Все Файлы заголовков, предназначенные для компиляции C-программ
    /usr/lib Все Библиотеки и вспомогательные файлы для стандартных программ
    /usr/lib64 L 64-разрядные библиотеки для 64-разрядных дистрибутивов Linux
    /usr/local Все Локальные программы (программы, создаваемые или устанавливаемые локальными пользователями)
    /usr/sbin Все Менее важные файлы системного администрирования
    /usr/share Все Элементы, общие для различных систем
    /usr/share/man Все Страницы интерактивной документации
    /usr/src LSA Исходные коды нелокальных программных пакетов (не находит широкого применения)
    /usr/tmp Все Дополнительный каталог для временных файлов, которые могут сохраняться при перезагрузке
    /var Все Системные данные и конфигурационные файлы
    /var/adm Все Разное: журнальные файлы, записи об инсталляции системы, административные компоненты
    /var/log LSA Системные журнальные файлы
    /var/spool Все Буферные каталоги для принтеров, электронной почты и т.д.
    /var/tmp Все Каталог для временного хранения файлов

    Примечание: L = Linux, S = Solaris, H = HP-UX, A = AIX

    Типы файлов

    В большинстве реализаций файловых систем определены семь типов файлов:

    • Обычные файлы
    • Каталоги
    • Файлы байт-ориентированных (символьных) устройств
    • Файлы блочно-ориентированных (блочных) устройств
    • Локальные сокеты
    • Именованные каналы (реализующие принцип обслуживания FIFO – первым поступил первым обслужен)
    • Символьные ссылки

    Определить тип существующего файла можно с помощью команды ls -ld . Первый символ в строке вывода обозначает тип объекта. Пример:

    $ ls -ld /usr/include

    где d – означает каталог

    Возможные коды ля представления различных типов файлов представлены в таблице

    Обычные файлы – это просто последовательность байтов. Файловые системы не налагают ограничения на его структуру. Текстовые документы, файлы данных, программные файлы, библиотеки функций и многое другое – все это хранится в обычных файлах. К их содержимому возможен как последовательный, так и прямой доступ.

    Каталог хранит именованные ссылки и другие файлы. Он создается командой mkdir и удаляется (при условии, что он пуст) командой rmdir . Непустые каталоги можно удалять командой rm -r . Специальные ссылки ‘.’ и ‘..’ обозначают сам каталог и его родительский каталог соответственно. Такие ссылки нельзя удалить. Поскольку корневой каталог находится на вершине иерархии, ссылка ‘..’ эквивалентна ссылке ‘.’

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

    Жесткие ссылки создаются командой ln и удаляются командой rm . Синтаксис ко­манды ln легко запомнить, поскольку она является “зеркальным отражением” команды cp. Команда cp oldfile newfile создает копию файла oldfile с именем newfile, а команда ln newfile oldfile преобразует имя newfile в дополнительную ссылку на файл oldfile.

    Файлы устройств позволяют программам получать доступ к аппаратным средства и периферийному оборудованию системы. Ядро включает (или загружает) специальные программы (драйверы), которые во всех деталях “знают”, как взаимодействовать с каж­дым из имеющихся устройств, поэтому само ядро может оставаться относительно аб­страктным и независимым от оборудования.

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

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

    Файлы устройств характеризуются двумя номерами: старшим и младшим. Старший номер устройства позволяет ядру определить, к какому драйверу относится файл, а младший номер, как правило, идентифицирует конкретное физическое устройство. На­пример, старший номер устройства 4 в Linux соответствует драйверу последовательного порта. Таким образом, первый последовательный порт (/ dev/tty0) будет иметь стар­ший номер 4 и младший номер 0.

    Драйверы могут интерпретировать переданные им младшие номера устройств как угодно. Например, драйверы накопителей на магнитных лентах с помощью этого номе­ра определяют, необходимо ли перемотать ленту после закрытия файла устройства.

    В далеком прошлом /dev играл роль общего каталога, а файлы устройств, которые в нем хранились, создавались с помощью команды mknod и удалялись командой rm . Стандартизировать работу по созданию файлов устройств помогал сценарий с именем MAKEDEV

    К сожалению, эта “сырая” система плохо справлялась с безбрежным морем драйве­ров и типов устройств, которые появились в последние десятилетия. Кроме того, она способствовала возникновению разного рода потенциальных конфигурационных несты­ковок: например, файлы устройств ссылались на несуществующие устройства, устрой­ства оказывались недоступными, поскольку они не имели файлов устройств, и т.д.

    В наши дни в большинстве систем реализована некоторая форма автоматического управления файлами устройств, которая позволяет системе играть более активную роль в конфигурировании собственных файлов устройств. Например, в Solaris каталоги /dev и /devices полностью виртуализированы. В дистрибутивах Linux каталог /dev является стандартным, но управлением файлами внутри него занимается демон udevd. (Демон udevd создает и удаляет файлы устройств в ответ на изменения в оборудовании, о кото­рых сообщает ядро.)

    Установленные посредством сокетов соединения позволяют процессам взаимодей­ствовать, не подвергаясь влиянию других процессов. В системе UNIX поддерживается несколько видов сокетов, использование которых, как правило, предполагает наличие сети. Локальные сокеты доступны только на локальном компьютере, и обращение к ним осуществляется через специальные объекты файловой системы, а не через сетевые пор­ты. Иногда такие сокеты называют UNIX-сокетами.

    Несмотря на то что другие процессы распознают файлы сокетов как элементы ка­талога, только процессы, между которыми установлено соответствующее соединение, могут осуществлять над файлом сокета операции чтения и записи. В качестве примеров стандартных средств, использующих локальные сокеты, можно назвать системы X Win­dow и Syslog.

    Локальные сокеты создаются с помощью системного вызова socket . Когда с обеих сторон соединение закрыто, сокет можно удалить командой rm или с помощью систем­ного вызова unlink .

    Подобно локальным сокетам, именованные каналы обеспечивают взаимодействие двух процессов, выполняемых на одном компьютере. Такие каналы еще называют фай­лами FIFO (First In, First Out - “первым поступил, первым обслужен”). Они создаются командой mknod и удаляются командой rm .

    Как и в случае локальных сокетов, реальные экземпляры именованных каналов весь­ма немногочисленны и нечасто встречаются. Они редко требуют административного вмешательства.

    Именованные каналы и локальные сокеты имеют практически одинаковое назначе­ние, а их обоюдное существование сложилось исторически. Если бы системы UNIX и Linux разрабатывались в наши дни, то об этих средствах взаимодействия вопрос бы не стоял; сейчас их заменили бы сетевые сокеты.

    Работа с файлами в Linux

    Прежде всего рассмотрим основные команды для работы с файлами и папками. Для создания файла используется команда touch , для создания директории команда mkdir .

    user@ubuntu$ touch [имя файла] – создание файла

    user@ubuntu$ mkdir [имя директории] – создание директории

    Удаление файлов производится с помощью команды rm. Для директорий используется та же команда, только с ключом -r (рекурсивный).

    user@ubuntu$ rm [имя файла] – удаление файла

    user@ubuntu$ rm -r [имя директории] – удаление директории

    Посмотреть в какой директории находимся можно командной pwd . Содержимое директории просматривается командой ls, которую удобно вызывать с ключом -l для просмотра расширенной информации о каждом файле. Переход на каталог осуществляется командой cd .

    user@ubuntu$ pwd – текущая директория

    user@ubuntu$ ls -l [путь директории] – содержимое директории

    user@ubuntu$ cd [путь директории] – перейти к директории

    Операции копирования и перемещения осуществляются командами cp и mv соответственно. В Linux нет специальной команды для переименования файла, вместо этого используется mv.

    user@ubuntu$ cp [копируемый файл] [директория] – копирование файла

    user@ubuntu$ mv [перемещаемый файл] [директория] – перемещение файла

    user@ubuntu$ mv [текущее имя файла] [новое имя файла] – переименовать файл

    В этом примере мы создаем директорию test/, переходим в нее командой cd. В этой директории создаем два файла file и file2. Выводим содержимое каталога командой ls -l. Копируем файл file и присваиваем ему имя file3. Переименовываем файл file в new_file командой mv . В конце удаляем все файлы в каталог командой rm *. * – обозначает любое количество символов. Переходим на каталог выше командой cd .. и удаляем каталог /test.

    Права доступа в Linux

    Права доступа к файлу или каталогу можно задать с помощью команды chmod . Такое право есть лишь у владельца файла и пользователя root. В Linux каждому файлу соответствует набор прав доступа, представленный в виде 8-и битов режима. Они определяют, какие пользователи имеют права читать, редактировать и исполнять файл.

    Первым аргументом команды chmod является спецификация прав доступа. Второй и последующий аргументы - это имена файлов, права доступа к которым подлежат измене­нию. При использовании восьмеричной формы записи первая цифра относится к владель­цу, вторая - к группе, а третья - к другим пользователям. Если необходимо задать биты setuid/setgid или дополнительный бит, следует указывать не три, а четыре восьмерич­ные цифры: первая цифра в этом случае будет соответствовать трем специальным битам.

    В таблице показано восемь возможных комбинаций для каждого трехбитового набо­ра, где символы r, w и х обозначают право чтения, записи и выполнения соответственно.

    Например, команда chmod 711 myprog предоставляет владельцу все права, а осталь­ным пользователям - только право выполнения 9 .

    При использовании мнемонического синтаксиса вы объединяете множество испол­нителей (u - пользователь, g - группа или о - другой) с оператором (+ добавить, – удалить и = присвоить) и набором прав доступа. Более подробное описание мне­монического синтаксиса можно найти на man-странице команды chmod, но синтаксис всегда лучше изучать на примерах.

    Часто происходит такие ситуации, когда при запуске файла он ругается на недостаток прав. Решить такую проблему можно командой sudo chmod a+x file . Команда означает, что для файла file устанавливаются права на исполнение для всех пользователей.

    При наличии опции -R команда chmod будет рекурсивно обновлять права доступа ко всем файлам указанного каталога и его подкаталогов. Здесь удобнее всего придержи­ваться мнемонического синтаксиса, чтобы менялись только те биты, которые заданы явно. Например, команда
    chmod -R g+w mydir добавляет групповое право записи к каталогу mydir и его содержимому, не затрагивая остальные права.


    Подписывайтесь на нашу

    Linux (Линукс) – это операционная система, которая на сегодняшний день является фактически единственной альтернативной заменой ОС Windows от Microsoft. Свое начало Linux берет с 1991 года, когда молодой программист с Финляндии Линус Торвальдс взялся за работу над самой первой версией системы, которая и была названа в честь его имени. Рассвет популярности Linux начался с самого его возникновения. Это связано, в первую очередь, с тем, что ядро этой ОС, как и большинство программ, написанных под нее, обладают очень важными качествами.

    Ядро Ядро это операционная система низкого Машинно-зависимая часть традиционного уровня, обрабатывающая файлы, работающая с ядра ОС UNIX включает следующие компоненты: дисками, сетью и выполняющая другие необходимые операции. (пока это зависит от особенностей аппаратуры); Ядро операционной системы Linux представляет элементами собой монолитную микроядерной систему архитектуры. раскрутка и инициализация системы на низком уровне с прерываний; При компиляции ядра можно разрешить динамическую первичная обработка внутренних и внешних управление памятью (в той части, которая относится к загрузку и выгрузку очень многих компонентов ядра - особенностям аппаратной поддержки виртуальной так называемых модулей. В момент загрузки модуля памяти); его код загружается на уровне системы и связывается с остальной частью ядра. Внутри модуля могут использоваться функции. любые экспортируемые ядром переключение контекста процессов между режимами пользователя и ядра; связанные с особенностями целевой платформы части драйверов устройств.

    Файловая структура (система) /bin – основные двоичные пользовательские модули /boot – файлы статической загрузки /cdrom – исторически выбранная точка монтирования для CD-дисков /dev – файлы устройств /etc – конфигурационные файлы /home – домашние каталоги /lib – основные разделяемые библиотеки /lost+found – восстановленные файлы /media – подключаемые носители /proc – файлы ядра и процессов /root – домашний каталог пользователя root /srv – данные сервисных служб /tmp – временные файлы /usr – пользовательские двоичные файлы и данные, используемые только для чтения (показано на картинке)

    Интерфейс (графическая оболочка) – это программа, организующая взаимодействие пользователя с компьютером. Обеспечивает поддержку окон, меню, иконок, мыши и других известных элементов GUI - графического интерфейса пользователя. На основе X строятся более сложные графические среды; наиболее популярные из них - KDE и GNOME. GUI - это набор иконок, меню, диалогов, панелей, окон, и других графических элементов, позволяющих пользователям легко работать с компьютером и приложениями. KDE и Gnome - интегрированные рабочие среды. Пользователи работают с элементами интерфейса и программами.

    Утилиты Утилита (англ. utility или tool) - вспомогательная компьютерная программа в Встроенные в Linux программные утилиты и языки. составе g++ -GNU C++ компилятор; Perl - очень мощный скриптовый язык; g 77 - GNU FORTRAN компилятор; (параметрам, настройкам, установкам), либо делают процесс f 2 c - перекодировщик из FORTRAN в C; изменения параметров (автоматизируют его). Fort 77 - компилятор FORTRAN. Выполняет f 2 c, а затем общего программного обеспечения для выполнения специализированных типовых задач. Утилиты предоставляют доступ к возможностям Виды утилит по связи с ОС использует gcc или g++; Независимые утилиты, не требующие для своей работы операционной системы, Grep - поиск фрагмента текста в файлах, удовлетворяющего набранной маске. Маска определяется с Системные утилиты, входящие в поставку ОС и требующие её помощью стандартной системы обозначений, называемой наличия "регулярные выражения «; Виды утилит по функциям Диспетчеры файлов; Архиваторы (с возможным сжатием данных); Просмотрщики; Деинсталлятор - обеспечения [; программа для Tr - translation utility (другими словами - замена букв в текстовом файле); Gawk - GNU awk (используется для обработки форматированных текстовых файлов); удаления программного sed - утилита для обработки текстовых файлов;

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

    Одним из наиболее важных компонентов в ОС Linux является файловая система. В данном разделе будут рассмотрены понятие файловой системы и ее предназначение; иерархия файловой системы ОС Linux; типы файлов ОС Linux. Остальные вопросы, касающиеся администрирования файловой системы, более подробно будут рассмотрены в модуле 3.

    Предназначение файловой системы

    В ОС Linux, как и в любой другой ОС семейства UNIX, любой объект является файлом, хранящимся на файловой системе. Файловая система представляет собой некоторое устройство (например, жесткий диск), отформатированное для хранения файлов. Файловые системы могут находиться на жестких дисках, гибких дисках, CD-ROM или других носителях, которые позволяют осуществлять произвольный или последовательный доступ к данным.

    Условно файловую систему ОС Linux можно разделить на следующие компоненты.

    Пространство имен - методы именования объектов файловой системы и их иерархическая организация.

    Программный интерфейс приложения (API) - набор системных вызовов и библиотек, предназначенных для управления объектами файловой системы.

    Модель безопасности - содержит в себе общую схему защиты, разделения прав доступа к объектам и совместного использования объектов.

    Техническая реализация - программный код, связывающий логические модели файловой системы с аппаратным обеспечением.

    Основными задачами файловой системы являются:

    упорядочивание хранимых данных;

    простой и быстрый доступ к хранимым данным;

    обеспечение целостности хранимых данных.

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

    Иерархия файловой системы

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

    Например, большинство конфигурационных файлов располагается в каталоге /etc, а файлы журналов различных сервисов располагаются в каталоге /var/log.

    Описание каталогов файловой системы ОС Linux

    Каталоги /bin, /usr/bin, /usr/locl/bin, /sbin, /usr/sbin и /usr/local/sbin содержат установленные в системе команды. При работе в системе под обычным пользователем, вам будут доступны только команды каталогов /bin, /usr/bin и /usr/locl/bin, так как в стандарте FHS определено, что в каталогах sbin должны содержаться только административные команды.


    Рисунок 1.2.Структура каталогов ОС Linux

    Основным каталогом файловой системы ОС Linux является корневой каталог /. Ниже корневого каталога располагаются все остальные каталоги, созданные на локальной дисковой подсистеме или подмонтированные с внешних устройств. Процедура монтирования файловой системы означает связывание каталога существующей файловой системы, называемого точкой монтирования, с корневым каталогом новой файловой системы.

    Монтирование файловой системы к точке монтирования осуществляется при помощи команды mount. В следующем листинге приведен пример монтирования DVD привода, содержащего дистрибутив ОС RedHatEnterpriseLinux 5.

    # mount /dev/hdc /mnt/

    mount: block device /dev/hdc is write-protected, mounting read-only

    В результате выполнения команды mount система вывела информацию о том, что блочное устройство (в данном случае DVD привод) было смонтировано в режиме чтения.

    Список смонтированных файловых систем хранится в файле /etc/fstab. Благодаря этому возможны автоматическая проверка целостности файловой системы при помощи команды fsck и монтирование файловых систем на этапе начальной загрузки, а также выполнение сокращенных команд наподобие mount /var/spool. Информация, содержащаяся в этом файле, отражает расположения файловых систем на диске. Подробнее файл /etc/fstab будет рассмотрен в модуле 3.

    Размонтирование файловых систем осуществляется командой umount. «Заблокированную» файловую систему размонтировать невозможно. В ней не должно быть ни открытых файлов, ни текущих каталогов выполняющихся процессов. Если размонтируемая файловая система содержит исполняемые программы, они не должны быть запущены. В следующем листинге приводится пример размонтирования ранее подмонтированной файловой системы в каталоге /mnt.

    # umount /mnt # Is -1 /mnt total 0

    Для того, чтобы узнать какие устройства подмонтированы к системе в данный момент необходимо выполнить команду mount без параметров. В следующем листинге приведен пример определения подмонтированных устройств.

    # mount /dev/sda2 on / type ext3 (rw)

    proc on /ргос type proc (rw)

    sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) /dev/hdc on /mnt type iso9660 (ro)

    Как видим, в выводе команды mount последовательно отображается подмонтированное устройство, точка монтирования, тип файловой системы и дополнительные опции монтирования.

    Типы файлов

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

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

    регулярные файлы (обычные файлы);

    каталоги;

    именованные каналы;

    файлы блочных устройств;

    файлы символьных устройств.

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

    /dev/hdc. # Is -Id /dev/hdc

    Регулярные файлы

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

    Каталоги

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

    В ОС Linux принято различать символические и жесткие ссылки, каждая из которых имеет особенное значение.

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

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

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

    Сокеты

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

    Несмотря на то, что другие процессы распознают файлы сокетов как элементы каталога, только процессы, между которыми установлено соответствующее соединение, могут осуществлять чтение и запись файлов сокета. С локальными сокетами работают различные сервисы ОС Linux - CUPS, XWindow и Syslog.

    Именованные каналы ( FIFO)

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

    Файлы блочных и символьных устройств

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

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

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