Организация UNIX-систем и ОС Solaris

Файлы устройств Solaris


Каждому физическому устройству в Solaris обязательно соответствует файл устройства. Файл устройства по сути - это указатель на область кода ядра, в которой находится драйвер устройства. Файлы устройств располагаются в каталоге /dev и его подкаталогах. Такое расположение является стандартным для всех систем UNIX. Однако на самом деле в Solaris все файлы в каталоге /dev являются символическими ссылками на "настоящие" файлы устройств, которые располагаются в подкаталогах каталога /devices. Там эти файлы сгруппированы по отношению к своему месту в конфигурации компьютера. Подробнее это рассматривается ниже в разделе "Каталог /devices". О символических ссылках говорится также в лекции 5 раздела "Ссылки".

Файлы устройств имеют специальные типы: файл символьного устройства и файл блочного устройства.

Вывод программы ls иллюстрирует это:

ls -l /devices/pseudo/ ... crw-rw-rw- 1 root sys 26, 0 Мар 17 10:56 ptsl@0:ttyp0 crw-rw-rw- 1 root sys 26, 1 Мар 17 10:56 ptsl@0:ttyp1 crw-rw-rw- 1 root sys 26, 2 Мар 17 10:56 ptsl@0:ttyp2 crw-rw-rw- 1 root sys 26, 3 Мар 17 10:56 ptsl@0:ttyp3 ... ls -l /devices/pci@0,0/pci-ide@7,1/ide@0 ... brw-r----- 1 root sys 102, 0 Мар 17 10:56 cmdk@0,0:a crw-r----- 1 root sys 102, 0 Мар 17 10:56 cmdk@0,0:a,raw brw-r----- 1 root sys 102, 1 Мар 24 21:19 cmdk@0,0:b crw-r----- 1 root sys 102, 1 Мар 17 10:56 cmdk@0,0:b,raw ...

Файл устройства является псевдофайлом, он не размещен на диске, о нем есть только запись, которая используется при доступе к устройству. Первое число, которое стоит в поле длины файла в выводе программы ls для файлов устройств, - это major-номер, а второе, после запятой - minor-номер. Первый из них означает номер типа устройств и одновременно - позицию в ядре, в которой следует искать драйвер устройства. Второй - номер экземпляра устройства данного типа. Поэтому файлы однотипных устройств в вышеприведенном выводе ls имеют одинаковые major-номера.

Устройство каждого типа имеет свой major-номер. Major-номера назначаются автоматически программой add_drv. Соответствие имени драйвера и major-номера определяется в файле /etc/name_to_major.

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

Логические имена - это имена файлов устройств, которые хранятся в /dev.

Физические имена - это имена файлов устройств, хранящихся в /devices.

Экземплярные имена - это укороченные физические имена устройств, которые ядро назначает устройствам.

Ниже рассмотрен пример назначения всех перечисленных типов имен.



Содержание раздела