Por que proc é chamado de sistema de arquivos?

20

O procsistema de arquivos permite que o kernel comunique informações sobre cada processo em execução em um sistema Linux.

Por que é procchamado de sistema de arquivos? Não é como um sistema de arquivos real ext4. É apenas uma coleção de arquivos contendo informações sobre os processos em execução.

Makhlouf GHARBI
fonte

Respostas:

25

/procé um sistema de arquivos, porque os processos de usuário pode navegar por ela com chamadas de sistema familiares e chamadas de biblioteca, como opendir(), readdir(), chdir()e getcwd(). Mesmo open(), read()e close()trabalhar em um monte de "arquivos" que aparecem na /proc. Para a maioria das intenções e quase todos os propósitos, /procé um sistema de arquivos, apesar de seus arquivos não ocuparem blocos em algum disco.

Suponho que todos devemos esclarecer qual definição do termo "sistema de arquivos" estamos usando atualmente. No contexto do ext4, quando escrevemos "sistema de arquivos", provavelmente estamos falando sobre a combinação de um layout de blocos de disco, especificação de informações de metadados sobre os blocos de disco que também residem em algum lugar no disco e o código que lida com esse layout em disco. No contexto de /usr, /tmp, /var/rune assim por diante, estamos escrevendo sobre um entendimento ou uma conceitualização compartilhada de como nomear algumas coisas. Esses dois usos do termo "sistema de arquivos" são realmente bem diferentes. /procé realmente o segundo tipo de "sistema de arquivos", como você observou.

Bruce Ediger
fonte
9
Não há razão para usar aspas assustadoras para arquivos, a /procmenos que se pense que os arquivos sempre são apoiados em disco (ou apoiados em fita, ou apoiados em CD ou em qualquer outro suporte9. Eles nem sempre - pense em discos RAM. um próximo / sequência aberta / gravação com um arquivo "real" em /home, digamos, pode nem sempre significa que as mudanças correspondentes a intenção de refletir permanentemente o estado deste arquivo ondisk storagehave já foram feitas e concluídas.
Hagen von Eitzen
10
tl; dr: porque é um sistema de arquivos?
Jörg W Mittag 17/05
11
Observe que isso também explica o ditado "No Linux, tudo é um arquivo".
dr01
É um sistema de arquivos de maneira semelhante à tela da área de trabalho. A terminologia do computador está repleta de metáforas.
Barmar
18

é apenas uma área de arquivos contendo informações

Mas isso é exatamente o que um sistema de arquivos é . Os sistemas de arquivos não precisam ser graváveis ​​e não precisam residir no armazenamento permanente.

Nota: Há uma distinção entre procfs(a implementação do pseudo sistema de arquivos no kernel) e seu ponto de montagem convencional /proc. Em teoria, você poderia montar um em procfsqualquer lugar, mas isso é raro. Por causa disso, as pessoas costumam falar sobre o /procque realmente querem dizer procfs.

procfsé chamado de pseudo sistema de arquivos porque os arquivos a procfsnão são criados pelas operações usuais do sistema de arquivos, mas são adicionados e removidos pela própria implementação do sistema de arquivos com base no que está acontecendo em outro lugar do kernel.

cjm
fonte
então por que o / etc / boot, por exemplo, não é chamado de sistema de arquivos ???
Makhlouf GHARBI
7
Porque eles são diretórios em um sistema de arquivos. (Bem, /booté, frequentemente, um sistema de arquivos separado, mas não é uma separada tipo de sistema de arquivos.)
CJM
9

Se os dados são organizados de forma que possam ser acessados ​​por meio dos mecanismos usados ​​nos sistemas de arquivos, você pode chamar a coisa toda de sistema de arquivos.

Guntbert
fonte