2016-11-02 3 views
0

Определение: Файл устройства - это интерфейс между программами и драйвером устройства. В ядре находится драйвер устройства ; программы (приложения) находятся в пользовательском пространстве. Способ, которым программа может получить доступ к драйверу в ядре, - через специальный файл специального устройства.Именованная труба имеет соответствующий драйвер устройства?

Именованная труба существует как специальный файл устройства в файловой системе.

Мой вопрос:

I случай с именем трубы, если это специальный файл устройства, а затем (по определению) файл устройства представляет собой интерфейс для некоторого драйвера устройства в пространстве ядра. Имеет ли соответствующий драйвер устройства в пространстве ядра?

Потому что, я не вижу мажор/минор номер ниже

$ ls -l MYFIFO 
     prw-r--r-- 1 root  root   0 Dec 14 22:15 MYFIFO| 
+0

@moooeeeep Не релевантные, но уже посещенные ссылки. Infact определение в моем запросе из этих ссылок. Проверьте слайд 32 [здесь] (https://www.youtube.com/watch?v=2DrjQBL5FMU). В типах файлов Pipe отличается от файла с символьным/блочным устройством. 'ls -l MYFIFO' не дает основного/младшего номера – overexchange

+2

. Сам факт того, что тип устройства для FIFO (именованный канал) отличается от блочного устройства или символьного устройства, не означает, что нет драйвера устройства для это - по крайней мере, если вы не интерпретируете «драйвер устройства» как «код в ядре, который обеспечивает правильное поведение доступа к устройству».Обычные файлы также отличаются от блочных и символьных устройств, но в ядре есть определенные драйверы устройств (и код управления файловой системой), чтобы заставить их работать должным образом. Обычные файлы также не отображают основные/младшие номера. –

+0

@JonathanLeffler Если есть драйвер устройства для именованного канала, то почему я не вижу основной/младший номер на 'ls -l MYFIFO'? – overexchange

ответ

1

Позволяет определить «ядро», как 2-х категорий вещей - «основные услуги» (например, управление физической памятью, планировщик, и т.д.), и то «неосновные службы» (вещи, которые не всегда присутствуют, такие как драйверы устройств, файловые системы и т. д., например, например, ext2, могут отсутствовать, потому что вместо этого вы используете RieserFS). Обратите внимание, что это уже ограничено конкретным типом ядра (например, монолитные ядра, а не микроядро).

Позволяет определить «драйвер устройства» как часть кода, предназначенную для синтаксиса между одной абстракцией (API-интерфейс драйвера ядра, определяемый разработчиком ОС/ядра) и другая абстракция (аппаратный интерфейс, предоставляемый соответствующим устройством, как определено разработчиком оборудования/изготовителем).

Для почти всех ядер одним из «основных сервисов» является IPC (Inter-Process Communication) - способ взаимодействия процессов. Для многих ядер существует несколько различных форм IPC (разделяемая память, сообщения, сигналы и т. Д.). Трубы - это еще одна форма IPC.

Большинство труб не имеют имени - вы просто получаете какой-то непрозрачный дескриптор (например, дескриптор файла). Именованная труба такая же, как и обычная труба; за исключением того, что вы связываете имя с каналом, чтобы другие процессы могли найти непрозрачный дескриптор из «известного» имени.

Исходя из всего вышеперечисленного; именованные каналы не имеют драйвера устройства (и являются «основной услугой» и, следовательно, даже не относятся к той же категории, что и драйверы устройств).

Однако, «на основе всех вышеперечисленных» означает «на основе моих определений, которые я составил». Настоящая проблема заключается в том, что нет реального консенсуса в отношении того, как определена любая терминология. Вот почему хорошие книги (и хорошая документация по ОС) будут четко определять эти вещи. Вот почему примерно половина людей, которые читают этот ответ, не согласятся (потому что они иначе определяют «драйвер устройства»).

+0

[Здесь] (http://tldp.org/LDP/lpg/node16.html#SECTION00731000000000000000) говорится, что именованные каналы существуют как файлы устройств в файловой системе. Не означает ли это, что есть соответствующий драйвер устройства? или Является ли этот файл устройства только для IPC и не более того? – overexchange

+0

@overexchange: это означает, что нет соответствующего драйвера устройства (и «файл устройства» просто используется для обозначения его как особенного в некотором роде и не означает, что есть драйвер); и что существует «именованный драйвер трубы»; и что все, что находится на другом конце именованного канала, является «драйвером» (даже если это предмет пространства пользователя). Это означает все эти взаимоисключающие вещи в одно и то же время (где кто-то, кто определяет «драйвер устройства», как я, думает одно, а другие люди, которые определяют «драйвер устройства» по-разному, думают о разных вещах, и никто не прав или не прав, нет консенсуса). – Brendan