Читать «Архитектура компьютера» онлайн - страница 88

Эндрю Таненбаум

IDE-диски

Прототипом дисков современных персональных компьютеров был диск машины IBM PC XT. Это был диск Seagate на 10 Мбайт, управляемый контроллером Xebec на встроенной карте. У этого диска было 4 головки, 306 цилиндров и по 17 секторов на дорожке. Контроллер мог управлять двумя дисками. Операционная система считывала с диска и записывала на диск информацию. Для этого она передавала параметры в регистры процессора и обращалась с вызовами к системе BIOS (Basic Input Output System — базовая система ввода-вывода), расположенной во встроенном ПЗУ. Система BIOS выдавала машинные команды для загрузки регистров контроллера, которые начинали передачу данных.

Сначала контроллер помещался на отдельной плате, а с выходом в середине 80-х годов устройств IDE (Integrated Drive Electronics — устройство со встроенным контроллером) стал встраиваться в материнскую плату. Однако схема с вызовами системы BIOS не изменилась, поскольку необходимо было обеспечить совместимость с более старыми версиями. Обращение к секторам производилось по номерам головки, цилиндра и сектора, причем головки и цилиндры нумеровались с 0, а секторы — с 1. Вероятно, такая ситуация сложилась из-за ошибки одного из программистов BIOS, который писал свой шедевр на ассемблере 8088. Имея 4 бит для номера головки, 6 бит для сектора и 10 бит для цилиндра, диск мог содержать максимум 16 головок, 63 сектора и 1024 цилиндра, то есть всего 1 032 192 сектора. Емкость такого диска составляла 504 Мбайт, и в те времена эта цифра считалась огромной (а вы бы стали сегодня осыпать упреками новую машину, неспособную манипулировать дисками объемом более 1000 Тбайт?).

Вскоре появились диски объемом более 504 Мбайт, но у них была другая геометрия (4 головки, 32 сектора, 2000 цилиндров). Операционная система не могла обращаться к ним из-за того, что схема вызовов BIOS оставалась неизменной (требование совместимости). В результате контроллеры начали выдавать фиктивную информацию — они «притворялись», что геометрия диска соответствует указанной в BIOS, тогда как в действительности виртуальная геометрия просто накладывалась на реальную. Хотя этот метод работал, он затруднял работу операционных систем, которые размещали данные на диске определенным образом для сокращения времени поиска.