Файлы устройств в Solaris
Каждому физическому устройству в Solaris обязательно соответствует файл устройства. Файл устройства по сути – это указатель на область кода ядра, в которой находится драйвер устройства. Файлы устройств располагаются в каталоге /dev и его подкаталогах. Такое расположение является стандартным для всех систем UNIX. Однако на самом деле в Solaris все файлы в каталоге /dev являются символьными ссылками на "настоящие" файлы устройств, которые располагаются в подкаталогах каталога /devices. Там эти файлы сгруппированы по отношению к своему месту в конфигурации компьютера.
Файлы устройств имеют специальные типы:
файл символьного устройства;
файл блочного устройства.
Вывод программы 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.
Экземплярные имена – это укороченные физические имена устройств, которые ядро назначает устройствам.
Ниже рассмотрен пример назначения всех перечисленных типов имен.
Файлы устройств для разделов дисков в Solaris
Мы предполагаем, что читатель знаком с физическим устройством жестких дисков, поэтому здесь не объясняются термины "головка", "дорожка", "цилиндр", "сектор" и другие. Все они являются общими для описания любых жестких дисков в любых компьютерах, независимо от архитектуры или используемой операционной системы.
Жесткий диск принято делить на разделы (в Solaris их называют slices). Раздел – это группа расположенных рядом цилиндров. Смысл разделения диска на разделы состоит в том, чтобы:
минимизировать расстояние, которое потребуется головке диска для считывания фрагментов одного файла;
разделить данные разных типов, чтобы обезопасить системные данные от возможной порчи пользовательскими программами;
зарезервировать под системные нужды достаточное пространство на диске так, чтобы несистемные файлы не могли его занять.