Энциклопедия системного администратора Linux

         

Два типа устройств


В системе UNIX, а следовательно и Linux, существует два типа устройств: блочные устройства с прямым доступом (такие как диски) и символьные устройства (такие как ленточные накопители и последовательные порты), некоторые из них могут быть последовательными, а некоторые с прямым доступом. Каждое поддерживаемое устройство представляется в файловой системе файлом устройства. При выполнении операций чтения или записи с подобным файлом, происходит обмен данными между устройством, на которое указывает этот файл. Такой способ доступа к устройствам позволяет не использовать специальные программы (а также специальные методы програмирования, такие как работа с прерываниями). Например, для распечатки файла на принтере, используется следующая команда: $ cat filename > /dev/lp1 $ и содержимое файла будет напечатано (правда, файл может быть в формате, непригодном для непосредственной печати). Однако, для распечатки файлов используется специальная программа (обычно lpr), которая контролирует поток поступающих файлов во избежание возникновения конфликтных ситуаций, например, при попытке распечатать на одном принтере одновpеменно несколько разных файлов. По мере распечатки, новые файлы поступают автоматически. По подобной схеме работает большинство устройств. Однако с файлами устройств проблемы возникают очень редко. Данная программа передает на принтер один файл в единицу времени, что позволяет избежать одновременной посылки на печать нескольких файлов, и автоматически посылает следующий файл, как только принтер освободится.

Так как устройства отображаются как файлы в файловой системе (в каталоге /dev), несложно обнаружить с помощью команды ls какие существуют файлы устройств. После выполнения команды ls -l на экран выводится список файлов, причем в первой колонке содержится тип файла и права доступа к нему. Например, для просмотра файла, соответствующего последовательному порту, используется следующая команда: $ ls -l /dev/cua0 crw-rw-rw- 1 root uucp 5, 64 Nov 30 1999 /dev/cua0 $ Первый символ в первой колонке (crw-rw-rw-), т.е. 'c', показывает тип файла, в данном случае символьное устройство. Для обычных файлов используется символ '-', для каталогов 'd', для блочных устройств 'b' (см. pуководство к команде ls для более подробной информации).

Наличие большого количества файлов устройств совсем не означает, что эти устройства на самом деле установлены. Наличие файла /dev/sda ни о чем не говорит и совсем не означает, что в компьютере установлен жесткий диск SCSI. Это предусмотрено для облегчения установки программ и нового оборудования (нет необходимости искать нужные параметры и создавать файлы для новых устройств).



Содержание раздела