В 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 ОС знает о разделах, размере блоков и т. Д. (Но вы должны проверить).