
Файл подкачки (своппинга) — неотъемлимая часть виртуальной адресации в защищенном режиме работы x86-процессора. Его существование подразумевает использование в составе персональных платформ накопителей на жестких магнитных дисках. Это ограничивает рассмотрение таких устройств пятидюймовым форм-фактором, хотя до сего дня дожили только HDD с более компактной компоновкой. Восьмидюймовые накопители навсегда остались в прошлом, оставаясь коллекционным антиквариатом. Но каким бы ни был размер устройства, принцип его работы основан на «эффекте памяти» магнитных материалов — запоминании двоичных нулей и единиц путем индуктивного воздействия на специальную поверхность. Образованные на ней структуры данных позволяют контроллеру жесткого диска адресовать, искать, находить читать и модифицировать информацию, организованную определенным образом. Как это происходит? Давайте разбираться.
Магнитные диски списывать со счетов еще рано
Говорить о безоговорочной победе твердотельных накопителей над их магнитными собратьями пока не приходится. Цена единицы хранения у HDD по прежнему существенно ниже, чем у SSD, а с появлением наполненных гелием гермокамер перспективы вытеснения магнитных дисков снова отодвигаются на неопределенное время. В очередной раз эволюция HDD преподносит сюрприз аналитикам. В похожей ситуации накопители на жестких магнитных дисках с честью вышли победителями, оставив далеко позади магнитооптическую, а затем и оптическую технологию записи.
Секторы. дорожки, блоки
Сравним способ формирования зон — блоков данных, реализованных в HDD, с технологией оптического хранения информации.
Как видим, разметка поверхности носителя CD-ROM похожа на патефонную пластинку, что продиктовано требованием непрерывной записи. Поверхность магнитного носителя разделена на секторы, которые в пределах одной дорожки объединяются в блоки. До последнего времени размер сектора всегда составлял 512 байт.
При невысокой плотности записи длина дорожек хотя и влияла на алгоритм работы контроллера жесткого диска, тем не менее, не была архиважным фактором, определяющим архитектуру устройства. С ростом объемов HDD на смену стандартной (регулярной) разметке диска пришла зонная запись, варьирующая количество секторов на дорожке в зависимости от расстояния ее от центра вращения.
Внедрение зонной записи повлияло на снятие с повестки дня такого понятия как interleaving. Его суть сводилась к нумерации секторов на дорожке не строго последовательно, а с заданным шагом чередования. Interleaving позволял оптимизировать доступ к хранящейся на поверхности информации, уменьшая время чтения и записи. Точнее, он был необходим потому, что при смежном расположении двух секторов, контроллер после считывания очередного сектора не успевал начать операцию чтения следующего сектора и пропускал его до повторного появления под магнитной головкой через целый оборот диска. Кроме того, при увеличении объема локальной памяти контроллера уже не требуется заботиться об освобождении буфера после передачи каждого сектора, как это было во времена MFM-устройств. Поэтому несмотря на увеличение скорости вращения магнитного носителя и как следствие уменьшение длительности межсекторных интервалов, стало возможным чтение дорожки за один оборот диска. В дальнейшем эта идея была востребована в очереди команд NCQ интерфейса SATA.
В реальных накопителях на жестких магнитных дисках часть поверхности хранит служебную информацию, доступную только автономному контроллеру накопителя. Служебная зона недоступна для программ, если только они не разработаны производителем устройства. Сервисные утилиты такого рода могут находить трудночитаемые блоки и вместо них использовать дорожки из резервной области. Способ замены обнаруженных дефектных секторов на поверхности диска — секрет производителя и может меняться даже от устройства к устройству.
Объем имеет значение
И все же, как оценить объем магнитного диска, указанный в техническом паспорте устройства? Для начала отметим, что рабочее пространство накопителя формируется из нескольких пластин (сленговое название — «блинов»), которые составляют дисковый пакет. Доступ к поверхности каждой из них выполняется с помощью «своей» магнитной головки. В этом случае равноудаленные дорожки на всех поверхностях магнитных дисков образуют логические цилиндры.
Цилиндры и головки нумеруются, начиная с нуля; секторы в пределах одного цилиндра — с единицы. Эти три параметра образуют кортеж, который определяет физическую геометрию диска — CHS (Cylinders, Heads, Sectors).
Казалось бы, зная геометрию жесткого магнитного диска несложно подсчитать его объем. Для этого нужно умножить количество головок на количество цилиндров, затем на количество секторов и на размер сектора в байтах (будем считать эту величину константой, равной 512 байт).
Для корректных вычислений нужно принять во внимание разрядность полей, отведенных для хранения параметров геометрии. В силу обратной совместимости необходимо придерживаться принятых соглашений, ограничивающих количество цилиндров (не более 1024), секторов (не более 63) и головок — до 255. В результате умножения получаем что-то около 16,5 млн. секторов, что в пересчете составляет 8 гигабайт.
О логическом и физическом аспектах в архитектуре HDD
Вывод очевиден: в объеме современного HDD нужно применять сквозную нумерацию всех секторов (блоков), что и делается с помощью LBA — Logical Block Addressing. Правда, такой алгоритм должен быть встроен в UEFI BIOS и понятен операционной системе. В свою очередь, для работы современных накопителей в рамках Legacy BIOS могут использоваться различные расширения API дисковых операций.
Механизмы, используемые для передачи информации о геометрии накопителя (паспорт диска и функция прерывания INT 13h), в общем случае используют логическую геометрию, которая является виртуальной и не соответствует реальным физическим параметрам устройства. Это востребовано для удобства адресации и обхода ограничений, свойственных Legacy-платформам. Кроме того, на уровне логической геометрии зонная запись не отражает реальное положение дел, так как все логические дорожки содержат одинаковое количество секторов. Очевидно, применение таких трюков позволяет снять с операционной системы заботу об адресации дорожек неодинакового размера, оставив данный вопрос внутри HDD («черного ящика»), как обязанность встроенного firmware накопителя на жестких магнитных дисках.