4.4.1. Файлы физических устройств
4.4.1. Файлы физических устройств
Как уже говорилось, с точки зрения ОС Linux, все подключаемые к компьютеру устройства (жесткие и съемные диски, терминал, принтер, модем и т. д.), представляются файлами. Если, например, надо вывести на экран какую-то информацию, то система как бы производит запись в файл /dev/tty01.
Физические устройства бывают двух типов: символьными (или байт-ориентированными) и блочными (или блок-ориентированными). Различие между ними состоит в том, как производится считывание и запись информации в эти устройства. Взаимодействие с символьными устройствами производится посимвольно, в режиме потока байтов. К таким устройствам относятся, например, терминалы. На блок-ориентированных устройствах информация записывается (и, соответственно, считывается) блоками. Примером устройств этого типа являются жесткие диски. На диск невозможно записать или считать с него один байт: обмен с диском производится только блоками.
Взаимодействием с физическими устройствами в Linux управляют драйверы устройств, которые либо встроены в ядро, либо подключаются к нему как отдельные модули. Для взаимодействия с остальными частями операционной системы каждый драйвер образует коммуникационный интерфейс, который выглядит как файл. Большинство таких файлов для различных устройств как бы "заготовлены заранее" и располагаются в каталоге /dev.
Если вы заглянете в каталог /dev, то увидите там огромное количество файлов физических устройств. ("Заглянуть в каталог" означает выполнить последовательно две команды cd и ls.) В табл. 4.2 приведена небольшая справка по именам наиболее часто используемых специальных файлов.
Таблица 4.2. Основные специальные файлы.
Имя Значение /dev/console Системная консоль, т. е. монитор и клавиатура, физически подключенные к компьютеру /dev/hd Жесткие диски с IDE-интерфейсом. Устройство /dev/hda1 соответствует первому разделу на первом жестком диске (/dev/hda), т. е. на диске, подключенном как Primary Master /dev/sd Жесткие диски с SCSI-интерфейсом /dev/fd Файлы дисководов для гибких дисков. Первому дисководу соответствует /dev/fd0, второму /dev/fd1 /dev/tty Файлы поддержки пользовательских консолей. Название сохранилось с тех пор, когда к системе UNIX подключались телетайпы в качестве терминалов. В Linux эти файлы устройств обеспечивают работу виртуальных консолей (переключаться между которыми можно с помощью ‹Alt›+‹F1› - ‹Alt›+‹F6›) /dev/pty Файлы поддержки псевдо-терминалов. Применяются для удаленных рабочих сессий с использованием telnet /dev/ttS Файлы, обеспечивающие работу с последовательными портами. /dev/ttS0 соответствует COM1 в MS-DOS, /dev/ttS1 - COM2. Если ваша мышь подключается через последовательный порт, то /dev/mouse является символической ссылкой на соответствующий /dev/ttSN /dev/cua Специальные устройства для работы с модемами /dev/null Это устройство - просто черная дыра. Все, что записывается в /dev/null, навсегда потеряно. На это устройство можно перенаправить вывод ненужных сообщений. Если /dev/null используется как устройство ввода, то оно ведет себя как файл нулевой длиныКаждому типу устройств в системе может соответствовать несколько файлов устройств. Поэтому файлы устройств характеризуются двумя номерами: старшим и младшим. Старший номер устройства говорит ядру о том, к какому драйверу относится данный файл, а младший номер показывает, к какому именно устройству данного типа следует обращаться.
Для файлов устройств команда ls -l вместо размера файла выдает старший и младший номера данного устройства.