Специальные файлы устройств
Однако, в отличие от обычных файлов, специальные файлы устройств в действительности есть только указатели на соответствующие драйверы устройств в ядре. По сравнению с обычными файлами файлы устройств имеют три дополнительных атрибута, которые характеризуют устройство, соответствующее данному файлу:
- Класс устройства. В ОС Linux различают устройства блок-ориентированные и байт-ориентированные. Блок-ориентированные (или блочные) устройства, например, жесткий диск, передают данные блоками. Байт-ориентированные (или символьные) устройства, например, принтер и модем, передают данные посимвольно, как непрерывный поток байтов. Взаимодействие с блочными устройствами может осуществляться лишь через буферную память, а для символьных устройств буфер не требуется. Кроме этих двух классов устройств имеются еще два - небуферизованные байт-ориентированные устройства и именованные каналы (FIFO).
- Старший номер устройства, обозначающий тип устройства, например, жесткий диск или звуковая плата. Текущий список старших номеров устройств можно найти в файле /usr/include/linux/major.h. Вот небольшая выдержка из этого списка
Таблица 9.1. Старшие номера некоторых устройств
Старший номерТип устройства
1 | Оперативная память |
2 | Дисковод гибких дисков |
3 | Первый контроллер для жестких IDE-дисков |
4 | Терминалы |
5 | Терминалы |
6 | Принтер (параллельный разъем) |
8 | Жесткие SCSI-диски |
14 | Звуковые карты |
22 | Второй контроллер для жестких IDE-дисков |
Файлы устройств одного типа имеют одинаковые имена и различаются по номеру, прибавляемому к имени. Например, все файлы сетевых плат Ethernet имеют имена, начинающиеся на eth: eth0, eth1 и т. д.
- Младший номер устройства применяется для нумерации устройств одного типа, т. е. устройств с одинаковыми старшими номерами.
Если вы заглянете в каталог /dev и выполните команду ls -l, вы увидите, что эта команда вместо размера файла в байтах, как для обычного файла, выводит два числа, разделенных запятой. Это и есть старший и младший номера данного устройства. Эти номера задаются в соответствии с таблицей устройств, определенной разработчиками ядра.
Старшие номера известных ядру устройств можно увидеть, выполнив команду
[user]$ cat /proc/devices
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий