Что такое chs на жестком диске
По мере усложнения геометрии (например, с введением зональной записи битов ) и увеличения размеров дисков со временем метод адресации CHS стал ограничивающим. С конца 80-х годов прошлого века жесткие диски начали поставляться со встроенным контроллером диска, который хорошо знал физическую геометрию; однако они будут сообщать компьютеру ложную геометрию, например, о большем количестве головок, чем есть на самом деле, чтобы получить больше адресного пространства. Эти логические значения CHS будут преобразованы контроллером, поэтому адресация CHS больше не соответствует никаким физическим атрибутам диска.
К середине 1990-х интерфейсы жестких дисков заменили схему CHS на логическую адресацию блоков (LBA), но многие инструменты для управления таблицей разделов основной загрузочной записи (MBR) все еще выравнивали разделы по границам цилиндров; таким образом, артефакты адресации CHS все еще наблюдались в программном обеспечении для разбиения на разделы к концу 2000-х годов.
В начале 2010-х годов ограничения размера диска, налагаемые MBR, стали проблематичными, и таблица разделов GUID (GPT) была разработана в качестве замены; современные компьютеры, использующие прошивку UEFI без поддержки MBR, больше не используют никаких понятий из адресации CHS.
СОДЕРЖАНИЕ
Определения
Секторов
Дискеты и контроллеры используют размер физических секторов 128, 256, 512 и 1024 байта (например, PC / AX), при этом форматы с 512 байтами на физический сектор стали доминирующими в 1980-х годах.
Наиболее распространенный размер физического сектора для жестких дисков сегодня составляет 512 байтов, но были жесткие диски с 520 байтами на сектор и для машин, не совместимых с IBM. В 2005 году некоторые специальные жесткие диски Seagate использовали размер сектора 1024 байта на сектор. Жесткие диски расширенного формата используют 4096 байт на физический сектор ( 4Kn ) с 2010 года, но также смогут имитировать 512-байтовые сектора ( 512e ) в течение переходного периода.
В магнитооптических приводах используются сектора размером 512 и 1024 байта на 5,25-дюймовых накопителях и 512 и 2048 байтов на 3,5-дюймовых накопителях.
Для геометрии физического диска максимальное количество секторов определяется форматом низкого уровня диска. Однако для доступа к диску с помощью BIOS компьютеров, совместимых с IBM-PC, номер сектора был закодирован шестью битами, что дало максимальное количество 111111 (63) секторов на дорожку. Этот максимум все еще используется для виртуальной геометрии CHS.
Треки
Цилиндров
Головы
Устройство, называемое головкой, считывает и записывает данные на жесткий диск, манипулируя магнитным носителем, который составляет поверхность соответствующего диска. Естественно, у диска есть 2 стороны и, следовательно, 2 поверхности, на которых можно манипулировать данными; Обычно на тарелку приходится 2 головки, по одной с каждой стороны. (Иногда термин сторона заменяется на головку, поскольку пластины могут быть отделены от их головок, как в случае съемного носителя в дисководе для гибких дисков.)
Эта историческая странность может повлиять на максимальный размер диска в старом коде BIOS INT 13h, а также в старых DOS ПК или аналогичных операционных системах:
Блоки и кластеры
Сопоставление CHS с LBA
В 2002 году спецификация ATA-6 представила необязательную 48- битную адресацию логических блоков и объявила адресацию CHS устаревшей, но все же позволила реализовать преобразования ATA-5. Неудивительно, что приведенная ниже формула преобразования CHS в LBA также соответствует последнему преобразованию CHS ATA-5. В спецификации ATA-5 поддержка CHS была обязательной для до 16 514 064 секторов и необязательной для дисков большего размера. Предел ATA-5 соответствует CHS 16383 16 63 или эквивалентной емкости диска (16514064 = 16383 × 16 × 63 = 1032 × 254 × 63) и требует 24 = 14 + 4 + 6 бит (16383 + 1 = 2 14 ).
Кортежи CHS можно сопоставить с адресами LBA, используя следующую формулу:
Чтобы помочь визуализировать последовательность секторов в линейной модели LBA, обратите внимание, что:
История
Формат записи головки цилиндра использовался жесткими дисками Count Key Data (CKD) на мэйнфреймах IBM, по крайней мере, с 1960-х годов. Это в значительной степени сопоставимо с форматом сектора головки цилиндра, используемым ПК, за исключением того, что размер сектора не был фиксированным, но мог варьироваться от дорожки к дорожке в зависимости от потребностей каждого приложения. В современном использовании геометрия диска, представленная мэйнфрейму, эмулируется встроенным ПО хранилища и больше не имеет никакого отношения к геометрии физического диска.
Диски ATA / IDE были намного эффективнее при хранении данных и заменили теперь уже устаревшие диски MFM и RLL. Они используют зонную битовую запись (ZBR), где количество секторов, разделяющих каждую дорожку, зависит от расположения групп дорожек на поверхности диска. Дорожки, расположенные ближе к краю диска, содержат больше блоков данных, чем дорожки рядом с шпинделем, потому что на данной дорожке у края диска больше физического пространства. Таким образом, схема адресации CHS не может напрямую соответствовать физической геометрии таких накопителей из-за разного количества секторов на дорожку для разных регионов на пластине. Из-за этого у многих дисков все еще есть избыток секторов (размером менее 1 цилиндра) в конце диска, поскольку общее количество секторов редко, если вообще когда-либо, заканчивается на границе цилиндра.
Диск ATA / IDE может быть установлен в системной BIOS с любой конфигурацией цилиндров, головок и секторов, которые не превышают емкость диска (или BIOS), поскольку диск преобразует любое заданное значение CHS в фактический адрес для его специфическая конфигурация оборудования. Однако это может вызвать проблемы с совместимостью.
HDD. Методы адресации CHS и LBA.
HDD. Методы адресации CHS и LBA.
Существует два основных метода, используемых для адресации (или нумерации) секторов накопителей. Первый из них называется CHS (Cylinder Head Sector). Это название образовано по трем соответствующим координатам, которые используются для адресации каждого сектора дисковода. Во втором методе, который носит название LBA (Logical Block Address), для адресации секторов накопителя используется только одно значение. В основе метода CHS лежит физическая структура накопителей (а также способ организации его внутренней работы).
Метод LBA, в свою очередь, представляет собой более простой и логический способ нумерации секторов, не зависящий от внутренней физической архитектуры накопителей.
При последовательном считывании данных с накопителя в режиме CHS процесс чтения начинается с цилиндра 0, головки 0 и сектора 1 (который является первым сектором на данном диске), после чего считываются все остальные секторы первой дорожки. Затем выбирается следующая головка и читаются все секторы, находящиеся на этой дорожке. Это продолжается до тех пор, пока не будут считаны данные со всех головок первого цилиндра. Затем выбирается следующий цилиндр, и процесс чтения продолжается в такой же последовательности.
При последовательном считывании данных с накопителя в режиме LBA процесс чтения начинается с сектора 0, после чего читается сектор 1, сектор 2 и т.д. В режиме CHS первым сектором жесткого диска является 0,0,1. В режиме LBA этот же сектор будет сектором 0.
В качестве примера представьте себе накопитель, содержащий один жесткий диск, две головки (используются обе стороны жесткого диска), две дорожки на каждом жестком диске (цилиндры) и два сектора на каждой дорожке. В этом случае можно сказать, что накопитель содержит два цилиндра (две дорожки на каждой стороне), две головки (по одной на сторону), а также два сектора на каждой дорожке. В общей сложности емкость накопителя равна восьми (2×2×2) секторам. Обратите внимание: нумерация цилиндров и головок начинается с числа 0, а нумерация физических секторов, находящихся на дорожке, — с числа 1. При использовании адресации CHS расположение первого сектора накопителя определяется выражением “цилиндр 0, головка 0, сектор 1 (0,0,1)”; адресом второго сектора является 0,0,2; третьего — 0,1,1; четвертого — 0,1,2 и т.д., пока мы не дойдем до последнего сектора, адрес которого 1,1,2.
Как видно из приведенного примера, использование нумерации LBA заметно облегчает и упрощает процесс обработки данных. Несмотря на это, при создании первых ПК вся адресация BIOS и накопителей АТА была выполнена методом CHS.
Преобразования CHS/LBA и LBA/CHS
Адресация секторов может выполняться как в режиме CHS, так и в режиме LBA. Для данного накопителя существует определенное соответствие между адресациями CHS и LBA, которое, в частности, позволяет преобразовывать адреса CHS в адреса LBA и наоборот. Существует довольно простая формула, с помощью которой можно преобразовывать параметры CHS в LBA:
LBA = (((C × HPC) + H) × SPT) + S – 1.
Реверсирование этой формулы позволяет выполнить обратное преобразование, т.е. преобразовать параметры LBA в адрес CHS:
H = int ((LBA/SPT) mod HPC),
В этих формулах использованы следующие выражения:
— LBA — logical block address;
— C — цилиндр (cylinder);
— HPC — количество головок в каждом цилиндре (общее количество головок);
— SPT — количество секторов на каждой дорожке;
— int X — целочисленная часть X;
— X mod Y — модуль (остаток) от X/Y.
Программы BIOS ( когда объем HDD был очень скромным) использовали адресацию CHS, например:
Читает один или группу секторов с физического (не логического!) диска в память. Для начального сектора указываются абсолютные координаты (цилиндр, сектор, головка). Секторы физического диска нумеруются на каждой дорожке от 1, цилиндры нумеруются от 0, головки нумеруются от 0. Сначала идут секторы 1. n цилиндра 0, головки (поверхности) 0, затем секторы 1. n цилиндра 0, головки (поверхности) 1, далее секторы 1. п цилиндра 1, головки 0 и т.д. Таким образом, на HDD сектор 1 цилиндра 0 головки 0 относится к главной загрузочной записи ( Master boot ).
AL=число читаемых секторов
АL=число переданных секторов
— вся адресная информация передается через буфер в оперативной памяти, а не через регистры;
— соглашения об использовании регистров изменены (для обеспечения передачи новых структур данных);
— для определения дополнительных возможностей аппаратуры (параметров) используются флаги.
Пакет дискового адреса.
Фундаментальной структурой данных для дополнительных функций прерывания Int I3h является так называемый «Пакет дискового адреса» (Disk Address Packet). Получив пакет дискового адреса, прерывание Int 13h преобразует содержащиеся в нем данные в физические параметры, соответствующие используемому носителю информации. Формат пакета дискового адреса описан в табл. 3.
Таблица 3. Формат пакета дискового адреса.
Правила передачи параметров дополнительным функциям.
При вызове прерывания дополнительным функциям BIOS передаются через регистры процессора следующие данные:
— в АН — номер вызываемой функции;
— в DS: SI — адрес буфера, содержащего пакет дискового адреса.
Передача остальных параметров, как было уже указано выше, производится через пакет дискового адреса.
Дополнительные функции BIOS предназначены только для жестких дисков и дисководов сменных дисков большой емкости, причем функции рассчитаны на использование не более четырех устройств. Передаваемый функции номер диска, таким образом, должен находиться в диапазоне 80h-83h.
После выполнения функции в регистре АН выдается код состояния (статус возврата). Кроме принятого для классических функций BIOS стандартного набора кодов возврата, для дополнительных функций введено еще несколько кодов.
Прерывание Int 13h, функция 42h: расширенное чтение (рис. 1).
Функция осуществляет передачу секторов с заданной области диска в буфер памяти. Перед вызовом прерывания требуется записать в регистры следующие значения:
— в АН — значение 42h;
— в DL — номер дисковода;
— в DS: SI — адрес пакета дискового адреса.
После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно прочитаны (прочитаны до того, как произошла ошибка).
Методы адресации HDD (CHS и LBA).
Методы адресации HDD (CHS и LBA).
Существует два основных метода, используемых для адресации (или нумерации) секторов накопителей. Первый из них называется CHS (Cylinder Head Sector). Это название образовано по трем соответствующим координатам, которые используются для адресации каждого сектора дисковода. Во втором методе, который носит название LBA (Logical Block Address), для адресации секторов накопителя используется только одно значение. В основе метода CHS лежит физическая структура накопителей (а также способ организации его внутренней работы).
Метод LBA, в свою очередь, представляет собой более простой и логический способ нумерации секторов, не зависящий от внутренней физической архитектуры накопителей.
При последовательном считывании данных с накопителя в режиме CHS процесс чтения начинается с цилиндра 0, головки 0 и сектора 1 (который является первым сектором на данном диске), после чего считываются все остальные секторы первой дорожки. Затем выбирается следующая головка и читаются все секторы, находящиеся на этой дорожке. Это продолжается до тех пор, пока не будут считаны данные со всех головок первого цилиндра. Затем выбирается следующий цилиндр, и процесс чтения продолжается в такой же последовательности.
При последовательном считывании данных с накопителя в режиме LBA процесс чтения начинается с сектора 0, после чего читается сектор 1, сектор 2 и т.д. В режиме CHS первым сектором жесткого диска является 0,0,1. В режиме LBA этот же сектор будет сектором 0.
В качестве примера представьте себе накопитель, содержащий один жесткий диск, две головки (используются обе стороны жесткого диска), две дорожки на каждом жестком диске (цилиндры) и два сектора на каждой дорожке. В этом случае можно сказать, что накопитель содержит два цилиндра (две дорожки на каждой стороне), две головки (по одной на сторону), а также два сектора на каждой дорожке. В общей сложности емкость накопителя равна восьми (2×2×2) секторам. Обратите внимание: нумерация цилиндров и головок начинается с числа 0, а нумерация физических секторов, находящихся на дорожке, — с числа 1. При использовании адресации CHS расположение первого сектора накопителя определяется выражением “цилиндр 0, головка 0, сектор 1 (0,0,1)”; адресом второго сектора является 0,0,2; третьего — 0,1,1; четвертого — 0,1,2 и т.д., пока мы не дойдем до последнего сектора, адрес которого 1,1,2.
Как видно из приведенного примера, использование нумерации LBA заметно облегчает и упрощает процесс обработки данных. Несмотря на это, при создании первых ПК вся адресация BIOS и накопителей АТА была выполнена методом CHS.
Преобразования CHS/LBA и LBA/CHS
Адресация секторов может выполняться как в режиме CHS, так и в режиме LBA. Для данного накопителя существует определенное соответствие между адресациями CHS и LBA, которое, в частности, позволяет преобразовывать адреса CHS в адреса LBA и наоборот. Существует довольно простая формула, с помощью которой можно преобразовывать параметры CHS в LBA:
LBA = (((C × HPC) + H) × SPT) + S – 1.
Реверсирование этой формулы позволяет выполнить обратное преобразование, т.е. преобразовать параметры LBA в адрес CHS:
H = int ((LBA/SPT) mod HPC),
В этих формулах использованы следующие выражения:
— LBA — logical block address;
— C — цилиндр (cylinder);
— HPC — количество головок в каждом цилиндре (общее количество головок);
— SPT — количество секторов на каждой дорожке;
— int X — целочисленная часть X;
— X mod Y — модуль (остаток) от X/Y.
Программы BIOS ( когда объем HDD был очень скромным) использовали адресацию CHS, например:
AL=число читаемых секторов
АL=число переданных секторов
вся адресная информация передается через буфер в оперативной памяти, а не через регистры;
соглашения об использовании регистров изменены (для обеспечения передачи новых структур данных);
для определения дополнительных возможностей аппаратуры (параметров) используются флаги.
Пакет дискового адреса.
Правила передачи параметров дополнительным функциям. При вызове прерывания дополнительным функциям BIOS передаются через регистры процессора следующие данные:
— в АН — номер вызываемой функции;
— в DS: SI — адрес буфера, содержащего пакет дискового адреса.
Передача остальных параметров, как было уже указано выше, производится через пакет дискового адреса.
Дополнительные функции BIOS предназначены только для жестких дисков и дисководов сменных дисков большой емкости, причем функции рассчитаны на использование не более четырех устройств. Передаваемый функции номер диска, таким образом, должен находиться в диапазоне 80h-83h.
После выполнения функции в регистре АН выдается код состояния (статус возврата). Кроме принятого для классических функций BIOS стандартного набора кодов возврата, для дополнительных функций введено еще несколько кодов.
Пример использования прерывание Int 13h, функция 42h: расширенное чтение.
Функция осуществляет передачу секторов с заданной области диска в буфер памяти. Перед вызовом прерывания требуется записать в регистры следующие значения:
— в АН — значение 42h;
— в DL — номер дисковода;
— в DS: SI — адрес пакета дискового адреса.
После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно прочитаны (прочитаны до того, как произошла ошибка).
Что такое chs на жестком диске
CHS (от англ. Cylinder, Head, Sector ) — система адресации сектора (как минимальной единицы в операции чтения(записи)) дисковых накопителей (жёстких магнитных дисков, накопителей на гибких магнитных дисках и т. п.) основанная на использовании физических адресов геометрии диска.
Сектор на жёстком диске адресуется кортежем из трёх чисел: цилиндр-головка-сектор, именно так, как этот блок физически расположен на диске.
Под цилиндром (Cylinder) понимается совокупность дорожек одинакового радиуса на всех магнитных дисках (блинах) одного жёсткого диска. Контроллер жёсткого диска интерпретирует значение в радиус, на который передвигается магнитная головка чтения (Head). С каждой магнитной поверхности магнитного диска чтение производит только одна головка, следовательно, указывая головку, мы также указываем ту поверхность, с которой следует считывать информацию. Сектор диска, как понятно из геометричекого определения, интерпретируется как диапазон градуса поворота диска
Очевидно, что такая схема плохо подходит к недисковым устройствам хранения (ленты, сетевые хранилища), потому и не используется для них. Схема CHS и её расширенная версия ECHS использовались на ранних приводах ATA использующих интерфейс ESDI.
В жёстких дисках объёмом более 524 Мб со встроенными контроллерами эти координаты уже не соответствуют физическому положению сектора на диске и являются «логическими координатами». Так, механизм адресации Large сообщал BIOS вдвое большее число головок и вдвое меньшее число цилиндров. Затем контроллеры стали сообщать, будто в дорожке 63 сектора, а в цилиндре 255 дорожек (максимально допустимые значения), число же цилиндров подбирается сообразно объему. Представить жесткий диск с такими характеристиками трудно — он бы состоял из 128 пластин, поэтому контроллер занят преобразованием логических адресов в физические координаты. Реальное число секторов в современном диске — около ста, и дорожек бывает не больше шести.
Механизм логических адресов позволяет адресовать более вместительные диски. Кроме того, диски теперь можно разбить на зоны с различным числом секторов, что увеличивает плотность записи на внешних цилиндрах и обеспечивает более эффективное использование площади пластин. Такой способ записи получил название ZBR.
К сожалению, логическая геометрия приводила к проблемам с некоторыми версиями BIOS и нарушала работу низкоуровневых утилит вроде Ontrack Disk Manager. Данную проблему решил механизм LBA: теперь каждый сектор получил собственный независимый адрес.
Стандарт IDE включал 22-битный LBA в качестве опции, который был расширен до 28-битного с выпуском ATA-1 (1994) и до 48-битного с выпуском ATA-6 (2003), тогда как размер записи в структурах данных на диске и в памяти, содержащие адрес, обычно имеют размер 32 или 64 бита. Большинство жестких дисков, выпущенных после 1996 года, реализуют адресацию логических блоков.
СОДЕРЖАНИЕ
Обзор
При логической адресации блоков для адресации данных используется только одно число, и каждый линейный базовый адрес описывает отдельный блок.
LBA была впервые представлена в SCSI как абстракция. Хотя контроллер диска по-прежнему обращается к блокам данных по их адресу CHS, эта информация обычно не используется драйвером устройства SCSI, ОС, кодом файловой системы или любыми приложениями (такими как базы данных), которые обращаются к «необработанному» диску. Системные вызовы, требующие ввода-вывода на уровне блоков, передают определения LBA драйверу устройства хранения; в простых случаях (когда один том отображается на один физический диск) этот LBA затем передается непосредственно контроллеру диска.
Усовершенствованный BIOS
Более ранний стандарт IDE от Western Digital представил 22-битный LBA; в 1994 году стандарт ATA-1 позволял использовать 28-битные адреса в режимах LBA и CHS. Схема CHS использовала 16 бит для цилиндра, 4 бита для головы и 8 бит для сектора, подсчет секторов от 1 до 255. Это означает, что сообщаемое количество головок никогда не превышает 16 (0–15), количество секторов может быть 255 ( 1–255; хотя чаще всего используется 63), а количество цилиндров может достигать 65 536 (0–65535), что ограничивает размер диска 128 ГиБ (≈137,4 ГБ), предполагая 512-байтовые сектора. К этим значениям можно получить доступ, выполнив команду ATA «Идентифицировать устройство» ( EC h) для привода.
LBA-перевод
Когда BIOS настроен на использование диска в режиме трансляции с помощью LBA, BIOS обращается к оборудованию в режиме LBA, но также представляет преобразованную геометрию CHS через интерфейс INT 13h. Количество цилиндров, головок и секторов в преобразованной геометрии зависит от общего размера диска, как показано в следующей таблице.
Размер диска | Секторы / трек | Головы | Цилиндров |
---|---|---|---|
1 | 63 | 16 | Х ÷ (63 × 16 × 512) |
504 МБ | 63 | 32 | Х ÷ (63 × 32 × 512) |
1008 МБ | 63 | 64 | Х ÷ (63 × 64 × 512) |
2016 МиБ | 63 | 128 | X ÷ (63 × 128 × 512) |
4032 МБ | 63 | 255 | X ÷ (63 × 255 × 512) |
LBA48
Преобразование CHS
Значение LBA | Кортеж CHS |
---|---|
0 | 0, 0, 1 |
1 | 0, 0, 2 |
2 | 0, 0, 3 |
62 | 0, 0, 63 |
63 | 0, 1, 1 |
945 | 0, 15, 1 |
1007 | 0, 15, 63 |
1008 | 1, 0, 1 |
1070 | 1, 0, 63 |
1071 | 1, 1, 1 |
1133 | 1, 1, 63 |
1134 | 1, 2, 1 |
2015 г. | 1, 15, 63 |
2016 г. | 2, 0, 1 |
16 127 | 15, 15, 63 |
16 128 | 16, 0, 1 |
32 255 | 31, 15, 63 |
32 256 | 32, 0, 1 |
16 450 559 | 16319, 15, 63 |
16 514 063 | 16382, 15, 63 |
В схеме адресации LBA секторы нумеруются как целочисленные индексы; при сопоставлении с кортежами CHS ( сектор головки блока цилиндров ) нумерация LBA начинается с первого цилиндра, первой головки и первого сектора дорожки. Как только гусеница исчерпана, нумерация продолжается до второй головки, оставаясь внутри первого цилиндра. Когда все головки внутри первого цилиндра исчерпаны, нумерация продолжается со второго цилиндра и т. Д. Таким образом, чем ниже значение LBA, тем ближе физический сектор к первому (то есть самому внешнему) цилиндру жесткого диска.
Кортежи CHS могут быть сопоставлены с адресом LBA по следующей формуле:
Согласно спецификациям ATA, «Если содержание слов (61:60) больше или равно 16 514 064, то содержание слова 1 [количество логических цилиндров] должно быть равно 16 383». Следовательно, для LBA 16450559 диск ATA может фактически ответить кортежем CHS (16319, 15, 63), и количество цилиндров в этой схеме должно быть намного больше 1024, разрешенного INT 13h.