MS-DOS для программиста

Фактор чередования


Начнем с фактора чередования .

Первое, что вам следует сделать с НМД нового компьютера (или с новыми дисками, установленными в старом компьютере) - выполнить низкоуровневую инициализацию или, другими словами, низкоуровневое форматирование . Эта процедура не нужна, если такое форматирование уже выполнено. Как правило, современные компьютеры оборудуются НМД с интерфейсом IDE , низкоуровневая инициализация которых выполняется только на заводе-изготовителе.

Для выполнения низкоуровневой инициализации вы должны запустить специальную программу, находящуюся на дискете, которая поставляется вместе с вашим жестким диском, или соответствующий модуль базовой системы ввода/вывода BIOS.

Ни одна из команд операционной системы MS-DOS не может выполнить низкоуровневую инициализацию жесткого диска. Даже программа format.com не поможет вам в этом. Для инициализации диска на низком уровне вам не обойтись без специально предназначенных для этого программ.

Что делает программа низкоуровневой инициализации?

Как мы уже говорили, блоки данных, записанные на дорожках, содержат служебную информацию. Например, для каждого блока в области служебной информации записывается его порядковый номер, равный номеру соответствующего сектора данных. Эта структура магнитной дорожки формируется во время процедуры низкоуровневого форматирования.

Обратите внимание: низкоуровневое форматирование (или низкоуровневая инициализация , что одно и то же) формирует логическую структуру дорожки. Дорожка разделяется на секторы, для каждого сектора записывается служебная информация. Область данных размером 512 байт обычно заполняется значением 0E6h. Низкоуровневое форматирование выполняется для всех имеющихся дорожек.

Дискеты инициализируются программой format.com . Эта программа выполняет низкоуровневое форматирование только для дискет. Накопители на жестких магнитных дисках форматируются на низком уровне при помощи специальных программ.

Теперь можно перейти к фактору чередования.

Смысл фактора чередования очень прост - он равен количеству оборотов диска, за которое можно последовательно в порядке возрастания номеров секторов прочитать одну дорожку. Если секторы расположены подряд в порядке возрастания номеров, при достаточном быстродействии контроллера диска можно прочитать дорожку за один оборот диска. Если фактор чередования равен двум, потребуется два оборота.


Обычно секторы на дорожке располагаются в порядке возрастания их порядковых номеров. Сначала идет первый сектор, за ним второй и так далее. Предположим теперь, что программа желает прочитать с диска два сектора, имеющих соседние порядковые номера, например, первый и второй.

Во время процедуры чтения контроллер диска устанавливает головки на нужную дорожку и начинает сканировать подряд все секторы для того чтобы найти нужный. В нашем случае этот сектор имеет первый номер. При поиске контроллер пользуется номером сектора, записанным в области служебной информации.

После того как головка окажется над искомым сектором, начинается процесс считывания данных (512 байт) и записи этих данных в оперативную память компьютера. Как только все данные записаны в память, компьютер выдает контроллеру команду чтения следующего сектора (в нашем случае это сектор с номером два).

Однако пока контроллер записывал данные в память компьютера, пока компьютер выдавал команду на чтение следующего сектора, диск, разумеется, продолжал вращаться! И если производительность контроллера диска недостаточна, к моменту начала чтения второго сектора головка уже может проскочить управляющую запись второго сектора. Поэтому следующий сектор, который обнаружит контроллер, будет иметь номер три.

Теперь контроллер будет ждать, пока диск повернется на один оборот, и только затем он сможет прочитать второй сектор. Таким образом, если программа будет читать несколько секторов с последовательными номерами (а она обычно так и делает) на чтение каждого сектора будет затрачено время, равное времени оборота диска!

Например, если дорожка диска содержит 17 секторов, для чтения всей дорожки потребуется 17 оборотов диска вместо одного.

Как можно улучшить временные характеристики?

Например, можно располагать секторы через один. В таком случае после чтения одного сектора будет достаточно времени для чтения следующего, и вся дорожка может быть считана за 2 оборота диска. Это уже намного лучше.

Описанная выше ситуация встречается особенно часто на малопроизводительных компьютерах IBM PC/XT и IBM PC/AT с контроллером ST506/412 . Поэтому если вы пользуетесь таким компьютером, не упускайте случая увеличить производительность диска в несколько раз.



Если же у вас современный диск с высокопроизводительным контроллером IDE или SCSI , можно забыть про фактор чередования : эти контроллеры обладают достаточным быстродействием.

Кроме того, современные дисковые контроллеры содержат, как правило, быстродействующий электронный буфер, в который синхронно с вращением диска копируется информация, прочитанная с дорожки. Запись информации на диск также выполняется с использованием промежуточного буфера. Поэтому при низкоуровневом форматировании необходимо задавать фактор чередования равным единице - такой контроллер всегда успеет прочитать или записать всю дорожку за один оборот диска.

А что делать, если НМД вашего компьютера уже используется и содержит важные данные, которые вам не хотелось бы терять в результате выполнения низкоуровневого форматирования? Есть выход и из этой ситуации. Существуют программы, позволяющие изменить фактор чередования диска без потерь записанной на нем информации. Это такие программы, как CALIBRAT из пакета Norton Utilities и утилита SPINRITE.

Далее в этой главе мы расскажем о том, как определить в каждом конкретном случае оптимальное значение фактора чередования и оптимизировать диск по этому параметру. А сейчас продолжим перечисление причин, по которым обычно снижается производительность дисковой подсистемы компьютера.


Содержание раздела