it-swarm-pt.tech

Qual é a diferença entre procfs e sysfs?

Qual é a diferença entre procfs e sysfs? Por que eles são feitos como sistemas de arquivos? Pelo que entendi, proc é apenas algo para armazenar as informações imediatas sobre os processos em execução no sistema.

74
Sen

Qual é a diferença entre procfs e sysfs?

proc é o antigo, é mais ou menos sem regras e estrutura. E em algum momento foi decidido que proc era um pouco caótico e era necessário um novo caminho.

Então sysfs foi criado e o novo material adicionado foi colocado em sysfs como informações do dispositivo.

Então, em certo sentido, eles fazem o mesmo, mas sysfs é um pouco mais estruturado.

Por que eles são feitos como sistemas de arquivos?

A filosofia do UNIX nos diz que tudo é um "arquivo", portanto foi criado para que se comporte como arquivos.

Pelo que entendi, proc é apenas algo para armazenar as informações imediatas sobre os processos em execução no sistema.

Essas partes sempre estiveram lá e provavelmente nunca irão para sysfs.

Mas há mais coisas antigas que você pode encontrar em proc, que não foram movidas.

63
Johan

No começo (no Unix), a maneira como os programas descobriam os processos em execução no sistema era através da leitura direta das estruturas de processo da memória do kernel (abrindo/dev/mem e interpretando os dados brutos diretamente). Foi assim que os primeiros comandos 'ps' funcionaram. Com o tempo, algumas informações foram disponibilizadas por meio de chamadas do sistema.

No entanto, é uma má forma expor os dados do sistema diretamente ao espaço do usuário via/dev/mem, e desagradável criar constantemente novas chamadas de sistema toda vez que você deseja exportar alguns novos dados do processo e, portanto, um método mais novo foi criado acessar dados estruturados para aplicativos de espaço do usuário para descobrir sobre atributos do processo. Este era o sistema de arquivos/proc. Com/proc, as interfaces e estruturas (diretórios e arquivos) podem ser mantidas iguais, mesmo que as estruturas de dados subjacentes no kernel sejam alteradas. Isso era muito menos frágil do que o sistema anterior e era melhor dimensionado.

O sistema de arquivos/proc foi originalmente projetado para publicar informações do processo e alguns atributos-chave do sistema, exigidos por 'ps', 'top', 'free' e alguns outros utilitários do sistema. No entanto, por ser fácil de usar (do lado do kernel e do espaço do usuário), tornou-se um depósito de lixo para toda uma gama de informações do sistema. Além disso, começou a ganhar arquivos de leitura/gravação, para ser usado para ajustar configurações e controlar a operação do kernel ou de seus vários subsistemas. No entanto, a metodologia de implementação de interfaces de controle foi ad-hoc, e/proc logo se transformou em uma confusão confusa.

O sysfs (ou sistema de arquivos/sys) foi projetado para adicionar estrutura a essa bagunça e fornecer uma maneira uniforme de expor informações do sistema e pontos de controle (atributos configuráveis ​​do sistema e do driver) ao espaço do usuário a partir do kernel. Agora, a estrutura do driver no kernel cria automaticamente diretórios em/sys quando os drivers são registrados, com base no tipo de driver e nos valores em suas estruturas de dados. Isso significa que os drivers de um tipo específico terão todos os mesmos elementos expostos via sysfs.

Muitas informações e pontos de controle do sistema legado ainda estão acessíveis em/proc, mas todos os novos barramentos e drivers devem expor suas informações e pontos de controle via sysfs.

77
Tim Bird

procfs permite arbitrariamente file_operations, sysfs é mais restrito

o sysfs é o sistema de arquivos virtual criado durante o ciclo de lançamento do Kernel 2.6 para mostrar informações do dispositivo, pois os procfs não fizeram esse tipo de informação tão bem.

A memória etc não foi portada para o sysfs, pois nunca se destinou a mostrar esse tipo de informação, portanto é improvável que ela seja portada.

3
kemra102

Como eu também quero adicionar aqui ... Como/proc é a versão mais antiga, ela contém as informações do dispositivo do kernel daquele período de tempo. um pouco estruturado e de fácil acesso ..

1
gagan bajaj