Como o / proc / self é implementado no Linux?

18

Eu estava trabalhando com o sistema de arquivos /proc no Linux, e me deparei com /proc/self , que é um link simbólico para o diretório de processos do processo atual. Eu gostaria de saber como isso é implementado. Uma solução seria alterar esse link simbólico em todas as alternâncias de contexto , mas isso é obviamente muito caro, pois envolve um acesso ao disco.

    
por Vicky Chijwani 15.03.2012 / 00:35

2 respostas

19

link é a implementação atual.

O sistema de arquivos proc é inteiramente virtual e é implementado de forma que o VFS readlink interno delega no lugar certo para links simbólicos especiais. Então, ele calcula para qual self aponta quando é lido / percorrido, não para todas as alternâncias de contexto.

    
por 15.03.2012 / 00:39
12

Os arquivos em /proc não são armazenados em um disco, eles são gerados dinamicamente pelo kernel. Veja O que acontece quando eu abro e leio de / proc?

Se você estiver inclinado de maneira programática, leia a implementação de /proc no código-fonte do kernel . O conteúdo do link simbólico /proc/self é gerado por um < href="http://lxr.linux.no/linux+v3.2.11/fs/proc/base.c#L2482"> função que preenche um buffer com o pid do processo de chamada.

    
por 15.03.2012 / 00:42

Tags