Eles são exatamente isso - interfaces. Codificados por um número "maior" e "menor", eles fornecem um gancho para o kernel.
Eles vêm em dois tipos (bem, três, mas pipes nomeados estão fora do escopo desta explicação no momento): Dispositivos de caracteres e Dispositivos de bloco.
Os dispositivos de bloco tendem a ser dispositivos de armazenamento, capazes de armazenar em buffer a saída e armazenar dados para recuperação posterior.
Dispositivos de caracteres são coisas como placas de áudio ou gráficos ou dispositivos de entrada como teclado e mouse.
Em cada caso, quando o kernel carrega o driver correto (no momento da inicialização ou através de programas como o udev ), ele varre os vários barramentos para verificar se algum dispositivo manipulado por esse driver está realmente presente no sistema. Nesse caso, ele configura um dispositivo que 'escuta' no número maior / menor apropriado.
(Por exemplo, o processador de sinal digital da primeira placa de áudio encontrada pelo seu sistema obtém o par de números maior / menor de 14/3; o segundo obtém 14,35 etc.)
Cabe ao udev criar uma entrada /dev
nomeada dsp
como um dispositivo de caractere marcado como major 14 menores 3.
(Nas versões significativamente mais antigas ou com uma pegada mínima do Linux, /dev/
pode não ser carregado dinamicamente, mas apenas conter todos os arquivos de dispositivo possíveis estaticamente.)
Então, quando um programa no espaço do usuário tenta acessar um arquivo marcado como um 'arquivo especial de caractere' com o número principal / secundário apropriado (por exemplo, seu reprodutor de áudio tentando enviar áudio digital /dev/dsp
), o kernel sabe que esses dados precisam Ser transmitido através do driver ao qual o número principal / secundário está anexado; presumivelmente, o referido motorista sabe o que fazer com ele por sua vez.