Как Linux имеет дело с Единицами? Это использует десятичное число или двоичный файл?
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
Вы видели различие:
Здесь пример для внешней шахты HDD на 1 ТБ:
$ 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.
Википедия ссылается на это, и сообщения списка рассылки ESR (иначе Eric S. Raymond, известный разработчик ядра) ([1], [2], [3], [4]) показывают что изменение патча kB
кому: KiB
, и т.д. в одной части документации, был принят, но часть ее продолжала использовать более старые варианты. Таким образом префиксы являются двоичными (или предназначаются, чтобы быть двоичным).