Qual é a diferença entre procfs e sysfs?

67

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.

    
por Sen 16.12.2010 / 06:26

5 respostas

56

What is the difference between procfs and 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 um novo caminho era necessário.

Em seguida, sysfs foi criado e o novo material que foi 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.

Why are they made as file systems?

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

As I understand it, proc is just something to store the immediate info regarding the processes running in the system.

Essas partes sempre estiveram presentes e provavelmente nunca serão movidas para sysfs .

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

    
por 16.12.2010 / 08:32
68

No começo (caminho de volta no Unix), a maneira como os programas descobriram sobre os processos em execução no sistema foi através da leitura direta das estruturas de processo da memória do kernel (abrindo / dev / mem e interpretando os dados brutos diretamente) . É 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 para o espaço do usuário via / dev / mem, e é desagradável estar constantemente criando novas chamadas de sistema toda vez que você deseja exportar novos dados de processo, e então O método foi criado para acessar dados estruturados para aplicativos de espaço do usuário para descobrir os atributos do processo. Este foi o sistema de arquivos / proc. Com / proc, as interfaces e estruturas (diretórios e arquivos) poderiam ser mantidas as mesmas, mesmo que as estruturas de dados subjacentes no kernel fossem alteradas. Isso foi muito menos frágil do que o sistema anterior e melhorou.

O sistema de arquivos / proc foi originalmente projetado para publicar informações de processo e alguns dos principais atributos do sistema, exigidos por 'ps', 'top', 'free' e alguns outros utilitários do sistema. No entanto, como era fácil de usar (tanto do lado do kernel quanto do lado do espaço do usuário), tornou-se um depósito para toda uma gama de informações do sistema. Além disso, começou a ganhar arquivos de leitura / gravação, para ajustar as configurações e controlar o funcionamento 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 emaranhada.

O sysfs (ou sistema de arquivos / sys) foi projetado para adicionar estrutura a essa confusão 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 do kernel. Agora, a estrutura do driver no kernel cria automaticamente os diretórios sob / 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 determinado tipo terão todos os mesmos elementos expostos via sysfs.

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

    
por 13.08.2013 / 21:26
7

procfs permite arbitrário file_operations , sysfs é mais restrito

por 28.07.2017 / 09:30
3

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

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

    
por 16.12.2010 / 12:27
1

Como eu também quero adicionar aqui ... Como / proc é a versão mais antiga que contém as informações do dispositivo kernel daquele período de tempo ... como o sysfs veio com a versão 2.6 do kernel, as informações do driver de dispositivo criam seu próprio diretório que é um pouco estruturado e de fácil acesso ..

    
por 31.05.2016 / 17:19