Linuxは単位をどのように扱いますか? 10進数または2進数を使用しますか?
Decimal Prefix
name base 10 exp base 1000 exp digits
kilo 10^3 1000^1 1000
mega 10^6 1000^2 1000000
giga 10^9 1000^3 1000000000
Binary Prefix
name base 2 exp base 1024 exp digits
kibi 2^10 1024^1 1024
mibi 2^20 1024^2 1048576
gibi 2^30 1024^3 1073741824
ここで、たとえばdu
とfdisk
の2つのコマンドを調べると、違いがわかります。
1TBの外付けHDD鉱山の例:
$ du -sh
956G .
fdisk
の実行中:
$ Sudo fdisk -l
Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
カーネルのドキュメント は、SI接頭辞について語っていません。接頭辞がドキュメントに表示される場合、i
、k
の代わりに、愚かなM
(ki
、Mi
など)なしで表示されます(たとえば、 man 5 proc
を参照)。 GNUツールはSI接頭辞のサポートを獲得しなかった Linuxがリリースされるまでずっと、標準組織が異なる接頭辞を好むという理由だけでLinusはカーネルコードを変更する人のようには見えないので、私はLinuxを推測します。これらの接頭辞を使用する場合は、バイナリ接頭辞を使用します。
カーネルのドキュメントの一部として開発されたマンページ が、これについて説明しています。 man 7 units
を参照してください:
Thus, today, MB = 1000000B and MiB = 1048576B.
In the free software world programs are slowly being changed to con‐
form. When the Linux kernel boots and says
hda: 120064896 sectors (61473 MB) w/2048KiB Cache
the MB are megabytes and the KiB are kibibytes.
Wikipedia参照 これ、およびESR(別名Eric S. Raymond、有名なカーネル開発者)によるメーリングリストの投稿( [1] 、 [2] 、 [3] 、 [4] )は、ドキュメントの一部でkB
をKiB
などに変更するパッチが受け入れられたことを示していますが、古い亜種を使い続けました。したがって、プレフィックスはバイナリです(またはバイナリであることが意図されています)。