Позволяет определить «ядро», как 2-х категорий вещей - «основные услуги» (например, управление физической памятью, планировщик, и т.д.), и то «неосновные службы» (вещи, которые не всегда присутствуют, такие как драйверы устройств, файловые системы и т. д., например, например, ext2, могут отсутствовать, потому что вместо этого вы используете RieserFS). Обратите внимание, что это уже ограничено конкретным типом ядра (например, монолитные ядра, а не микроядро).
Позволяет определить «драйвер устройства» как часть кода, предназначенную для синтаксиса между одной абстракцией (API-интерфейс драйвера ядра, определяемый разработчиком ОС/ядра) и другая абстракция (аппаратный интерфейс, предоставляемый соответствующим устройством, как определено разработчиком оборудования/изготовителем).
Для почти всех ядер одним из «основных сервисов» является IPC (Inter-Process Communication) - способ взаимодействия процессов. Для многих ядер существует несколько различных форм IPC (разделяемая память, сообщения, сигналы и т. Д.). Трубы - это еще одна форма IPC.
Большинство труб не имеют имени - вы просто получаете какой-то непрозрачный дескриптор (например, дескриптор файла). Именованная труба такая же, как и обычная труба; за исключением того, что вы связываете имя с каналом, чтобы другие процессы могли найти непрозрачный дескриптор из «известного» имени.
Исходя из всего вышеперечисленного; именованные каналы не имеют драйвера устройства (и являются «основной услугой» и, следовательно, даже не относятся к той же категории, что и драйверы устройств).
Однако, «на основе всех вышеперечисленных» означает «на основе моих определений, которые я составил». Настоящая проблема заключается в том, что нет реального консенсуса в отношении того, как определена любая терминология. Вот почему хорошие книги (и хорошая документация по ОС) будут четко определять эти вещи. Вот почему примерно половина людей, которые читают этот ответ, не согласятся (потому что они иначе определяют «драйвер устройства»).
@moooeeeep Не релевантные, но уже посещенные ссылки. Infact определение в моем запросе из этих ссылок. Проверьте слайд 32 [здесь] (https://www.youtube.com/watch?v=2DrjQBL5FMU). В типах файлов Pipe отличается от файла с символьным/блочным устройством. 'ls -l MYFIFO' не дает основного/младшего номера – overexchange
. Сам факт того, что тип устройства для FIFO (именованный канал) отличается от блочного устройства или символьного устройства, не означает, что нет драйвера устройства для это - по крайней мере, если вы не интерпретируете «драйвер устройства» как «код в ядре, который обеспечивает правильное поведение доступа к устройству».Обычные файлы также отличаются от блочных и символьных устройств, но в ядре есть определенные драйверы устройств (и код управления файловой системой), чтобы заставить их работать должным образом. Обычные файлы также не отображают основные/младшие номера. –
@JonathanLeffler Если есть драйвер устройства для именованного канала, то почему я не вижу основной/младший номер на 'ls -l MYFIFO'? – overexchange