¿Por qué `df` usa“ Bi ”como abreviatura de bytes?

8

Aparentemente dfestá poniendo "i" después de mayúsculas para cada tamaño. Esto tiene sentido para Kilobytes / Kibibytes, Gigabytes / Gibibytes y Mebibytes (si eso es lo que significa "Mi"). Pero, ¿por qué usaría "Bi" para bytes?

Por ejemplo, parte de mi resultado de df -hes:

map auto_home           0Bi    0Bi    0Bi   100%       0          0  100%   /home
Kiochi
fuente
1
¿Cuáles son los resultados de df -H? RTM: la hsalida de opción es base 2 y la Hsalida de opción es base 10.
fd0

Respuestas:

9

Es la diferencia entre el valor decimal y el prefijo binario . En este caso, está diciendo que está utilizando 0 bytes binarios.

¿Cual es la diferencia?

Usando "Giga" como nuestro ejemplo, significa 1000 3 de algo (es decir, Gigahertz).

En las computadoras plantea un problema interesante:

Un Gigabyte es 1000 3 bytes. Sin embargo, un byte es de 8 bits (binarios). Lo que significa que técnicamente es 1024 3 bytes. Para dar cuenta de esto, utilizamos notación diferente:

  • Giga es decimal (base 10)
  • Gibi es binario (base 2)

La salida te dice que está usando unidades binarias.

Si desea obtener la salida en "notación decimal legible por humanos", use una "H" mayúscula:

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

Finalmente, en realidad no es una convención de Apple, sino una de BSD (es un comando BSD). Puede encontrar más información en la página de manual ( man df).

Alano
fuente
8
No entiendo cómo esto responde la pregunta. OP deja en claro que saben la diferencia entre 1GBy 1GiB. La pregunta es: ¿cuál es la diferencia entre 1Biy 1B? ¿Por qué dos símbolos diferentes?
Federico Poloni
55
"Un Gigabyte tiene 1000 ^ 3 bytes. Sin embargo, un byte tiene 8 bits (binarios). Lo que significa que técnicamente es 1024 ^ 3 bytes". - No veo cómo un byte de 8 bits conduce a gigabyte, lo que significa 1024 ^ 3 en lugar de 1000 ^ 3 ...
marcelm
@marcelm Gigabyte = 1024 megabytes. Megabyte = 1024 kilobytes. Kilobyte = 1024 bytes. 1024 = 2 ^ 10.
Dmitry Kudriavtsev
3
@marcelm Estás en lo correcto, eso no es un secuestro. La memoria (RAM) siempre se ha medido como múltiplos de potencias de 2, debido a cómo se fabrican los chips. El espacio en los discos giratorios no es necesariamente porque depende del área de superficie física y la densidad de bits, por lo que los fabricantes de discos optaron por usar potencias iguales de 1000 para hacer que los números en su caja se vean mejor. "Gibi" y prefijos similares fueron una creación retroactiva para tratar de distinguir entre ellos, pero claramente solo complican las cosas.
BradC
1
La verdadera razón por la que se utilizó el prefijo decimal para 2 ^ x números en los días anteriores es: 2 ^ 10 ~ 10 ^ 3.
klanomath
5

Bi significa que está en unidades de 1024 0 bytes, en lugar de 1000 0 bytes.

es decir, son la misma unidad, pero no tendrían prefijos más grandes que significan exponentes distintos de cero. Parece que dfsolo es pedante, como una forma de ser consistente cuando está en modo de unidades de potencia de 2.

Esta es una convención inventada: no hay una unidad métrica o IEC "Bi", solo prefijos IEC de 2 letras que terminan en "i", para usar con cantidades de bits o bytes. (por ejemplo, Mi para mebibytes o mebibits). Y no, no se espera que digas eso en voz alta sin ironías con una cara seria.

"iB" podría tener más sentido (bytes binarios sin prefijo), pero tampoco es una cosa.

Peter Cordes
fuente
2
Entonces, ¿no debería ser "iB"? ;)
Cai
1024 ^ 0 es exactamente igual a 1000 ^ 0 (= 1) por lo que no lo explica. No hay término / símbolo para indicar byte binario (porque byte implica inherentemente binario), así que usé giga como ejemplo. Es aún más difícil indicar 0 porque 0 en binario y 0 en decimal son iguales y pueden ser confusos.
Allan
@Cai: Lo comprobé, los prefijos IEC siempre incluyen la "i" con el prefijo y no mencionan una unidad base "iB". Ver respuesta actualizada. Pero sí, acordó que sería más consistente. Por supuesto, en este contexto ( dfsalida de FreeBSD / OS X ), eso es lo que significa.
Peter Cordes
1
Tal vez iB son bytes imaginarios ?
Federico Poloni