web-dev-qa-db-ja.com

Linuxは2進数または10進数の接頭辞を使用しますか?

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

ここで、たとえばdufdiskの2つのコマンドを調べると、違いがわかります。

1TBの外付けHDD鉱山の例:

$ du -sh
956G    .

fdiskの実行中:

$ Sudo fdisk -l

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
  • では、10進数を使用するアプリと2進数を使用するアプリはどれですか。
  • システム全体と内部のアプリに1つの方法を適用する方法は?
2
Maythux

カーネルのドキュメント は、SI接頭辞について語っていません。接頭辞がドキュメントに表示される場合、ikの代わりに、愚かなMkiMiなど)なしで表示されます(たとえば、 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] )は、ドキュメントの一部でkBKiBなどに変更するパッチが受け入れられたことを示していますが、古い亜種を使い続けました。したがって、プレフィックスはバイナリです(またはバイナリであることが意図されています)。

2
muru