在 df 中可以选择使用 1000 的幂而不是 1024 的理由是什么?

在 df 中可以选择使用 1000 的幂而不是 1024 的理由是什么?

我很好奇 和df -Hdf -h然后man df告诉我:

   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)

   -H, --si
          likewise, but use powers of 1000 not 1024

那么使用 1000 次方的理由是什么?

也许是一个附带问题(甚至相关):

root@host:~# df
Filesystem     1K-blocks      Used Available Use% Mounted on

区块是K1024还是1000?

答案1

我推测这是由于存储制造商几乎普遍使用 SI 十进制前缀。

进一步在联机帮助页(假设 GNU df):

   SIZE  is  an  integer and optional unit (example: 10M is 10*1024*1024).
   Units are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ...  (pow‐
   ers of 1000).

所以 1K 就是 1024。

在另一个 GNU 工具中dd错误讨论提供了一些见解:

我记得在 2004 年我将这种诊断添加到 GNU dd 时就考虑到了这一点,并使用了 1000 次幂的缩写,因为辅助存储设备通常是这样测量的。因此,我预计许多用户会更喜欢这里的 1000 次方。对于传输速率来说尤其如此:在现实世界的散文中很少看到“GiB/s”。

提交1997 年添加此功能df仅说明了什么,而没有说明原因。

答案2

如果你回到 15-20 年前,2 的幂数学是合理的,因为它确实与其他答案中提到的存储块相匹配。然后我们遇到了惯性因素,“我们总是那样做”开始发挥作用。^2 和 ^10 之间的微小差异加起来永远不会太大。软件提供商使用 ^2 是为了方便(和惰性),驱动器制造商使用 ^10 是因为它在盒子上产生了更大的数字。

随着驱动器的容量达到数百 GB,然后达到数 TB,这种差异变得相当大,因此对于普通消费者来说是显而易见的。 30+Gb 的差异不能被视为“操作系统开销”。编程中的几行代码消除了对支持台的大量呼叫。是的,普通 Mac 用户不会每天使用 df,但它(或其函数/库/代码库)将由更高级别的 UI 程序使用。

答案3

如果特定的存储介质使用例如1024字节的分配单元,则知道一个文件在磁盘上占用260K就意味着它占用了260个存储单元。如果空间报告为 260k,则不清楚这是否意味着 253 个存储单元(259,072,四舍五入为 260)或 254 个存储单元(260,096 字节)。避免这种歧义是支持使用二次方单位的一个很好的论据。

然而,由于硬盘驱动器制造商开始使用十进制而不是二进制前缀,并且由于单个存储单元的大小在驱动器容量中所占的比例越来越小,因此二进制前缀不再具有与以前相同的优势。

相关内容