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.