В Linux (и Unixes эры 1980-х годов) запоминающее устройство (довольно часто дисковый раздел на каком-то жестком диске или на некотором SSD ) является блочным устройством (см. Это ), так же как и [последовательность] блоков (которая является базовая единица физического ввода / вывода). Размер физического блока зависит от аппаратного обеспечения (старые диски IDE имели размер блока 512 байт, новые большие диски SATA имеют размер блока 4 Кбайт, прочитайте вики-страницу расширенного формата ), а также когда вы создаете файловую систему (например mkfs
, с помощью mke2fs (8)) вы можете указать размер логического блока, который будет кратным (часто малой степени двух, включая 1) этого физического размера блока. Читайте также о логической адресации блоков .
В прошлом (вспомним рабочие станции Sun3 1990-х годов) диск был сделан из цилиндров с головками, организованными по секторам (см. Википейдж CHS ), с сектором, содержащим блок. Сегодня они все еще остаются, но являются искусственным артефактом, предоставляемым контроллером жесткого диска (схема на самом диске). В некоторых ОС драйвер блочного устройства перепланировал и переупорядочил запросы ввода-вывода, чтобы минимизировать перемещение головки диска и задержку вращения .
Таким образом, файловая система может работать с любым типом запоминающего устройства (традиционный жесткий диск, SSD, USB-накопитель и т. Д.), И изменяется только драйвер устройства для запоминающего устройства.
Да, но зло в деталях (например, прочитайте про TRIM и Write Amplification , специфичные для твердотельных накопителей). И детали важны, поэтому фактическая реализация менее проста, чем ваша фигура. Узнайте больше о файловых системах (и подумайте о кластерных и удаленных файловых системах, включая SMB и NFS ; прочитайте также о Logical Volume Manager ).
Прочитайте Операционные системы: Три Легких Части (и его постоянная часть).
Обратите внимание, что блочные устройства исчезли во FreeBSD (фактически предоставляя общую абстракцию для символьных и блочных устройств). Я подозреваю, что даже в Windows ОС знает о разделах, размере блоков и т. Д. (Но вы должны проверить).
Все, что говорит Василий Старынкевич, правильно. Я добавлю немного больше. Действительно, дисководы были «блочными», но блочные устройства (и многие другие устройства) были представлены в двух формах: «сырой» и «приготовленный». Необработанные устройства можно адресовать только частями, кратными их собственному размеру. Таким образом, устройство с необработанным диском может считывать или записывать только один или несколько блоков одновременно, а не только один или два байта. Приготовленные устройства добавили слой, который позволял бы такие меньшие операции, а также различные другие функции.
Файловые системы работали с необработанными устройствами и, таким образом, рассматривали их не как большой массив байтов, а скорее как большой массив блоков, как объяснил BS.
источник