本节书摘来自异步社区《UNIX/Linux 系统管理技术手册(第四版)》一书中的第1章,第1.8节,作者:【美】Evi Nemeth , Garth Snyder , Trent R.Hein , Ben Whaley著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.8 单位
UNIX/Linux 系统管理技术手册(第四版)
像kilo-(千)、mega-(兆)和giga-(吉)这样的公制前缀都定义为10的幂:一百万是1,000,000。但是,计算机的类型定义长期以来一直借用这些前缀,但却用它们代表2的幂。例如,一兆内存实际是220,即1,048,576字节。这种借用的单位甚至混入了正式标准,像JEDEC固态技术协会的标准100B.01,该标准认定这些前缀表示2的幂(虽然有些质疑)。
为了恢复清楚的含义,国际电工委员会(International Electrotechnical Commission,IEC)规定了一组数字前缀(分别是kibi-、mebi-、gibi-等,缩写为Ki、Mi和Gi),明确基于2的幂。这类单位含义总是清楚的,但它们才开始得到广泛使用。原来的kilo-系列前缀则两种含义都在用。
通过上下文关系才能帮助判断到底按哪一种含义算。RAM总是按2的幂来算,而网络带宽一定按10的幂来算。存储空间一般按10的幂为单位算,但是块和页的大小则用2的幂计算。
我们在书中以2的幂计算IEC的单位,用10的幂计算公制单位,对粗略值以及确切的底数不清楚、没有文档或者不可能确定的情况用公制。在命令输出里,以及配置文件节选中,我们都保留原本的值和单位记法。我们把bit(位)缩写为b,而把byte(字节)缩写为B。表1.2给出了一些例子。
a.也就是说,硬盘块大小为512字节,数倍之后最接近108的数值
b.但是根据微软的说法,仍然是没有足够的内存运行64位版的Windows 7
在“8KB内存!”中,缩写K不属于任何标准。它是一个计算机行话,指公制缩写k(代表kilo-,千),后者起初表示1,024而不是1,000。但是即便更大一些公制前缀的缩写都已经变成大写[译者注:M、G、T],对于k却不能以此类推也用K。后来,人们开始混淆这种区别,开始也用K代表1,000。
Ubuntu的Linux发行版本做了大胆尝试,以求在这个问题上保持合理性和一致性;参考wiki.ubuntu.com/UnitsPolicy了解更多的细节。