Как компьютеры узнают емкость подключенных к ним дисков?
В ранних жестких дисках ПК (например, ST506, MFM, RLL) требовались пользовательские параметры геометрии привода (т. Е. Число секторов на дорожке, количество головок R / W и количество цилиндров) для адресации CHS . Конечно, (IBM) ПК предполагали / определяли размер сектора в 512 байт.
Эти параметры обычно хранятся в BIOS компьютера.
Диски IDE представили набор команд ATA, который включал Identify Device
команду (с использованием кода команды 0xEC), которая сообщала геометрию диска и другую информацию.
В версии 3 ATAPI ответ на эту команду включал total number of user addressable sectors
. (У меня нет более ранней версии спецификации ATAPI, поэтому я не уверен, что именно было в ответе до ATA-3.)
Используя общее количество секторов и размер сектора, общую емкость накопителя легко рассчитывается.
Поскольку современные версии ATA (например, диски SATA с записью битов зоны) больше не поддерживают адресацию CHS, геометрия накопителя не имеет значения (и даже не постоянна из-за записи битов зоны ).
Флэш-накопители USB просто используют USB в качестве транспортного протокола и реализуют набор команд ATA так же, как HDDS и SSD. Таким образом, емкость флэш-накопителей USB (и жестких дисков SATA / SSD) может быть легко получена путем опроса накопителя с помощью команды ATA Identify Device
.
SD-карты имеют собственный командный протокол для использования через интерфейс. Емкость, скорость и другая информация о карте передаются в виде ответа через командную строку (а не через интерфейс данных карты).
Операционные системы в основном предоставляют пользователю доступ к устройствам хранения данных, таким как жесткие диски и твердотельные накопители, в качестве файловых систем.
По соглашениям ПК, диск должен быть разделен, а файловая система должна существовать в разделе диска. Обратите внимание, что дискеты и, при желании, USB-накопители не разбиты на разделы.
Значимые параметры диска (т.е. адреса начального и конечного сектора / LBA) разделов извлекаются из таблицы разделов (расположенной в секторе (ах) MBR или GPT).