Что такое chs на жестком диске
CHS (Cylinder-Head-Sector>> — цилиндр, головка, сектор) — система адресации сектора, как минимальной единицы хранения данных в накопителях на жёстких магнитных дисках, накопителях на гибких магнитных дисках и т.п, основанная на использовании физических адресов геометрии диска.
Содержание
В этой системе сектор адресуется кортежем из трёх координат: цилиндр-головка-сектор (Cylinder, Head, Sector), именно так, как он физически расположен на диске.
Под цилиндром понимается совокупность дорожек одинакового радиуса на всех магнитных поверхностях пластин одного накопителя. Контроллер жёсткого диска интерпретирует значение в радиус, на который передвигается магнитная головка чтения. С каждой магнитной поверхности магнитного диска чтение производит только одна головка, следовательно, указывая головку, мы также указываем ту поверхность, с которой следует считывать информацию. Сектор диска, как понятно из геометричекого определения, интерпретируется как диапазон градуса поворота диска.
Очевидно, что такая схема плохо подходит к недисковым устройствам хранения (ленты, сетевые хранилища), потому и не используется для них. Схема CHS и её расширенная версия ECHS использовались на ранних приводах ATA использующих интерфейс ESDI.
При данном способе адресации системному контроллеру нет необходимости учитывать геометрию самого жесткого диска (количество цилиндров, сторон (головок), секторов на дорожке). Контроллеры современных IDE дисков в качестве основного режима трансляции адреса используют LBA.
Суть LBA состоит в том, что каждый блок, адресуемый на жёстком диске имеет свой номер, целое число, начиная с нуля и т. д. (то есть первый блок LBA=0, второй LBA=1, . ) LBA 0 = Цилиндр 0/Головка 0/Сектор 1
Еще одно преимущество метода адресования LBA — то, что ограничение размера диска обусловлено лишь разрядностью LBA. В настоящее время для задания номера блока используется 48 бит, что при использовании двоичной системы исчисления даёт возможность адресовать на приводе (248) 281 474 976 710 656 блоков (то есть, при блоке в 512 байт, 128 ПиБ).
L B A = [ ( C y l i n d e r ⋅ n o o f h e a d s + h e a d s ) ⋅ s e c t o r s / t r a c k ] + ( S e c t o r − 1 )
- LBA — адрес блока по LBA.
- Cylinder — номер цилиндра.
- noofheads — количество головок.
- heads — номер выбранной головки.
- sectors/track — количество секторов на одной дорожке.
- Sector — номер сектора.
Описание
В системе CHS сектор адресуется кортежем из трёх координат: цилиндр-головка-сектор (Cylinder, Head, Sector), именно так, как он физически расположен на диске.
Под цилиндром понимается совокупность дорожек одинакового радиуса на всех магнитных поверхностях пластин одного накопителя. Контроллер жёсткого диска интерпретирует значение в радиус, на который передвигается магнитная головка чтения. С каждой магнитной поверхности магнитного диска чтение производит только одна головка, следовательно, указывая головку, мы также указываем ту поверхность, с которой следует считывать информацию. Сектор диска, как понятно из геометричекого определения, интерпретируется как диапазон градуса поворота диска.
Очевидно, что такая схема плохо подходит к недисковым устройствам хранения (ленты, сетевые хранилища), потому и не используется для них. Схема CHS и её расширенная версия ECHS использовались на ранних приводах ATA использующих интерфейс ESDI.
В жёстких дисках объёмом более 524 Мб со встроенными контроллерами эти координаты уже не соответствуют физическому положению сектора на диске и являются «логическими координатами». Так, механизм адресации Large сообщал BIOS вдвое большее число головок и вдвое меньшее число цилиндров. Затем контроллеры стали сообщать, будто в дорожке 63 сектора , а на одной поверхности «блина» 255 дорожек (максимально допустимые значения), число же цилиндров подбирается сообразно объему. Представить жесткий диск с такими характеристиками трудно — он бы состоял из 128 пластин , поэтому контроллер занят преобразованием логических адресов в физические координаты. Реальное число секторов в современном диске — около ста, и дорожек бывает не больше шести.
Механизм логических адресов позволяет адресовать более вместительные диски. Кроме того, диски теперь можно разбить на зоны с различным числом секторов, что увеличивает плотность записи на внешних цилиндрах и обеспечивает более эффективное использование площади пластин. Такой способ записи получил название ZBR.
Логическая геометрия приводила к проблемам с некоторыми версиями BIOS и нарушала работу низкоуровневых утилит вроде Ontrack Disk Manager. Данную проблему решил механизм LBA: теперь каждый сектор получил собственный независимый адрес.
Пример использования прерывание Int 13h, функция 42h: расширенное чтение.
Функция осуществляет передачу секторов с заданной области диска в буфер памяти. Перед вызовом прерывания требуется записать в регистры следующие значения:
- в АН — значение 42h;
- в DL — номер дисковода;
- в DS: SI — адрес пакета дискового адреса.
После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно прочитаны (прочитаны до того, как произошла ошибка).
Сектор диска — минимальная адресуемая единица хранения информации на дисковых запоминающих устройствах (НЖМД, дискета, CD). Является частью дорожки диска. У большинства устройств размер сектора составляет 512 байт(например, у жестких и гибких дисков), либо 2048 байт (например, у оптических дисков). Новые жесткие диски используют размер сектора 4096 байт (4 КиБ), известный как расширенный формат (Advanced Format).
Для более эффективного использования места на диске файловая система может объединять секторы в кластеры, размером от 512 байт (один сектор) до 64 кбайт (128 секторов). Переход к кластерам произошел потому, что размер таблицы FAT был ограничен, а размер диска увеличивался. В случае FAT16 для диска объемом 512 Мб кластер будет составлять 8 Кб, до 1 Гб — 16 Кб, до 2 Гб — 32 Кб и так далее.
Количество секторов на цилиндрах ранее было одинаковым, на современных дисках количество секторов на цилиндрах разное, но контроллер жёсткого диска сообщает о некоем условном количестве дорожек, секторов и сторон, хотя позднее была создана система обращения к дискам, в которой все секторы пронумерованы. Первый сектор диска обычно является загрузочным.
Существует 2 основных способа адресации секторов на диске: цилиндр-головка-сектор (англ. cylinder-head-sector, CHS) и линейная адресация блоков (англ. linear block addressing, LBA).
Правила передачи параметров дополнительным функциям.
При вызове прерывания дополнительным функциям BIOS передаются через регистры процессора следующие данные:
- в АН — номер вызываемой функции;
- в DL — номер диска;
- в DS: SI — адрес буфера, содержащего пакет дискового адреса.
Передача остальных параметров, как было уже указано выше, производится через пакет дискового адреса.
Дополнительные функции BIOS предназначены только для жестких дисков и дисководов сменных дисков большой емкости, причем функции рассчитаны на использование не более четырех устройств. Передаваемый функции номер диска, таким образом, должен находиться в диапазоне 80h-83h.
После выполнения функции в регистре АН выдается код состояния (статус возврата). Кроме принятого для классических функций BIOS стандартного набора кодов возврата, для дополнительных функций введено еще несколько кодов.
Преобразование в адресацию LBA
Преобразование CHS в LBA
Кортежи CHS можно преобразовать в адреса LBA и обратно по следующим формулам:
INT 13 h , функция 02 h . Чтение сектора.
Читает один или группу секторов с физического (не логического!) диска в память. Для начального сектора указываются абсолютные координаты (цилиндр, сектор, головка). Секторы физического диска нумеруются на каждой дорожке от 1, цилиндры нумеруются от 0, головки нумеруются от 0. Сначала идут секторы 1. n цилиндра 0, головки (поверхности) 0, затем секторы 1. n цилиндра 0, головки (поверхности) 1, далее секторы 1. п цилиндра 1, головки 0 и т.д. Таким образом, на HDD сектор 1 цилиндра 0 головки 0 относится к главной загрузочной записи ( Master boot ).
AL=число читаемых секторов
00 h . 7 Fh - гибкий диск , 80 h . FFh - жесткий диск
АL=число переданных секторов
Но для работы с HDD- дисками большого объема возможности адресации CHS стали «тормозом» и не позволяли работать с полным объемом дисков. Поэтому д ля обеспечения поддержки новых возможностей HDD в набор функций Int 13h фирмой Phoenix Technologies были введены дополнительные функции (BIOS Extensions). Дополнительные функции имеют номера 41h - 49h и 4Eh. Порядок работы с этими функциями существенно отличается от принятого для стандартных функций прерывания Int 13h.:
- вся адресная информация передается через буфер в оперативной памяти, а не через регистры;
- соглашения об использовании регистров изменены (для обеспечения передачи новых структур данных);
- для определения дополнительных возможностей аппаратуры (параметров) используются флаги.
Пакет дискового адреса.
Фундаментальной структурой данных для дополнительных функций прерывания Int I3h является так называемый «Пакет дискового адреса» (Disk Address Packet). Получив пакет дискового адреса, прерывание Int 13h преобразует содержащиеся в нем данные в физические параметры, соответствующие используемому носителю информации. Формат пакета дискового адреса описан в табл. 3.
Таблица 3. Формат пакета дискового адреса.
Организация структур на HDD для хранения информации в виде файлов.
В современных накопителях на жестких магнитных дисках значительная часть поверхности диска является служебной, эта зона скрыта и недоступна для пользователя. В этой части диска расположена служебная информация и резервная область для замены дефектных участков поверхности. Пользователь имеет доступ только к рабочей области диска, объем которой указан в технических характеристиках диска. Доступ в служебную зону возможен только в специальном технологическом режиме, который активизируется с помощью подачи специальной команды. В этом режиме возможно использование специального технологического набора команд (команды записи-чтения секторов служебной зоны, чтение карты расположения модулей и таблиц в служебной зоне, чтение таблицы зонного распределения, команды перевода из LBA в CHS и обратно, команда запуска форматирования низкого уровня, команды записи-чтения перезаписываемого ПЗУ и др.).
Использование специального технологического режима работы накопителя (аналогично тому, как это делается самими производителями HDD) делает в этом режиме работы доступными операции, которые обычно выполняются на фирме-изготовителе: восстановление формата нижнего уровня (Low-Level Format); восстановление служебной информации, хранящейся на служебных дорожках накопителя (Resident Mikrocode); восстановление или изменение параметров в паспорте диска (Identify Drv); замена дефектных секторов и дорожек на резервные или их исключение из работы накопителя (Assigne, Realocation, Skipping Defects); реконфигурация HDD путем исключения из работы неисправных областей магнитных поверхностей или отключение неисправных магнитных головок.
С точки зрения пользователя, любой диск можно представить как совокупность доступных ему блоков данных, которые он может использовать для хранения данных, для считывания или записи информации. Каждый блок данных имеет свой уникальный адрес, определяемый способом CHS (цилиндр, поверхность, сектор) или LBA (адрес логического блока). Блок данных может быть записан и считан (только целиком) независимо от других.
Но для большинства прикладных программ интерес представляет не обращение к отдельным блокам, а возможность обращения к файлам, которые могут занимать произвольное, причем, возможно, и не целое количество блоков данных. На дисках информация хранится в виде файлов. Для облегчения обращения к файлам и упорядочения использования пространства секторов диска в состав любой операционной системы входит файловая система, тесно связанная с логической структурой диска. Логическая структура и системная информация файловых систем тоже формируются на магнитной поверхности путем фиксации двоичных единиц и нолей в блоках данных секторов диска. Образованные, таким способом, на диске структуры служебных двоичных данных, позволяют адресовать и находить блоки данных и файлы на поверхности диска.
1. Служебный формат. Современные методы записи и методы кодирования позволяют надежно записывать и считывать двоичную информацию на дорожках дисков, но чтобы на дорожках появились адресуемые блоки данных, которые можно использовать для хранения, записи и считывания информации, необходимо произвести физическую разметку диска записью на все дорожки диска служебного формата. Служебный формат дорожки записывается контроллером диска при получении от процессора, выполняющего программу форматирования, команды «Форматирование дорожки». Получив из накопителя импульс «Индекс», означающий начало дорожки, контроллер выдает в тракт записи накопителя данные, являющиеся служебным форматом дорожки.
Команда «Форматирование дорожки» доступна лишь для контроллеров старых дисков, которые не используют зонной записи, при совпадении внешней геометрии с реальной. На современных дисках низкоуровневое форматирование выполняют лишь в специальном технологическом режиме. Для этого, например, могут использоваться нестандартные команды, причем для разрешения их использования могут присутствовать специальные джамперы на устройстве. Общение с винчестером в технологическом режиме может производиться и через специальный последовательный интерфейс, в качестве которого иногда используется стандартный RS-232C, что позволяет вести диалог с винчестером, например, через СОМ-порт и эмулятор терминала на персональном компьютере. В случае, когда технологические команды доступны через обычный интерфейс, производители накопителя обычно предлагают собственные утилиты низкоуровневого форматирования и обслуживания дисков (низкоуровневое форматирование не затрагивает сервоинформацию, которая записывается на поверхности лишь в заводских условиях). Низкоуровневые утилиты предназначены для конкретных моделей или семейств устройств конкретных производителей, Использование их с «чужими» дисками, как правило, блокируется (или выдается предупреждение). Обход этой блокировки обычно ведет к отказу винчестера.
В стандартном CHS-режиме осуществляется единственный пересчет секторов внутри самого жесткого диска. В таких накопителях все цилиндры содержат одинаковое количество данных, несмотря на то что длина окружности у внешних цилиндре может быть вдвое больше, чем у внутренних. В результате теряется пространство внешних дорожек, так как оно используется крайне неэффективно.
Реальная геометрия дисков с зонной записью полностью скрыта от "внешнего мира". Данные о количестве цилиндров, головок и секторов, указанные в паспортах жестких дисков, - это чисто логические параметры. Эти данные предназначены для ввода в качестве значений соответствующих параметров в BIOS и не имеют никакого отношения к физическим параметрам диска (поэтому мы не должны удивляться, когда в логических параметрах диска видим 256 головок, 1024 цилиндра и 64 сектора). При зонной записи цилиндры разбиваются на группы, которые называются зонами, причем по мере продвижения к внешнему краю диска дорожки разбиваются на все большее число секторов. Во всех цилиндрах, относящихся к одной зоне, количество секторов на дорожках одинаковое. Возможное количество зон зависит от типа накопителя; в большинстве устройств их бывает 10 и более. Еще одно свойство зонной записи состоит в том, что скорость обмена данными с накопителем может изменяться и зависит от зоны, в которой в конкретный момент располагаются головки. Происходит это потому, что секторов во внешних зонах больше, а угловая скорость вращения диска постоянна (т.е. линейная скорость перемещения секторов относительно головки при считывании и записи данных на внешних дорожках оказывается выше, чем на внутренних).
В режиме логической адресации блоков (LBA) все секторы нумеруются подряд, без разделения по трем категориям (цилиндр, головка и сектор). Сквозная нумерация начинается с сектора (CHS 0,0,1), которому присваивается логический адрес 0, и заканчивается последним физическим сектором диска.
Служебный формат разбивает дорожку на секторы, а служебный формат внутри сектора выделяет в каждом секторе блок данных (например 512 байт). После записи служебного формата на всех дорожках диска, контроллер диска и сам диск готовы к выполнению команд, задающих чтение или запись в блоки данных секторов диска. Служебный формат дорожки дисков пишется контроллером диска и нужен только контроллеру диска. Выполняя заданные процессором операции чтения или записи, контроллер диска, получив из накопителя импульс «Индекс» (начало дорожки), начинает воспринимать информацию, поступающую из тракта чтения накопителя как служебный формат дорожки. Проверяя и расшифровывая служебный формат дорожки, контроллер определяет местоположение головки на дорожке, находит, таким образом, на дорожке нужный сектор, а по служебному формату сектора находит в секторе блок данных, выполняет чтение информации из блока данных, или запись информации в блок данных, а также контроль достоверности считанных данных.
2. Разбиение на разделы. Высокоуровневое форматирование. Программа высокоуровневого форматирования записывает в блоки данных ряда начальных секторов HDD специальную служебную информацию, которая разбивает диск на разделы (логических области). Жесткий диск готовится к работе за три этапа:
- низкоуровневое форматирование диска (получили массив адресуемых блоков);
- разбиение диска на разделы (разбили массив адресуемых блоков на разделы);
- высокоуровневое форматирование каждого раздела для работы с соответствующей файловой системой (создали внутри разделов служебные структуры позволяющие сохранять информацию в разделе в виде файлов и считывать ее из радела в ОЗУ) .
Существуют два основных варианта разбиения диска на разделы:
- cтруктура служебной информации HDD (до 2 Тбайт) на основе MBR (PT - таблица разделов);
- cтруктура служебной информации HDD (до 9,4 зетабайт) на основе GPT (MBR, заголовок GPT, массив разделов GPT).
Существуют два основных варианта организации хранения информации файлов в разделах диска:
- с использоанием FAT ((таблица размещения файлов), разделы FAT32, FAT16, FAT12 и др.;
- с использоанием таблицы MFT (файл $MFT), разделы NTFS.
Принципы организации хранения файлов в разделах FAT32/16/12.
1) FAT (таблица размещения файлов) состоит из элементов (12/16/32 разряда) в которых хранится информация о порциях файла (кластерах). Каждому элементу таблицы FAT (начиная со второго) соответствует кластер в области данных с таким же номером.
2) Номер начального кластера файла указывается в каталожной строке, определяющей файл. Этот номер является и ссылкой на элемент таблицы FAT, который содержит номер следующего кластера файла, и является ссылкой на элемент таблицы FAT, который содержит номер следующего кластера файла и т. д.
3) Кластер — это непрерывная последовательность секторов (фиксированного размера). Это адресуемая «порция» файла.
4) Код в элементе таблицы FAT может еще определять свободный кластер, дефектный кластер и признак конца файла (прочитанный перед этим кластер — последний кластер файла).
5) Файл в разделе FAT — это последовательность кластеров, указанных с помощью строки каталога (номер начального кластера файла) и элементов таблицы FAT (остальные кластеры файла).
Принципы организации хранения файлов в разделах NTFS.
1. Раздел NTFS состоит из кластеров, они пронумерованы от 0 (кластер — это непрерывная последовательность секторов заданного фиксированного размера).
2. В разделе NTFS все хранится в виде файлов (каталоги, программы, данные . ). Системная нформация для работы файловой системы — хранится в виде метафайлов (системных файлов), имена их начинаются со знака $ и они недоступны пользователю с помощью обычных средств операционной системы.
3. Файл в разделе NTFS состоит из экстентов (экстент — это непрерывная последовательность кластеров различного размера. Размер экстента задается номером начального кластера и количеством кластеров в экстенте).
4. Основой для организации хранения информации в виде файлов является метафайл $MFT. Файл $MFT состоит из записей фиксированного размера (обычно 1 Кбайт), и каждая запись определяет соответствующий ей файл (либо маленький файл находится внутри записи в Атрибуте 80, либо файл состоит из экстентов, которые определяются последовательностью блоков VCN в Атрибуте 80).
5. Блок VCN содержит номер начального кластера экстента и количество кластеров в экстенте.
6. Нужную запись файла $MFT находят через каталог по имени файла. Номер записи находится в шести начальных байтах каталожного блока (имя файла находится в конце каталожного блока и занимает различное количество байтов).
Существует два основных метода, используемых для адресации (или нумерации) секторов накопителей. Первый из них называется 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.
Представьте теперь, что вы взяли восемь секторов и, не обращаясь непосредственно к физическим цилиндрам, головкам и секторам, пронумеровали их от 0 до 7. Таким образом, если необходимо обратиться к четвертому сектору накопителя, можно сослаться на него как на сектор 0,1,2 в режиме CHS или как на сектор 3 в режиме LBA. Соотношение между номерами секторов воображаемого восьмисекторного накопителя в режимах CHS и LBA приведено в табл. 1 .
Таблица 1 . Нумерация секторов в режимах CHS и LBA для воображаемого накопителя, содержащего два цилиндра, две головки и по два сектора на каждой дорожке (в общей сложности восемь секторов).
Как видно из приведенного примера, использование нумерации LBA заметно облегчает и упрощает процесс обработки данных. Несмотря на это, при создании первых ПК вся адресация BIOS и накопителей АТА была выполнена методом CHS.
Преобразования CHS/LBA и LBA/CHS
Адресация секторов может выполняться как в режиме CHS, так и в режиме LBA. Для данного накопителя существует определенное соответствие между адресациями CHS и LBA, которое, в частности, позволяет преобразовывать адреса CHS в адреса LBA и наоборот. Существует довольно простая формула, с помощью которой можно преобразовывать параметры CHS в LBA:
LBA = (((C × HPC) + H) × SPT) + S – 1.
Реверсирование этой формулы позволяет выполнить обратное преобразование, т.е. преобразовать параметры LBA в адрес CHS:
C = int (LBA/SPT/HPC),
H = int ((LBA/SPT) mod HPC),
S = (LBA mod SPT) + 1.
В этих формулах использованы следующие выражения:
- LBA — logical block address;
- C — цилиндр (cylinder);
- H — головка (head);
- S — сектор (sector);
- HPC — количество головок в каждом цилиндре (общее количество головок);
- SPT — количество секторов на каждой дорожке;
- int X — целочисленная часть X;
- X mod Y — модуль (остаток) от X/Y.
С помощью этих формул можно вычислить параметры LBA практически для любого адреса CHS и наоборот. Данный накопитель содержит 16 383 цилиндра, 16 головок и 63 сектора на каждой дорожке. Соотношение адресов CHS и LBA показано в табл. 2 .
Таблица 2 . Параметры CHS и соответствующая им нумерация секторов LBA для накопителя, содержащего 16 383 цилиндра, 16 головок и 63 сектора на каждой дорожке (общее количество секторов 16 514 064).
Программы BIOS ( когда объем HDD был очень скромным) использовали адресацию CHS, например:
Описание трансляции
Диск | BIOS | ОС и приложения | |
---|---|---|---|
Физическая геометрия Т1 | Логическая геометрия диска (CHS) | = | Трансляционная геометрия (CHS) |
Здесь присутствует только один этап трансляции T1, который является внутренним свойством винчестера. Реальная (физическая) геометрия устройства полностью невидима извне. Количества цилиндров, головок и секторов, напечатанные на этикетке для использования в программе установки параметров BIOS, никак не связаны с физическими параметрами винчестера. Логическая геометрия ограничена со стороны IDE (16 головок) и со стороны BIOS (1024 цилиндра), что в общей сложности ограничивает размер дисков (504MB).
CHS означает адресацию цилиндр-головка-сектор.
Расширенная адресация CHS (Extended CHS)
Логическая геометрия используется для обмена между диском и BIOS, тогда как другая (трансляционная) геометрия служит для обмена между BIOS и операционной системой.
Диск | BIOS | ОС и приложения | |
---|---|---|---|
Физическая геометрия Т1 | Логическая геометрия диска (CHS) | T2 | Трансляционная геометрия (CHS) |
Трансляция осуществляется в два приема — Т1 и T2. Этап трансляции T1 является внутренним свойством винчестера. Этап T2 выполняется BIOS. Эта процедура позволяет преодолеть барьер 528MB, поскольку не накладывается одновременных ограничений BIOS и IDE: логическая геометрия не позволяет использовать более 16 головок, но число цилиндров не ограничено 1024. В трансляционной геометрии - наоборот.
В большинстве BIOS расширенная CHS-трансляция обозначается как опция 'LARGE'. Отметим, что геометрия, которую вы задаете в программе установки параметров BIOS (setup), является логической геометрией, а не трансляционной.
Прерывание Int 13h, функция 42h: расширенное чтение (рис. 1).
Функция осуществляет передачу секторов с заданной области диска в буфер памяти. Перед вызовом прерывания требуется записать в регистры следующие значения:
- в АН — значение 42h;
- в DL — номер дисковода;
- в DS: SI — адрес пакета дискового адреса.
После завершения операции функция возвращает в регистре АН состояние дисковой системы. В случае аварийного завершения выполнения функции поле счетчика блоков в пакете дискового адреса содержит число блоков, которые были успешно прочитаны (прочитаны до того, как произошла ошибка).
Существует два основных метода, используемых для адресации (или нумерации) секторов накопителей. Первый из них называется 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.
Представьте теперь, что вы взяли восемь секторов и, не обращаясь непосредственно к физическим цилиндрам, головкам и секторам, пронумеровали их от 0 до 7. Таким образом, если необходимо обратиться к четвертому сектору накопителя, можно сослаться на него как на сектор 0,1,2 в режиме CHS или как на сектор 3 в режиме LBA. Соотношение между номерами секторов воображаемого восьмисекторного накопителя в режимах CHS и LBA приведено в табл. 1 .
Таблица 1 . Нумерация секторов в режимах CHS и LBA для воображаемого накопителя, содержащего два цилиндра, две головки и по два сектора на каждой дорожке (в общей сложности восемь секторов).
Как видно из приведенного примера, использование нумерации LBA заметно облегчает и упрощает процесс обработки данных. Несмотря на это, при создании первых ПК вся адресация BIOS и накопителей АТА была выполнена методом CHS.
Преобразования CHS/LBA и LBA/CHS
Адресация секторов может выполняться как в режиме CHS, так и в режиме LBA. Для данного накопителя существует определенное соответствие между адресациями CHS и LBA, которое, в частности, позволяет преобразовывать адреса CHS в адреса LBA и наоборот. Существует довольно простая формула, с помощью которой можно преобразовывать параметры CHS в LBA:
LBA = (((C × HPC) + H) × SPT) + S – 1.
Реверсирование этой формулы позволяет выполнить обратное преобразование, т.е. преобразовать параметры LBA в адрес CHS:
C = int (LBA/SPT/HPC),
H = int ((LBA/SPT) mod HPC),
S = (LBA mod SPT) + 1.
В этих формулах использованы следующие выражения:
- LBA — logical block address;
- C — цилиндр (cylinder);
- H — головка (head);
- S — сектор (sector);
- HPC — количество головок в каждом цилиндре (общее количество головок);
- SPT — количество секторов на каждой дорожке;
- int X — целочисленная часть X;
- X mod Y — модуль (остаток) от X/Y.
С помощью этих формул можно вычислить параметры LBA практически для любого адреса CHS и наоборот. Данный накопитель содержит 16 383 цилиндра, 16 головок и 63 сектора на каждой дорожке. Соотношение адресов CHS и LBA показано в табл. 2 .
Таблица 2 . Параметры CHS и соответствующая им нумерация секторов LBA для накопителя, содержащего 16 383 цилиндра, 16 головок и 63 сектора на каждой дорожке (общее количество секторов 16 514 064).
Программы BIOS ( когда объем HDD был очень скромным) использовали адресацию CHS, например:
INT 13 h , функция 02 h . Чтение сектора. Читает один или группу секторов с физического (не логического!) диска в память. Для начального сектора указываются абсолютные координаты (цилиндр, сектор, головка). Секторы физического диска нумеруются на каждой дорожке от 1, цилиндры нумеруются от 0, головки нумеруются от 0. Сначала идут секторы 1. n цилиндра 0, головки (поверхности) 0, затем секторы 1. n цилиндра 0, головки (поверхности) 1, далее секторы 1. п цилиндра 1, головки 0 и т.д. Таким образом, на HDD сектор 1 цилиндра 0 головки 0 относится к главной загрузочной записи ( Master boot ).
AL=число читаемых секторов
00 h . 7 Fh - гибкий диск , 80 h . FFh - жесткий диск
АL=число переданных секторов
Дополнительные функции BIOS Int 13h (41h - 49h и 4Eh).
Для работы с HDD- дисками большого объема возможности адресации CHS стали «тормозом» и не позволяли работать с полным объемом дисков. Поэтому д ля обеспечения поддержки новых возможностей HDD в набор функций Int 13h фирмой Phoenix Technologies были введены дополнительные функции (BIOS Extensions). Дополнительные функции имеют номера 41h - 49h и 4Eh. Порядок работы с этими функциями существенно отличается от принятого для стандартных функций прерывания Int 13h.:
вся адресная информация передается через буфер в оперативной памяти, а не через регистры;
соглашения об использовании регистров изменены (для обеспечения передачи новых структур данных);
для определения дополнительных возможностей аппаратуры (параметров) используются флаги.
Пакет дискового адреса.
Фундаментальной структурой данных для дополнительных функций прерывания Int I3h является так называемый «Пакет дискового адреса» (Disk Address Packet). Получив пакет дискового адреса, прерывание Int 13h преобразует содержащиеся в нем данные в физические параметры, соответствующие используемому носителю информации. Формат пакета дискового адреса описан в табл. 3 .
Таблица 3 . Формат пакета дискового адреса
Правила передачи параметров дополнительным функциям. При вызове прерывания дополнительным функциям BIOS передаются через регистры процессора следующие данные:
- в АН — номер вызываемой функции;
- в DL — номер диска;
- в DS: SI — адрес буфера, содержащего пакет дискового адреса.
Передача остальных параметров, как было уже указано выше, производится через пакет дискового адреса.
Дополнительные функции BIOS предназначены только для жестких дисков и дисководов сменных дисков большой емкости, причем функции рассчитаны на использование не более четырех устройств. Передаваемый функции номер диска, таким образом, должен находиться в диапазоне 80h-83h.
После выполнения функции в регистре АН выдается код состояния (статус возврата). Кроме принятого для классических функций BIOS стандартного набора кодов возврата, для дополнительных функций введено еще несколько кодов.
Читайте также: