INTRO(7)
НАЗВАНИЕ
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{логический_диск}
где
- r Означает, что устройство является бесструктурным.
- контроллер Префикс, задающий имя контроллера, например hd.
- том Номер тома, подсоединенного к контроллеру.
- логический_диск Номер логического диска на томе; должен лежать в
диапазоне от 0 до 7.
Прочие устройства
/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).