
Dado um arquivo com um único h
. Se eu executar find
com o -ls
primitivo, obtenho a seguinte saída:
$ cat some_file
h
$ find . -ls
2750606 0 drwxr-xr-x 4 mbigras FOO\Domain Users 136 May 18 12:35 .
3067730 16 -rw-r--r-- 1 mbigras FOO\Domain Users 6148 May 18 12:33 ./.DS_Store
3067836 8 -rw-r--r-- 1 mbigras FOO\Domain Users 2 May 18 12:35 ./some_file
A partir de man find
e pesquisando, -ls
podemos encontrar a saída com as seguintes informações sobre os arquivos:
seu número de inode, tamanho em blocos de 512 bytes, permissões de arquivo, número de links físicos, proprietário, grupo, tamanho em bytes, hora da última modificação e nome do caminho.
Algumas coisas que estou pensando:
- Se contém
some_file
apenash
um byte, então por que o "tamanho em bytes" é 2? Eu esperaria que fosse 1. - Se o segundo número é o “tamanho em blocos de 512 bytes”, por que é maior que o “tamanho em bytes”? Eu esperaria que fosse 0 ou pelo menos menor.
Responder1
some_file
contém h
seguido por uma nova linha, totalizando dois bytes. Tente algo como
hexdump -C some_file
para visualizar o conteúdo do arquivo byte por byte.
Qualquer arquivo entre 1 e 512 bytes ocupará um bloco de 512 bytes, se esse for o tamanho mínimo de alocação no disco, assim como um arquivo de 513 bytes ocupará dois blocos de 512 bytes. A contagem de blocos não é arredondada para o número inteiro mais próximo.
Responder2
veja qual é a razão por que usamos 512 bytes; digamos um arquivo de tamanho 513 bytes, o que acontece é que para armazenar esse arquivo precisamos de 2 blocos de tamanho 512 bytes no disco rígido. Para salvar o 513º byte temos que alocar um bloco completo do disco rígido que contém 512 bytes corretamente. Portanto há um desperdício de 511 bytes por causa da fragmentação interna, então para reduzir essa fragmentação interna é sempre melhor que você mantenha o tamanho do bloco o menor possível e por experimentação descobrimos que 512 bytes é o tamanho ideal, se você diminuí-lo poderá ter que acessar muitos blocos para acessar um arquivo e isso levará tempo . Então para otimizar as coisas descobriram que experimentalmente que 512 bytes é o melhor tamanho para aumentar a eficiência e diminuir o desperdício de memória.