Пятница, 19.04.2024, 13:14

Все о компьютерах

Online игры

Здравствуйте, Гость
  • IP: 52.14.253.170
  • Браузер:
  • PDA: Нет
Афоризм
Форма входа
Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 30
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


CHS

     Название этого способа адресации данных на дисках образовано из первых букв названий компонентов, входящих в состав дискового адреса, заданного этим способом: Cylinder, Head, Sector, то есть «цилиндр», «головка», «сектор». Эта система широко применялась в вычислительных машинах 1970-х годов (в частности, в мини-ЭВМ фирмы DEC), откуда и перекочевала на ПК. Приводимые ниже сведения относятся главным образом к жёстким дискам, однако в целом применимы и к гибким дискам (об их особенностях говорится в конце).

     Информация записывается на магнитный диск и считывается с него с помощью магнитной головки, причём головка может перемещаться, останавливаясь на разном расстоянии от центра диска в определённых позициях. Чтение и запись информцаии возможны только при неподвижной головке, поэтому информация располагается на диске в виде ряда окружностей — так называемых дорожек (track).

     Информацию можно хранить на обеих сторонах диска. Более того, возможно объединение в один пакет нескольких дисков («блинов»), вращающихся на общем шпинделе; такие диски, называемые пакетными, были широко распространены в 1960-80-х годах, пока не были вытеснены привычными нам «винчестерами» (которые, впрочем, тоже могут состоять из нескольких дисков). Для чтения и записи информации с разных сторон используются отдельные головки, перемещаемые, однако, как единое целое. Совокупность всех дорожек, доступных при неподвижных головках, называется цилиндром (cylinder). Номера цилиндра и головки являются двумя первыми компонентами дискового адреса в формате CHS.

     Информация на дорожках хранится блоками или секторами фиксированного размера; стандартом де-факто является размер 512 байт. Номер сектора на дорожке является последним компонентом адреса в формате CHS. Заметим, что фиксированный размер технически не является обязательным; так, в мэйнфреймах IBM использовалась иная система, с переменной длиной блока, что позволяло эффективнее использовать дисковое пространство, но усложняло выполнение операций ввода-вывода; такая система сокращённо обозначалась CKD (Count, Key, Data) — по первым буквам названий разных областей, входящих в состав одного блока.

     Нумерация цилиндров и головок на ПК ведётся с нуля, нумерация секторов — с единицы. Вероятно, такая нелогичная система была унаследована от системы CKD, в которой нулевой сектор был предназначен для хранения служебной информации о дорожке, а собственно информационные секторы начинались с первого.

     При создании IBM PC разработчики BIOS весьма жёстко ограничили разрядность перечисленных выше компонентов дискового адреса: номер цилиндра должен был умещаться в 10 бит, номер головки — в восемь, номер сектора — в шесть. Таким образом, суммарная длина дискового адреса в формате CHS составляет 24 бита, что при размере сектора в 512 байт ограничивает ёмкость диска величиной 7,875 Гбайт (до 8 Гбайт ёмкость не дотягивает из-за начала нумерации секторов с 1, из-за чего на каждой дорожке может находиться не более 63 секторов; заметим, что обычно приводимая цифра в 8,4 Гбайта выражена в «десятичных гигабайтах», то есть в миллиардах байт, мы же пользуемся более правильными с точки зрения компьютера «двоичными» единицами измерения ёмкости). Дисковый интерфейс IDE, получивший широкое распространение с появлением компьютеров IBM PC/AT и вытеснивший существовавшие до него интерфейсы, отводил под те же компоненты адреса иное количество разрядов: 16 бит под номер цилиндра, 4 бита под номер головки и 8 бит под номер сектора (в сумме 28 бит), что в сумме давало объём до 126 Гбайт (137 «десятичных гигабайт»).

     Первые жёсткие диски и BIOS требовали, чтобы номера цилиндра, головки и сектора, передаваемые программой функциям традиционного дискового сервиса BIOS, совпадали с физическими номерами этих сущностей на диске. Из-за этого ёмкость дисков неоправданно ограничивалась. Например, разместить в небольшом корпусе «винчестера» восемь «блинов», позволяющих использовать 16 головок, допускаемых размером поля номера головки дискового адреса для интерфейса IDE, физически невозможно. В то же время прогресс технологии магнитной записи очень быстро позволил записывать на одной дорожке более 63 секторов — но это было бессмысленно, поскольку BIOS ограничивал размер поля номера сектора величиной 6 бит. Совокупные ограничения BIOS и контроллера IDE приводили к тому, что максимальная ёмкость диска даже в теории не могла превышать 504 Мбайта (размер адреса 20 бит; часто приводимая величина 528 Мбайт выражена в «десятичных мегабайтах»), ну а на практике в силу указанных физических ограничений была ещё меньше.

     Первым шагом для преодоления этого ограничения стал отказ от требования точного соответствия номеров, используемых в программах (логических дисковых адресов), физическим номерам цилиндров, головок и секторов. Этого добились, возложив на контроллер диска (микросхему или набор микросхем, располагающихся на самом дисководе; не следует путать контроллер диска с контроллером IDE — последний является лишь посредником между системной шиной компьютера с одной стороны и контроллером диска с другой) задачу перекодировки логических адресов в физические. Однако совместные ограничения на число бит, отводимых под каждый компонент адреса, остались (10 бит под номер цилиндра, 4 бита под номер головки и 6 бит под номер сектора, всего 20 бит), из-за чего реально доступную программам ёмкость дисков удалось поднять только до 504 Мбайт.

     Вскоре, однако, инженеры осознали, что дисковый адрес можно «искривлять». Напомним, что номер головки с точки зрения BIOS имеет размер 8 бит, а с точки зрения контроллера IDE — только четыре, зато контроллер поддерживает большую разрядность номеров сектора и цилиндра, чем BIOS (8 и 16 бит против 6 и 10 соответственно). Известный разработчик BIOS фирма Phoenix Technologies предложила использовать два младших бита номера головки, используемого функциями традиционного дискового сервиса BIOS, в качестве двух старших разрядов номера сектора, передаваемого контроллеру IDE, а два старших бита номера головки — в качестве двух младших битов номера цилиндра. Этот нехитрый трюк позволил использовать диски ёмкостью до 7,875 Гбайт — предельной величины, поддерживаемой дисковыми функциями BIOS, использующими адресацию CHS.

     На этом совершенствование адресации CHS прекратилось, и дальнейший рост объёма дисков был обеспечен переходом на новые функции, использующие другой способ адресации — LBA. Что же касается CHS, то использующие этот способ адресации функции BIOS до сих пор применяются для доступа к гибким дискам (где альтернативы им нет) и могут использоваться при обращении к другим типам дисков (жёстким, оптическим, флэш-накопителям), но с указанным выше ограничением на максимальный доступный объём носителя информации.