Eles são na verdade apenas 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 os pipes nomeados estão fora do escopo desta explicação por enquanto): Dispositivos de Caracteres e Dispositivos de Bloco.
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 caractere são coisas como placas de áudio ou gráficas 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 udev ) Ele verifica os vários barramentos para ver se algum dispositivo manipulado por esse driver está realmente presente no sistema. Em caso afirmativo, configura um dispositivo que "escuta" o número principal / secundário apropriado.
(Por exemplo, o Processador de Sinal Digital da primeira placa de áudio encontrada pelo seu sistema recebe o maior / menor par de números de 14/3; o segundo, 14,35, etc.)
Cabe ao udev criar uma entrada em /dev
named dsp
como um dispositivo de caractere marcado como major 14 minor 3.
(Em versões significativamente mais antigas ou de tamanho mínimo do Linux, /dev/
pode não ser carregado dinamicamente, mas apenas conter todos os arquivos de dispositivos estaticamente possíveis.)
Então, quando um programa userspace tenta acessar um arquivo marcado como 'arquivo especial de caractere' com o número principal / menor apropriado (por exemplo, seu reprodutor de áudio tentando enviar áudio digital para /dev/dsp
), o kernel sabe que esses dados precisam ser transmitidos através do driver que o número maior / menor está anexado; presumivelmente disse motorista sabe o que fazer com ele por sua vez.