Это не официальный сайт wikipedia.org 01.01.2023

Специальный файл устройства — Википедия

Специальный файл устройства

Специальный файл устройства, или просто файл устройства (англ. special device file) — это один из типов файлов в UNIX-подобной операционной системе[1]. Специальные файлы устройств содержат данные, необходимые операционной системе для взаимодействия с физическими устройствами, такими как диски и дисководы, принтеры и факсы и т. п. Фактически, специальные файлы устройств являются указателями на драйверы устройств, и когда процесс обращается к файлу устройств, он по сути работает с драйвером этого устройства[2].

Каталог /dev с файлами устройств
Значок блочных файлов устройств
Значок символьных файлов устройств

Характеристика файлов устройствПравить

Поскольку в операционной системе есть разные типы устройств, то и файлы устройств бывают разными. Есть два типа файлов устройств: блочные (англ. block special files) и символьные (англ. character special files). Блочные файлы устройств используются для передачи данных, разделённых на пакеты фиксированной длины — блоки. А символьные файлы устройств используются для небуферизованного обмена данными[1]. Большинство устройств способно принимать и отправлять данные либо блоками (блочные устройства), либо сплошным потоком байтов (символьные устройства), но некоторые (такие как жёсткий диск) сочетают в себе обе эти возможности. Работа с первым типом устройств возможна либо через блочные, либо через символьные файлы, а вот с последним типом — подходят и те, и другие.

Для того, чтобы операционная система могла определить файл устройства и получить некоторые характеристики о самом устройстве, в файле содержатся 3 специальных поля: класс устройства, старший номер устройства и младший номер устройства. Класс устройства сообщает символьное устройство или блочное. В некоторых операционных системах (например, в Linux) есть и дополнительный класс устройств — небуферизованное символьное устройство. Кроме класса, есть ещё и тип устройства, который можно узнать по старшему номеру, например в Linux системе 1 означает оперативную память, 2 — дисковод гибких дисков, 3 — первый контроллер для жестких IDE-дисков, и т. д.. В разных операционных системах один и тот же старший номер может указывать на разные типы устройств. Для того, чтобы отличить два устройства одного класса и типа предусмотрели младший номер. Он используется для нумерации устройств с одинаковыми старшими номерами. Например, если в компьютере 2 одинаковых дисковода, то специальные файлы устройств для них будут содержать один и тот же класс устройства, один и тот же старший номер, но вот младший номер у одного из них будет 0, а у другого — 1[2].

Работа с файлами устройствПравить

Файлы устройств размещаются в каталоге /dev или в его подкаталогах.

Узнать информацию о файле устройства можно с помощью команд file и ls.

/dev (от англ. devices — устройства) — каталог в системах типа UNIX, содержащий так называемые специальные файлы — интерфейсы работы с драйверами ядра. Как правило (хотя и не всегда), /dev является обычным каталогом в корневой файловой системе, куда можно (но не нужно) помещать и обычные файлы. Доступ на запись к /dev (то есть право добавлять и перемещать специальные файлы) имеет только суперпользователь. Сами «специальные файлы» могут быть как доступны простому пользователю (терминал, псевдоустройства), так и недоступны (жёсткие диски).

Примеры содержимогоПравить

  • /dev/sd буква — жёсткий диск (в системах на ядре Linux)
  • /dev/sd буква номер — раздел диска (в системах на ядре Linux)
  • /dev/sr номер (/dev/scd номер) — CD-ROM
  • /dev/eth номер — сетевые интерфейсы Ethernet
  • /dev/wlan номер — сетевые интерфейсы Wireless
  • /dev/lp номер — принтеры
  • /dev/video номер — устройства изображений, камеры, фотоаппараты и т. д.
  • /dev/bus/usb/000/номер — устройство номер на шине USB первого контроллера (000) (в системах на ядре Linux)
  • /dev/tty номер — текстовый терминал
  • /dev/dsp — звуковой вывод
  • /dev/random — случайные данные (псевдоустройство)
  • /dev/null — пусто (псевдоустройство)
  • /dev/zero — нулевые байты (псевдоустройство)

ПримечанияПравить

ЛитератураПравить

СсылкиПравить