НАЗВАНИЕ
intro - введение в описание специальных файлов
ОПИСАНИЕ
В этом разделе описываются различные специальные файлы,
соответствующие периферийным устройствам, а также драйверы устройств. Описываются также драйверы псевдоустройств [см. intro(2)], модули и средства управления
псевдоустройствами [см. ioctl(2)].
Названия статей, относящихся к оборудованию, обычно образуются по названию соответствующего оборудования, а не по именам специальных файлов. Там, где это необходимо, обсуждаются характеристики оборудования и соответствующих драйверов ОС UNIX.
Каждое устройство идентифицируется специальным файлом, находящимся в каталоге /dev. Этот специальный файл наделен старшим и младшим номерами устройства. Старший номер идентифицирует драйвер устройства и, следовательно, соответствующий контроллер. Младший номер идентифицирует устройство, привод, канал или что-либо еще, присоединенное к контроллеру. В некоторых случаях, например для диска, младший номер есть номер логического диска (раздела физического диска, или тома). Ядро ОС UNIX распознает два различных типа устройств: блочные и символьные.
Блочные устройства
Это устройства типа магнитных дисков, использующие имеющийся в ядре механизм буферизации.
/dev/dsk/hd* Диск. /dev/dsk/fd* Дискета.
Символьные устройства
/dev/console Системная консоль. /dev/tty* Терминалы. /dev/mt Магнитофон.
Бесструктурные устройства
Специальные символьные устройства, обеспечивающие прямой доступ к устройствам типа магнитных дисков, минуя
механизм буферизации, называются бесструктурными. Нельзя по отношению к одному устройству одновременно выполнять блочный и бесструктурный ввод/вывод. Перед использованием бесструктурного ввода/вывода следует выполнить
команду umount [см. mount(1M)] или крайней мере
sync(1M).
/dev/rdsk/hd* Бесструктурный ввод/вывод на диск. /dev/rdsk/fd* Бесструктурный ввод/вывод на дискету. /dev/rmt Магнитофон.
В общем случае имена специальных файлов, соответствующих дисковым устройствам, имеют следующий формат:
/dev/[r]dsk/{контроллер}{том}s{логический_диск}где
Прочие устройства
/dev/tty Виртуальный терминал; всегда связан с физическим терминалом пользователя. /dev/mem Физическая память. /dev/kmem Виртуальная память ядра ОС. /dev/error Устройство фиксации ошибок системы. /dev/null Пустое устройство: при вводе всегда возвращает признак конца файла, при выводе поглощает все данные. /dev/prf Устройство, используемое системой профилирования [см. profiler(1M)]. /dev/sxt/* Виртуальные терминалы [для shl(1)].
Диски, тома, младшие номера
Томом называется физически существующий диск. Размер
тома в блоках равен:
число_цилиндров * число_головок * блоков_на_дорожке
Размер типичного тома равен 3160*5*19=300200. Том делится на разделы - логические диски. Рассмотрим следующий простой пример деления тома на разделы A, B, и C. Совокупность A+B+C составляет полный том.
|--------A--------|----B----|--------C--------| A Корневая файловая система. B Область подкачки. C Дополнительная файловая система или место для быстрого сохранения информации.
Старший и младший номера устройства хранятся в описателе соответствующего специального файла; их можно узнать с помощью команды ls(1). Пример:
ls -log /dev/dsk/hd0s* crw-rw-r-- 1 7, 0 Jan 27 08:30 /dev/rdsk/hd0s0 crw-rw-r-- 1 7, 1 Feb 1 09:01 /dev/rdsk/hd0s1 crw-rw-r-- 1 7, 2 Dec 1 08:42 /dev/rdsk/hd0s2 crw-rw-r-- 1 7, 7 Jan 27 08:30 /dev/rdsk/hd0s7
Старший и младший номера перечисленных символьных (бесструктурных) устройств выведены перед датой.
Старший номер используется как указатель в таблице старших номеров устройств для получения доступа к драйверу. Младший номер устройства передается драйверу для выбора тома и раздела на томе: 5 старших бит младшего номера определяют том, а 3 младших - раздел, или логический диск. Логические диски не обязаны быть непересекающимися: один логический диск может содержать несколько других. Пример:
|--------0--------| |----2----| |--------1--------| |----------------------7----------------------|
Устройство с младшим номером 7 должно соответствовать полному тому. Оно начинается с блока 0 и имеет длину A+B+C.
Устройство с младшим номером 0 обычно используется как основная файловая система, начинающаяся с блока 0 и имеющая длину A.
Устройство с младшим номером 2 может использоваться как область подкачки, начинающаяся после области A и имеющая длину B.
Устройство с младшим номером 1 может использоваться как область для быстрого сохранения файлов или, как вторая файловая система, которая может быть смонтирована. Эта область начинается с блока A+B и имеет длину C.
Специальные файлы, соответствующие дискам, нужно создавать в каталоге /dev/dsk или /dev/rdsk, с помощью команды mknod(1M).
Младшие номера, кроме последнего, можно переопределить, чтобы изменить разбиение на логические диски. Во включаемом файле <sys/io.h> хранится перечень известных системе дисковых устройств и разбиение томов. Используемые структуры описаны во включаемом файле <sys/disk.h> и применяются всеми драйверами дисков и программами обслуживания. Текущая конфигурация описана в файле /usr/src/uts/dfile.
СМ. ТАКЖЕ
io(4).