Por que o `df` usa“ Bi ”como abreviação de bytes?

8

Aparentemente, dfestá colocando "i" após letras maiúsculas para cada tamanho. Isso faz sentido para Kilobytes / Kibibytes, Gigabytes / Gibibytes e Mebibytes (se é isso que "Mi" significa). Mas por que ele usaria "Bi" para bytes?

Por exemplo, parte do meu resultado de df -hé:

map auto_home           0Bi    0Bi    0Bi   100%       0          0  100%   /home
Kiochi
fonte
1
Quais são os resultados df -H? RTM- a hsaída de opção é base 2 e a Hsaída de opção é base 10.
fd0

Respostas:

9

É a diferença entre o valor decimal e o prefixo binário . Nesse caso, está dizendo que você está usando 0 bytes binários.

Qual é a diferença?

Usando "Giga" como nosso exemplo, isso significa 1000 3 de algo (ou seja, Gigahertz).

Nos computadores, isso representa um problema interessante:

Um Gigabyte tem 1000 3 bytes. No entanto, um byte tem 8 bits (binários). O que significa que é tecnicamente 1024 3 bytes. Para explicar isso, usamos notação diferente:

  • Giga é decimal (base 10)
  • Gibi é binário (base 2)

A saída está dizendo que você está usando unidades binárias.

Se você deseja obter a saída em "notação decimal legível por humanos", use um "H" maiúsculo:

$ df -H
/dev/disk2      1.1T   413G   706G    37% 100935848 172431606   37%   
map auto_home     0B     0B     0B   100%         0         0  100%   /home

Finalmente, na verdade não é uma convenção da Apple, mas uma do BSD (é um comando do BSD). Você pode encontrar mais informações na página de manual ( man df).

Allan
fonte
8
Eu não entendo como isso responde à pergunta. O OP deixa claro que eles sabem a diferença entre 1GBe 1GiB. A questão é: qual é a diferença entre 1Bie 1B? Por que dois símbolos diferentes?
Federico Poloni
5
"Um Gigabyte tem 1000 ^ 3 bytes. No entanto, um byte tem 8 bits (binários). O que significa que são tecnicamente 1024 ^ 3 bytes." - Eu não vejo como um byte sendo 8 bits leva a gigabyte ou seja, 1024 ^ 3 em vez de 1000 ^ 3 ...
marcelm
@marcelm Gigabyte = 1024 megabytes. Megabyte = 1024 kilobytes. Kilobyte = 1024 bytes. 1024 = 2 ^ 10.
Dmitry Kudriavtsev
3
@ marcelm Você está correto, isso não é uma sequência. A memória (RAM) sempre foi medida como múltiplos de potências de 2, devido à maneira como os chips são fabricados. O espaço nos discos giratórios não é necessariamente, porque depende da área da superfície física e da densidade de bits, então os fabricantes de discos optaram por usar potências iguais a 1000 para fazer com que os números em suas caixas pareçam melhores. "Gibi" e prefixos semelhantes foram uma criação retroativa para tentar distinguir entre eles, mas claramente eles apenas tornam as coisas mais confusas.
21317 BradC
1
A verdadeira razão pela qual o prefixo decimal foi usado para 2 ^ x números nos dias anteriores é: 2 ^ 10 ~ 10 ^ 3.
klanomath
5

Bi significa que você está em unidades de 1024 0 bytes, em vez de 1000 0 bytes.

ou seja, eles são a mesma unidade, mas não estariam com prefixos maiores que significam expoentes diferentes de zero. Parece que dfestá apenas sendo pedante, como uma maneira de ser consistente quando no modo de potência de 2 unidades.

Esta é uma convenção inventada: não há unidade métrica ou IEC "Bi", apenas prefixos IEC de duas letras que terminam com "i", para uso com quantidades de bits ou bytes. (por exemplo, Mi para mebibytes ou mebibits.) E não, não se espera que você diga isso em voz alta, sem ironia, com uma cara séria.

"iB" pode fazer mais sentido (bytes binários sem prefixo), mas também não é uma coisa.

Peter Cordes
fonte
2
Então não deveria ser "iB"? ;)
Cai
1024 ^ 0 é exatamente igual a 1000 ^ 0 (= 1), portanto não explica. Não há termo / símbolo para indicar byte binário (porque byte implica inerentemente binário), então usei o giga como exemplo. É ainda mais difícil indicar 0 porque 0 em binário e 0 em decimal são iguais e podem ser confusos.
Allan
@Cai: verifiquei, os prefixos IEC sempre incluem o "i" com o prefixo e não fazem menção a uma unidade base "iB". Veja a resposta atualizada. Mas sim, concordou que seria mais consistente. Obviamente, neste contexto ( dfsaída do FreeBSD / OS X ), é isso que significa.
Peter Cordes
1
Talvez iB sejam bytes imaginários ?
Federico Poloni