A árvore /dev
contém nós de dispositivo , que fornece espaço do usuário acesso aos drivers de dispositivo no kernel em execução do seu sistema operacional.¹ Todos os sistemas operacionais do tipo POSIX possuem uma árvore /dev
.
A árvore /proc
originou-se no System V Unix, onde forneceu apenas informações sobre cada processo em execução, usando um esquema /proc/$PID/stuff
. O Linux estendeu muito isso , adicionando todos os tipos de informações sobre o status do kernel em execução. Além desses arquivos de informações somente leitura, o /proc
do Linux também possui arquivos virtuais graváveis que podem alterar o estado do kernel em execução. Sistemas operacionais do tipo BSD geralmente não têm /proc
, e muito do que você encontra aqui não é portátil.
A solução pretendida para essa bagunça no /proc
do Linux é /sys
. Idealmente, todas as informações que não foram processadas e que foram reunidas na árvore /proc
já devem ter sido movidas para /sys
, mas a inércia histórica manteve muitas coisas em /proc
. Geralmente, existem duas maneiras de efetuar uma mudança no kernel em execução: o antigo /proc
way, mantido para compatibilidade com versões anteriores, e a nova /sys
maneira que você está para usar agora. ²
Notas de rodapé:
-
Também existem várias entradas
/dev
que não correspondem a dispositivos de hardware, como/dev/null
,/dev/random
e/dev/tty
. Estes são dispositivos virtuais que permitem que os programas de espaço do usuário conversem com outras partes do kernel, além dos drivers em execução, de uma maneira parecida a um dispositivo. -
Como regra geral,
/sys
tende a ser mais estritamente organizado do que/proc
, pois/sys
espelha as estruturas de dados internas do kernel que gerenciam os recursos do sistema, enquanto/proc
cresceu organicamente ao longo de muitos anos, e as antigas decisões de design questionáveis não podem mudar agora porque existem programas usando essas interfaces antigas. O/sys
começou com um design mais claro e não precisa arrastar o máximo de bagagem histórica de/proc
.