é linux: tudo é um arquivo que reduz o desempenho?

0

Eu tenho uma pergunta e não tenho certeza se é pertinente (talvez eu sinta falta de alguma coisa).

dizendo que no linux tudo é um arquivo significa que:

1 - comunicação com módulos e processos é escrita em arquivos: correto

2 - se estiver correto, esses arquivos são armazenados no disco rígido?

3 - se estiver correto, demora algum tempo para o disco R / W?

    
por Makhlouf GHARBI 20.04.2017 / 17:23

2 respostas

6

Tudo pode ser um arquivo, mas nem tudo é real .

Considere o conteúdo de /proc . No meu sistema Linux, existe um arquivo /proc/uptime , cujo conteúdo atual é:

831801.89 1241295.64

Se eu fosse cat do arquivo, ele conteria números diferentes. Meu disco rígido é montado somente para leitura, portanto, não é possível que algo esteja gravando esses números em disco a cada fração de segundo. Na verdade, nada sob /proc está no disco. Cada interação com um arquivo nesse diretório simplesmente executa o código do kernel, devido à natureza de procfs .

Depois, há arquivos temporários. É provável que seu /tmp esteja montado tmpfs , o que significa que seu conteúdo está armazenado na RAM, e não no disco.

Outro lugar interessante é o /dev/tcp , para se comunicar com a rede. Em alguns sistemas, isso só existe em bash , mas não em outros shells, portanto, não pode estar no disco nesses sistemas.

Todos esses exemplos mostram que o sistema de arquivos e o disco rígido são separados, e a filosofia "Tudo é um arquivo" não afeta o desempenho por causa da velocidade de E / S.

    
por 20.04.2017 / 17:46
1

Não, eu não diria que há uma penalidade em termos de i / o.

Talvez a frase seja uma simplificação excessiva. Mas dentro dos dispositivos do kernel, arquivos, tudo pode ser referenciado com um descritor de arquivo, e todos os descritores são mapeados em um sistema de arquivos virtual, e como em um sistema de arquivos pode-se referir a um arquivo particular com um nome (um identificador).

Assim, o kernel não necessariamente passa, por exemplo, os dados de /proc/vmstat através do sistema de arquivos do disco, mas você não precisa fazer nada especial para ler as estatísticas, você pode ler os dados usando o cat comando.

tente

watch head /proc/vmstat

Você verá que os números mudam a cada intervalo.

Obviamente, alguns arquivos possuem características especiais e podem exigir mais operações para manipular do que o simples abrir / fechar / ler / gravar / buscar, por exemplo, definir a taxa de transmissão em um dispositivo serial faz sentido, mas não em um arquivo no disco. p>     

por 20.04.2017 / 18:12