мета-данные страницы
  •  

Это старая версия документа!


Глава 3: Устройства

3.1 Файлы устройств

linux использует тот же дизайн для файлов устройств, что и другие системы Unix: помещает спеицальные файлы устрйоств в /dev. Такие файлы называются узлами устройств. Хотя не все возможности устройств доступны через файловый ввод-вывод.

Первый символ в выводе ls -l /dev - символ типа файла. Если это символы b, c, p или s, то файл является устройством. Эти буквы обозначают block (блочное устройство), character (символьное устройство), pipe (конвейер) и socket (сокет) соответственно.

  • Блочное устройство. Программы получают доступ к данным с блочного устройства фиксированными частями. Устройство sda1 в приведенном ранее примере — это дисковое устройство, тип блочного устройства. Диски можно легко разбить на блоки данных. Поскольку общий размер блочного устройства фиксирован и его легко индексировать, процессы имеют быстрый произвольный доступ к любому блоку в устройстве с помощью ядра.
  • Символьное устройство. Символьные устройства работают с потоками данных. Вы можете считывать символы с символьных устройств или записывать их на символьные устройства, как было показано ранее на устройстве /dev/null. Символьные устройства не имеют размера: когда вы читаете из одного из них или записываете в него, ядро обычно выполняет на нем операцию чтения или записи. Принтеры, непосредственно подключенные к компьютеру, представляются символьными устройствами. Важно отметить, что во время взаимодействия с символьным устройством ядро не может создавать резервные копии и повторно выполнять проверку после передачи данных устройству или процессу.
  • Конвейер. Именованный конвейер по структуре такой же, как символьные устройства, но с другим процессом на другом конце потока ввода-вывода вместо драйвера ядра.
  • Сокет. Сокеты — это специальные интерфейсы, которые используются для межпроцессной связи. Они часто находятся за пределами каталога /dev. Файлы сокетов представляют собой доменные сокеты Unix (подробнее о них вы узнаете в главе 10).