Материал: Операционная система Unix

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Корневой каталог

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

/bin

В этом каталоге находятся часто употребляемые команды и утилиты системы общего пользования. Сюда входят все базовые команды, доступные даже в том случае, если была вмонтирована только корневая файловая система. Примерами таких утилит являются: ls, cp, sh и т.п.

/boot

Каталог содержит всё необходимое для процесса загрузки операционной системы: программу-загрузчик, образ ядра операционной системы и т.п.

/dev

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

/etc

В этом каталоге находятся системные конфигурационные файлы. В качестве примеров можно привести файлы /etc/fstab, содержащий список монтируемых файловых систем, и /etc/resolv. conf, который задаёт правила составления локальных DNS-запросов. Среди наиболее важных файлов - скрипты инициализации и останова системы. В системах, наследующих особенности UNIX System V, для них отведены каталоги с /etc/rc0. d по /etc/rc6. d и общий для всех файл описания - /etc/inittab.

/home (необязательно)

Каталог содержит домашние каталоги пользователей. Его наличие в корневом каталоге не обязательно, а содержимое зависит от особенностей конкретной UNIX-подобной операционной системы.

/lib

Каталог для статических и динамических библиотек, необходимых для запуска программ, находящихся в каталогах /bin и /sbin.

/media

Стандартный каталог для временного монтирования файловых систем - например, гибких и флэш-дисков, компакт-дисков и т.п.

/opt

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

/root (необязательно)

Домашний каталог суперпользователя. Его наличие в корневом каталоге не обязательно.

/sbin

В этом каталоге находятся команды и утилиты для системного администратора. Примерами таких команд являются: route, halt, init и т.п. Для аналогичных целей применяются каталоги /usr/sbin и /usr/local/sbin.

/usr

Этот каталог повторяет структуру корневого каталога - содержит каталоги /usr/bin, /usr/lib, /usr/sbin, служащие для аналогичных целей.

Каталог /usr/include содержит заголовочные файлы языка C для всевозможных библиотек, расположенных в системе.

Каталог /usr/local - ещё один уровень, в котором можно полностью воспроизвести структуру данных, содержащуюся в корневом каталоге. Обычно этот каталог служит для размещения программ, установленных администратором в дополнение к стандартной поставке операционной системы.

Каталог /usr/share хранит неизменяющиеся данные для установленных программ. Особый интерес представляет каталог /usr/share/doc, в который добавляется документация ко всем установленным программам.

/var, /tmp

Используются для хранения временных данных системных (/var) и пользовательских (/tmp) процессов. Каталог /var обычно содержит часто изменяемые системные файлы, например в каталоге /var/log размещаются системные журналы.

Устройства и драйверы


Как говорилось в прошлой лекции, процессор взаимодействует с внешними устройствами через шины. Любое устройство, подключенное к системной шине (или к шине PCI, или USB), обладает определённым интерфейсом (заранее известными идентификаторами, номерами портов ввода и вывода и т.п.), через который производится обмен данными и сообщениями с устройством. Таким образом, в первую очередь операционная система должна иметь модули, осуществляющее управление шинами, прерываниями, DMA и т.п. Эти модули обычно загружаются при старте системы.

Сами внешние устройства по типу доступа к ним могут быть классифицированы несколькими способами:

·              символьные - чтение и запись данных производится побайтно (например, COM-порт);

·              блочные - чтение и запись данных производится блоками (например, секторами в жестком диске);

·              последовательного доступа - читать и записывать данные можно только последовательно (например, коммуникационные каналы);

·              произвольного доступа - возможно обращение к данным по индексу (диски);

·              синхронные - передают данные только по команде (например, принтер);

·              асинхронные - могут передавать данные без предварительного указания (например, сетевая карта).

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

В операционной системе UNIX большинство внешних устройств доступно пользовательским программам в виде специальных файлов. Эти файлы могут быть, соответственно, двух типов - символьные и блочные. Традиционно, все файлы устройств располагаются в каталоге /dev и имеют имена, соответствующие назначению устройства. Например, в операционной системе Linux устройства терминала обозначаются как /dev/tty0, /dev/tty2 и т.д. с увеличением порядкового номера, жёсткий диск - /dev/sda, а порт PS/2 - /dev/psaux. Названия однотипных устройств обычно отличаются целым числом. Программы могут открывать, читать и записывать данные в файлы устройств как в обычные файлы, при этом операционная система транслирует пользовательские запросы драйверу соответствующего устройства.

Рисунок 8. Взаимодействие с устройством через файл

Таким образом, файл устройства является одним из интерфейсов взаимодействия процессов с устройствами. Каждый файл устройства имеет два номера - старший и младший. По этим номерам операционная система определяет, какой драйвер должен использоваться при обращении к этому файлу.

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

операционная система unix драйвер

Помимо файлов, соответствующих внешним устройствам, в UNIX есть несколько стандартных файлов виртуальных устройств. Эти файлы могут передавать и принимать от пользовательских процессов специальные данные, например, из символьного устройства /dev/zero можно прочитать только нули, сколько бы процесс не читал данные из этого файла. Вот список наиболее распространённых виртуальных устройств:

/dev/console

устройство соответствует активной в данный момент терминальной линии (виртуальной консоли);

/dev/null

"чёрная дыра" - любая информация, записанная в этот файл, пропадает безвозвратно, обычно используется для поглощения ненужного вывода программ;

/dev/random и /dev/urandom

устройства, генерирующие соответственно случайные и псевдослучайные данные;

/dev/stdin, /dev/stdout и /dev/stderr

устройства, соответствующие трём стандартным потокам ввода-вывода для каждого из процессов системы;

/dev/zero

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

Резюме


Основными принципами операционной системы UNIX являются многозадачность и стандартизация. Пользователю приходиться работать с двумя основными объектами операционной системы: файлами и процессами.

Операционную систему UNIX можно представить в виде трёх уровней: монолитное ядро, системные утилиты и демоны, пользовательские программы. Первые два работают на уровне привилегий системы, третий - на уровне пользователя.

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

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

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

Дополнительные материалы


1.      Бах Дж.М. Архитектура операционной системы UNIX. - <http://www.opennet.ru/docs/RUS/unix/>

.        Курячий Г.В. Операционная система UNIX. - М.: Интуит. Ру, 2004. - 292 с.: ил.

4.      Стандарт на файловую систему. - <http://www.pathname.com/fhs/>

.        Максвелл С. Ядро Linux в комментариях. - К.: Издательство "Диа-Софт", 2000. - 488 с.: ил.