PROGRAM7847.PAS

{* Программирование дисковых подсистем: возможности *}

(* 01.11.2013 06:15:01 *)
Program PROGRAM7847;
Begin
 writeln('
Для прикладных программистов разница между дисковыми, пакетными и ленточными устройствами невелика: они работают с ними на файловом уровне. Этот файловый уровень обеспечивает операционная система с помощью API вызовов. Во времена MS-DOS API можно было выбирать – либо пользоваться прерыванием 21h MS-DOS, либо разбираться в API BIOS с прерыванием 13h.
Эти способы хороши, но не дают возможности прямого взаимодействия с диском. К примеру, если нужно найти на нем сложные ошибки, проверить таблицы S.M.A.R.T или перезалить новую прошивку для винчестера. Кроме того, все высокоуровневые операции очень медленные.

Возможно, вы знаете, что винчестер устроен подобно автономному компьютеру: у него есть свой процессор, контроллер управления механикой, свои прерывания и т.д. У него даже есть своя файловая система, скрытая на специально отведенных дорожках и недоступных пользователю. Там хранятся операционная система, таблицы дефектов секторов, таблицы перемещений данных, программы трансляции адресов и другие настройки. Большая часть этих данных предназначена для тестирования диска, поэтому многие техники желали бы добраться до этих привлекательных возможностей. С внешним миром винчестер связан портами данных и состояния, через которые посылаются команды и принимается ответ. Чтобы Windows не мешал процессам, связанным с синхронизацией по времени, программы обслуживания дисков часто пишут для режима «чистой» MS-DOS. Наших клиентов ждет с интересной информацией. 

Списки команд жесткого диска не являются тайной и описаны в стандарте ATA/ATAPI (сейчас версии 7). Грубо говоря, ATA относится к винчестерам, а ATAPI – к оптическим накопителям и другим пакетным устройствам. Каждая команда обычно предваряется подготовкой буфера: при записи в него записываются лишь команды управления, а при чтении буфер заполняется данными или ответами контроллера. Нет смысла говорить, что такой способ дает больше возможностей для исследователя проблем, не говоря уже о скорости. Так, к примеру, работает известная программа MHDD.
Кроме обращения к портам, есть и другая возможность: устаревший интерфейс int 13h уже давно обрел функции расширения (int 13h Extentions), который позволяет работать с последовательными секторами в стандарте LBA – во многих случаях его будет достаточно для практических целей.
Работу с портами ничем не заменить, если требуется смена прошивок, которые и являются теми самыми «секретными» файлами. Для работы с ними нужно знать секретные суперкоманды, которые производитель доверяет лишь официальным сервис-партнерам. Знание этих команд позволяет совершать с дисками настоящие чудеса: проводить полные циклы тестирования, увеличивать и уменьшать размеры диска, скрывать битые дорожки и т.д.
'
);
End.