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).