Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Акуленок_часть1.doc
Скачиваний:
38
Добавлен:
13.11.2019
Размер:
1.43 Mб
Скачать

4.6. Дескриптор специального файла

В UNIX специальные файлы служат для связи между периферийными устройствами ввода/вывода и операционной системой. Существуют два типа интерфейса с периферийными устройствами: блочный и символьный. При использовании интерфейса первого типа данные передаются во внешнюю память (обычно это диск или лента) блоками по 512 байт.

Интерфейс второго типа применяется при посимвольной передаче данных для обмена с такими устройствами, как терминалы, печать, принтеры и др. Помимо блочного диски и ленты чаще всего имеют и символьный интерфейс, предназначенный для многих служебных программ операционной системы.

Специальные файлы, как правило, создаются при генерации системы или при изменении конфигурации ЭВМ и хранятся в каталоге /dev.

Специальный файл не имеет размера, поскольку не является областью памяти, а представляет собой связь с устройством ввода/вывода. Вместо указания размера для него печатается номер типа устройства и собственно номер устройства среди однотипных.

Дескрипторы специальных файлов отличаются от рассмотренных выше. Они содержат информацию о классах, типах и номерах устройств.

Классы устройств, которые делятся на :

  • неструктурированные (символьные) – (character special);

  • структурированные (блочные) – (raw device).

Некоторые устройства ввода/вывода работают посимвольно, другие – поблочно. Типичным примером устройства с посимвольным обменом может служить терминал (файл /dev/tty): ЭВМ осуществляет обмен данными с терминалом в побайтовом режиме. Специальные файлы, обеспечивающие связь с устройствами такого типа, называют байт–ориентированными:

  • принтер (файл /dev/lp);

  • клавиатура.

Для блочных устройств характерен обмен большими блоками информации, чтобы убыстрить обмен и сделать его более эффективным. Так работают все дисковые устройства, которые называются блочными (их еще называют устройствами прямого доступа – это съемные и несъемные магнитные диски), а специальные файлы, обслуживающие их, – блок–ориентированными.

Специальные файлы не содержат какой–либо символьной информации, поэтому в листинге каталога их длина не указывается.

Типы устройств.

Для специальных файлов в поле длины помещаются главный (старший – major number) и дополнительные (младшие – minor number) номера соответствующего устройства. Первый из них определяет тип устройства 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 и одновременно – позицию в ядре, в которой следует искать драйвер устройства. Второй – идентифицирует его среди однотипных. Например, UNIX может одновременно обслуживать несколько десятков, а то даже и сотен терминалов. Каждый из них должен иметь свой собственный специальный файл, поэтому наличие главного и дополнительного номеров позволяет установить требуемое соответствие между устройством и таким файлом.

Старший номер идентифицирует драйвер устройства и, следовательно, соответствующий контроллер. Он определяет при этом и метод доступа (блочный или символьный). Иначе, в системе каждому драйверу ассоциирован старший номер, который используется ядром для локализации программ драйвера в ответ на запрос I/O.

Младший номер идентифицирует устройство, привод или канал – то, что подсоединяется к контроллеру. Иначе, младший номер используется драйвером для получения доступа к конкретному устройству и для получения информации, которая необходима для управления данными в отношении этого устройства.

Некоторые драйвера устройств используют младший номер устройства нетрадиционным способом. Например, драйверы накопителей на магнитных лентах часто используют младший номер устройства при выборе плотности записи и для определения необходимости перемотки ленты после закрытия файла устройств.

Таким образом, специальные файлы являются средством унификации ввода/вывода в UNIX.

Названия специальных файлов устройств в большой степени зависят от конкретной версии UNIX. Тем не менее, в этих названиях присутствует общая логика, позволяющая даже в незнакомой системе определить, какие файлы отвечают за конкретные устройства. Например, имена файлов дос­тупа к дисковым устройствам обычно содержат указание на тип диска, номер контроллера, логический номер устройства, раздел диска и т. д. По названию также легко определить, какой вид доступа предоставляет дан­ный интерфейс (блочный или символьный).

В качестве примера рассмотрим специальный файл устройства для доступа к разделу диска в операционной системе Solaris:

/dev/dsk/cOt4dOs2

Данный файл предоставляет блочный интерфейс, а соответствующий ему символьный (или необработанный) файл имеет имя:

/dev/rdsk/cOt4dOs2

Файлы доступа к дисковым устройствам располагаются в специальных подкаталогах – /dev/dsk (для блочных устройств) и /dev/rdsk (для сим­вольных устройств). Такая структура хранения специальных файлов харак­терна для систем UNIX версии System V.

Имя файла, характерное для систем версии SVR4, можно представить в общем виде:

cktldmsn

где k – номер контроллера, l – номер устройства (для устройств SCSI это идентификатор устройства ID), m – номер раздела, а n – логический но­мер устройства (LUN) SCSI.

Таким образом, файл устройства /dev/rdsk/cOt4dOs2 обеспечивает доступ к первому разделу (нумерация разделов начинается с 0) диска с ID=4, LUN=2 первого контроллера.

Такой формат имен файлов в версии SVR4 применяется для всех дисковых устройств и накопителей на магнитной ленте.