MS-DOS для программиста© Александр Фролов, Григорий ФроловТом 19, М.: Диалог-МИФИ, 1995, 253 стр. 6.2. Увеличение быстродействия дисковой памятиПроизводительность дисковой системы очень сильно влияет на общую производительность компьютера. После оптимизации дисковой памяти вы с приятным удивлением обнаружите, что многие программы стали работать заметно быстрее. Поэтому мы начнем именно с оптимизации дисковой системы, а затем расскажем о настройке других систем компьютера. Почему диск работает медленноПрежде чем приводить рекомендации по увеличению быстродействия дисковой системы, мы расскажем вам об основных причинах, приводящих к замедлению работы дисков. Их может быть несколько:
Каждая из приведенных выше причин сама по себе может привести к замедлению работы дисковой памяти или отдельных программ в несколько раз! А если у вас комбинация нескольких или всех неблагоприятных факторов? В этом случае даже современные быстродействующие накопители будут по скорости напоминать диски первых моделей IBM PC/XT. Фактор чередованияНачнем с фактора чередования . Первое, что вам следует сделать с НМД нового компьютера (или с новыми дисками, установленными в старом компьютере) - выполнить низкоуровневую инициализацию или, другими словами, низкоуровневое форматирование . Эта процедура не нужна, если такое форматирование уже выполнено. Как правило, современные компьютеры оборудуются НМД с интерфейсом 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. Далее в этой главе мы расскажем о том, как определить в каждом конкретном случае оптимальное значение фактора чередования и оптимизировать диск по этому параметру. А сейчас продолжим перечисление причин, по которым обычно снижается производительность дисковой подсистемы компьютера. Сдвиг цилиндровПредположим, ваша программа считывает (или записывает) большой файл, занимающий на диске несколько цилиндров (цилиндром называется совокупность дорожек диска, расположенных друг над другом). Что происходит в тот момент, когда завершается чтение последней дорожки текущего цилиндра? Теперь надо установить головки на нулевую дорожку следующего цилиндра. Очень хорошо, контроллер выдает соответствующую команду, головки устанавливаются на другой цилиндр и начинается поиск первого сектора нулевой дорожки. Но пока головки перемещались, диск повернулся и головки проскочили мимо первого сектора. Теперь надо ждать, пока диск повернется на один оборот и первый сектор окажется снова напротив блока головок. Здесь мы неявно предполагали, что все дорожки на всех цилиндрах расположены как бы параллельно, то есть первые секторы на всех дорожках для всех цилиндров располагаются на одинаковом расстоянии от маркера начала дорожки. Некоторые НМД, в частности, использующие интерфейс ESDI , можно отформатировать "со сдвигом цилиндров" (Cylinder Skew ). В этом случае цилиндры, расположенные ближе к центру, будут сдвинуты вперед по направлению вращения относительно внешних цилиндров. При переходе от одного цилиндра к другому головки успеют как раз к началу следующей дорожки, то есть к первому цилиндру. И если величина сдвига выбрана правильно, дополнительный оборот диска не потребуется. Сдвиг головокАналогичные проблемы возникают и при переключении головок, то есть при переходе с одной дорожки на другую в пределах одного цилиндра. Если переключение головок происходит медленно, а первый сектор дорожки расположен близко относительно маркера начала дорожки, головка может проскочить первый сектор дорожки. Потребуется еще один дополнительный оборот диска, и это будет так при каждом переходе с одной дорожки на другую. Для выбора правильного расположения первого сектора некоторые программы низкоуровневого форматирования позволяют задавать сдвиг головок (Head Skew ) относительно маркера дорожки. Фрагментация файловДля того чтобы понять причины появления фрагментированных файлов, нам необходимо вспомнить основы логической структуры файловой системы MS-DOS. Мы уже говорили о том, что физически информация на диске храниться в секторах, которые для MS-DOS имеют размер 512 байт. Сектор - минимальный элемент данных, читаемый с диска или записываемый на диск. Для работы с файлами операционная система MS-DOS пользуется элементами данных, называемых кластерами. Кластер - это просто совокупность секторов, имеющих смежные номера. Кластер может состоять из одного сектора (для дискет) или содержать несколько секторов (для жесткого диска). Операционная система выделяет для файлов, которые записываются на диск, некоторое количество кластеров, в зависимости от размера файла. Если файл маленький (например, в нем всего один или два байта), выделяется один кластер. Это, в частности, означает, что при размере кластера, равном 8 секторам, для хранения файла размером в один байт используется 4 Кбайт дисковой памяти. Где же располагаются кластеры, выделяемые файлу? Номер первого кластера, выделенного файлу, хранится в дескрипторе файла, то есть в каталоге. Для выделения остальных кластеров можно использовать две стратегии. В первом случае можно было бы выделять для каждого файла необходимое количество кластеров, расположенных рядом. Однако в процессе работы с диском при записи и удалении файлов разного размера на диске появятся свободные и занятые области разной длины. Рано или поздно наступит такой момент, когда для записи нового файла операционная система не сможет найти свободный участок достаточной длины, несмотря на то, что суммарная длина свободных областей на диске будет превышать длину записываемого файла. В этом случае можно говорить о сильной фрагментации свободного пространства на диске. Получается ситуация, когда на диске есть много свободного места, но оно разделено на много участков маленького размера. Операционная система MS-DOS поступает по-другому. Для нового файла распределяются любые свободные кластеры, даже если они расположены в разных местах диска. Для каждого файла MS-DOS хранит номера всех занимаемых им кластеров в специальной таблице - таблице размещения файлов FAT . Таблица размещения файлов FAT содержит элементы для каждого кластера, который есть на диске. Эти элементы могут хранить определенные значения, характеризующие состояние соответствующего кластера. Например, свободный кластер отмечается нулевым значением. После форматирования диска программой format.com все кластеры, предназначенные для хранения файлов, помечаются в FAT как свободные. В процессе записи на диск нового файла в FAT записываются номера всех кластеров, распределенных данному файлу. Эти номера хранятся в виде односвязного списка. Список строится следующим образом. Перед началом записи нового файла на диск MS-DOS просматривает FAT и находит первый свободный кластер. Номер этого кластера записывается в дескриптор файла. Далее в секторы этого кластера записываются данные. Если файл короткий и помещается целиком в один кластер, после записи данных в элемент FAT, соответствующий первому кластеру, записывается специальное значение, означающее конец цепочки кластеров (0FFFFh или 0FFFh в зависимости от типа FAT). Если же длина файла больше размера одного кластера, MS-DOS ищет следующий свободный кластер, который может оказаться в любом месте диска. Номер найденного свободного кластера записывается в элемент FAT для первого кластера, распределенного файлу. Таким образом, элемент FAT, соответствующий первому кластеру будет содержать ссылку на второй кластер, распределенный файлу. Ссылка представляет собой просто порядковый номер следующего кластера. По мере того как файл записывается на диск, MS-DOS формирует в FAT список кластеров, распределенных файлу. В элементе FAT, соответствующему последнему кластеру, распределенному файлу, записывается число, означающее конец цепочки кластеров. При удалении файла все кластеры, принадлежащие файлу, помечаются как свободные - в соответствующие элементы FAT записывается нулевое значение. В каталоге первая буква имени файла заменяется на русскую букву "х" (в альтернативной кодировке символов). Это означает, что файл удален. Те кластеры, которые раньше занимал удаленный файл, становятся доступными для записи новых файлов. Такой метод хранения файлов позволяет использовать все имеющееся на диске свободное место, так как если длина записываемого файла больше, чем размеры непрерывных свободных участков, то файл просто расположится в нескольких несмежных участках. Однако при использовании описанного выше метода файл становится фрагментированным - он как бы "размазан" по диску. К чему это может привести? К тому, что для доступа к файлу необходимо перемещать магнитные головки от одного участка файла к другому. А на это требуется время, и весьма значительное. Реально время чтения сильно фрагментированного файла по сравнению с файлом, занимающим непрерывную область на диске, может отличаться в несколько раз! Внешне это выглядит так, как будто программа стала работать в несколько раз медленнее, при этом наблюдается интенсивное перемещение головок диска от одного участка файла к другому. Существуют различные методы дефрагментации диска. Наиболее очевидный и наименее удобный - выгрузка всего диска на дискеты или стример, форматирование диска и восстановление всех файлов, соответственно, с дискет или стримера. Лучше всего использовать специальные программы, такие как defrag.exe , входящую в состав MS-DOS или speedisk.exe из пакета утилит Нортона. БуферизацияЕще один путь к увеличению быстродействия дисковой системы лежит в использовании буферизации ввода/вывода. Что здесь имеется в виду? Пусть нам надо скопировать некоторый, достаточно большой файл и этот файл располагается в начале диска, в области первых нескольких цилиндров. Пусть копия файла будет располагаться в конце диска (например, потому, что там имеется свободное пространство). Как можно копировать файл? Мы уже говорили, что наименьший элемент данных, который может быть прочитан с диска или записан на диск - это сектор длиной 512 байт. Можно копировать файл по секторам. Для этого сначала надо прочитать первый сектор первого кластера исходного файла, затем записать сектор в первый сектор первого кластера нового файла. Затем надо прочитать второй сектор первого кластера и записать прочитанные данные во второй сектор нового файла. И так далее до конца файла. Однако после чтения каждого сектора необходимо переместить головки в конец диска для записи в сектор нового файла, а затем переместить головки снова в начало диска. При этом головки диска будут постоянно перемещаться от первых цилиндров к последним и обратно. Сколько копируется секторов, столько будет перемещений! А так как перемещение блока головок - длительный процесс, может получится так, что время, затраченное на перемещение, будет гораздо больше времени, затраченного собственно на чтение и запись данных. Очевидный способ увеличить скорость копирования файла заключается в том, чтобы копировать файл блоками большого размера. При этом вначале программа копирования прочитает часть файла в некоторый внутренний буфер, расположенный в оперативной памяти, затем переместит блок головок в конец диска и запишет содержимое буфера в выходной файл. Чем больше будет размер буфера, тем меньше будет затрачено времени на перемещение головок и тем быстрее будет копироваться файл. Операционная система MS-DOS имеет специальные средства для управления процессом буферизации ввода/вывода. Кэширование дисковой памятиВо время работы операционная система и прикладные программы часто обращаются к одним и тем же файлам или к одним и тем же областям диска. Например, практически постоянно происходит обращение к таблице размещения файлов FAT , к каталогам используемых дисков. Системы управления базами данных могут часто обращаться к одним и тем же записям базы данных, к словарям или вспомогательным рабочим файлам. Можно привести много примеров, когда в процессе работы программы происходит частое обращение к одним и тем же областям диска, или даже к одним и тем же секторам диска. Напрашивается мысль - нельзя ли некоторые, наиболее часто используемые секторы диска прочитать один раз в оперативную память и затем пересылать программам содержимое этих секторов непосредственно из памяти, без выполнения операций чтения диска? При этом когда программе в первый раз потребуется содержимое, скажем, таблицы FAT , ее можно считать в некоторый буфер. Когда эта таблица потребуется еще раз, ее не надо читать с диска, так как она уже находится в оперативной памяти. Разумеется, если программа записывает новые данные в считанные и размещенные в буфере секторы, эти секторы необходимо записать на диск. Запись можно выполнить сразу, по истечении заданного времени или во время простоев процессора, когда компьютер не занят выполнением полезной работы. Описанный выше механизм хранения в оперативной памяти наиболее часто используемых секторов диска называется кэшированием дисковой памяти или просто кэшированием диска. Существуют различные способы организации кэширования диска в MS-DOS. Все они реализуются специальными драйверами, которые необходимо подключать в файлах config.sys или autoexec.bat. Схематически реальный алгоритм кэширования дисковой памяти выглядит так. В области оперативной памяти выделяется некоторое пространство для хранения содержимого секторов диска - буфер кеша. Вначале вся эта область свободна. Когда программа начинает работать с диском, затребованные ею секторы копируются в буфер кеша. Теперь если программе нужен сектор, драйвер кеша проверяет, нет ли его в буфере кеша. Если есть, физическое чтение диска не выполняется, программа пользуется копией сектора из буфера. Если требуемого сектора в буфере кеша нет, он читается с диска и записывается в буфер кеша, например, на место самого "старого" сектора данных. То есть на место сектора, к которому давно не было обращений. Таким образом, новая информация вытесняет из кеша старую. Разумеется, если в буфере кеша есть свободное место, никакого вытеснения не происходит, сектор просто записывается в буфер. Кэширование диска для некоторых программ дает увеличение быстродействия в несколько раз. Еще одна область, в которой желательно применение кэширования - базы данных. Если вы обратились к какой-либо записи базы данных, в первый раз она будет считана с диска и на это может уйти весьма ощутимое время. В следующий раз эта запись появится на экране сразу, так как она уже прочитана в оперативную память. Физически кеш диска обычно реализуется с использованием расширенной или дополнительной оперативной памяти. Чем больше размер области памяти, отведенной для буфера кеша, тем больше вероятность того, что требуемый сектор уже хранится в памяти и его не надо заново считывать с диска. Электронный дискЕсли в вашем компьютере имеется расширенная или дополнительная память, вы можете организовать так называемый электронный диск . Подключив в файле config.sys драйвер ramdrive.sys , поставляемый вместе с операционной системой MS-DOS, вы получите дополнительный псевдодиск, организованный в оперативной памяти. От обычного диска он будет отличаться значительно более высоким быстродействием. Так как данные, записанные на электронный диск , хранятся в оперативной памяти, при выключении питания компьютера содержимое электронного диска будет потеряно. Электронный диск больше всего подходит для хранения временных и рабочих файлов, так как после выключения питания компьютера (в том числе после аварийного отключения питающей сети) содержимое этих дисков пропадает. Однако более предпочтительным и удобным способом увеличения производительности дисковой системы компьютера является кэширование. Кэширование увеличивает скорость работы с файлами, расположенными на всех дисках. Вам не надо заботиться о том, чтобы наиболее часто используемые файлы находились на электронном диске. Переменная среды PATHВам, наверное, известно назначение переменной среды PATH , устанавливаемой в файле autoexec.bat: эта переменная служит для перечисления путей доступа к каталогам, содержащим запускаемые программы. Например: PATH = c:\;c:\dos;c:\norton;d:\borlandc\bin;e:\word; Когда в ответ на системное приглашение MS-DOS вы набираете имя программы, MS-DOS вначале ищет эту программу в текущем каталоге, а затем в каталогах, перечисленных в переменной среды PATH . Допустим, вы желаете запустить текстовый процессор Microsoft Word. Для этого вы набираете: word и нажимаете клавишу <Enter>. Если переменная PATH установлена так, как в нашем примере, то после просмотра текущего каталога командный процессор в процессе поиска программы word.exe просмотрит корневой каталог диска c:, каталог, содержащий операционную систему MS-DOS c:\dos, каталоги c:\norton и d:\borlandc\bin, и, наконец, каталог e:\word. Здесь и располагается искомая программа. Для запуска текстового процессора потребуется некоторое время. Это время будет затрачено, в частности, и на просмотр перечисленных каталогов, находящихся на разных дисках. Вы можете ускорить запуск программ, правильно расположив каталоги в определении переменной PATH . Такое ускорение заметно, если в компьютере установлен медленный диск с большим временем позиционирования головок. Каталоги, которые содержат наиболее часто запускаемые программы, целесообразно размещать в левой части определения PATH . Например, если вы постоянно запускаете Norton Commander и текстовый процессор Microsoft Word, а транслятором Borland C пользуетесь эпизодически, рекомендуется преобразовать приведенную выше строку следующим образом: PATH = c:\;c:\norton;e:\word;d:\borlandc\bin;c:\dos; Корневой каталог c:\ мы поместили в левой части потому, что в этом каталоге описан командный процессор COMMAND.COM, нужный для запуска любых программ. Утилиты MS-DOS обычно используются редко, поэтому мы поместили их в правой части строки. Расположение файловВ некоторых случаях на скорость работы программы сильно влияет расположение файлов на диске или на дисках (если компьютер оборудован несколькими накопителями на магнитных дисках). Мы уже рассказывали вам о проблемах, связанных с перемещениями блока магнитных головок НМД при копировании файлов. Ситуация будет еще более серьезной, если выполняется не копирование, а, например, слияние двух файлов в один. При этом головки будут перемещаться уже между тремя зонами диска. Если ваш компьютер имеет несколько НМД, имеет смысл располагать одновременно используемые файлы на разных устройствах. Копирование файла с одного НМД на другой будет выполняться быстрее, чем копирование в пределах одного НМД. Это связано с тем, что на каждом НМД головки будут перемещаться только в пределах одного файла. Дополнительное время на перемещение головок между файлами не потребуется. Рабочие или временные файлы целесообразно располагать на отдельном НМД, желательно обладающем наибольшим быстродействием. Настройка дисковой системыВ этом разделе мы приведем конкретные сведения об основных приемах оптимизации и опишем некоторые программы, которые специально предназначены для оптимизации дисковой системы. Оптимизация фактора чередованияРеально можно использовать два метода выбора правильного значения для фактора чередования :
Метод подбораПри использовании этого метода вам предлагается попробовать по очереди все значения фактора чередования с измерением производительности диска. Преимущество метода: не требуются специальные программы оптимизации фактора чередования . Недостатки: большие затраты времени, необходимость полной предварительной выгрузки содержимого НМД. Рекомендуем следующую последовательность действий:
Как видите, процедура достаточно длительная, она может отнять у вас целый день. Кроме того, потребуется множество дискет для выгрузки диска. Но зато в результате вы можете получить значительную прибавку в скорости работы диска. Существует два способа выполнить низкоуровневое форматирование НМД. Первый способ предполагает использование специальных программ форматирования. Вместе с компьютером всегда продается дискета, содержащая средства инициализации НМД и описание к ней. Самое лучшее - воспользоваться такой дискетой и следовать инструкции по форматированию, приведенной в описании. Второй способ основан на использовании процедуры инициализации диска, записанной в микросхеме постоянного запоминающего устройства ROM (Read Only Memory - только читаемая память), располагающейся в BIOS или в контроллере диска. Этот способ пригоден не для всех контроллеров, так как не все контроллеры содержат ROM. Подробности вы сможете узнать из документации на ваш дисковый контроллер, там же приведены все необходимые сведения о работе с программой форматирования, записанной в ROM. Программа инициализации hdinitВ качестве примера мы рассмотрим программу низкоуровневого форматирования hdinit и способ запуска программ форматирования, находящиеся в ROM . Однако надежнее всего пользоваться документацией, поставляющейся с вашим контроллером, так как существует очень много разных типов контроллеров, имеющих свои особенности, в том числе в части низкоуровневого форматирования. Самая простая утилита низкоуровневого форматирования - hdinit. Запустите ее (предварительно выгрузив диск) с параметром C: для первого НМД или с параметром D: для второго НМД. Например: hdinit c: Программа hdinit сообщит вам имя и физический адрес инициализируемого НМД (в нашем случае инициализируется диск drive c:, его адрес - 80H), количество цилиндров (cylinders), головок (heads), секторов на трек (sector/track) и другие параметры (рис. 6.3). Далее программа сообщит вам, что она уничтожит все данные, находящиеся на диске и спросит, желаете ли вы продолжить работу. На этот вопрос вы отвечаете "y", если желаете инициализировать диск и "n" в противном случае.
Рис. 6.3. Программа hdinit На второй вопрос - Scan for existing defective tracks (y/n) (желаете ли вы просмотреть существующие дефектные дорожки) - ответьте "n". Продолжение диалога можно увидеть на рисунке 6.4.
Рис. 6.4. Последнее предупреждение перед началом форматирования Сперва программа выведет на экран список дефектных дорожек диска в формате цилиндр/головка (если на диске имеются дефектные дорожки). Вы сможете пополнить список дефектных дорожек, если введете их номера в аналогичном формате, или исключить дорожки из списка дефектных, если укажите адрес дорожки в формате "-цилиндр/головка". Если дефектных дорожек нет, просто нажмите клавишу <Enter>. На следующий вопрос (Is the list OK?) надо ответить "y". Далее программа спросит вас, использовать ли при форматировании значение фактора чередования , равное трем (Use interleave factor of 3 (y/n)? ). На этот вопрос надо ответить "n", если, конечно, вы и в самом деле решили использовать другой фактор чередования . После этого программа попросит вас ввести новое значение для фактора чередования (ENTER new interleave factor (2...8)). На рисунке было введено значение 4. Для подтверждения на следующий вопрос (Use interleave factor of .. (y/n)?) необходимо ответить "y". Последний вопрос - это самое последнее предупреждение, которое программа выдает перед тем, как начать форматировать диск (LAST CHANCE: Continue with initialization (y/n)?). Мы ответили на этот вопрос "n", и на этом работа программы закончилась. Если же вам надо начать инициализацию, ответьте "y". На экране будет отображаться процесс форматирования. Он может продолжаться несколько десятков минут. Инициализация программой, записанной в ПЗУ контроллераРассмотрим теперь способ низкоуровневого форматирования НМД при помощи программы, записанной в ПЗУ дискового контроллера. Мы уже говорили о том, что этот способ будет работать не для всех типов контроллеров. Вначале запустите программу-отладчик debug.exe , входящую в состав MS-DOS: c:\>debug В ответ на приглашение отладчика введите: -g=c800:5 Запустится программа низкоуровневого форматирования. Она будет задавать вопросы, аналогичные тем, что задает программа hdinit. Вам необходимо установить правильное значение для фактора чередования . Если программа форматирования не запустилась, попробуйте вместо адреса c800:5 ввести c800:6 (работает на компьютере Bondwell B-300) или d800:5. Правильное значение адреса запуска программы можно узнать только из документации на контроллер диска. Что вы увидите на экране после запуска описанным только что способом программы низкоуровневого форматирования? Это зависит от контроллера. Поэтому мы не будем приводить копии экранов для одного отдельного случая. Вместо этого перечислим возможные вопросы, которые может задать утилита низкоуровневого форматирования. Сперва программа определяет физические параметры установленных НМД и выводит их на экран. Затем вам может быть предложено меню:
Для выполнения низкоуровневого форматирования выберите функцию Format или Format/Verify. Вам будет нужно указать требуемый фактор чередования (Interleave) и другие параметры, для которых лучше использовать те значения, которые предложит сама программа форматирования. Обычно контроллер сам определяет оптимальные значения для сдвига цилиндров (Cylinder Skew ) и сдвига головок (Head Skew). Если ваша программа не может сама определить оптимальное значение для сдвига цилиндров, используйте величину, равную одной трети от общего количества секторов на дорожке. Аналогично, для сдвига головок укажите значение 1. Некоторые НМД используют резервирование секторов (Sector Sparing). При этом на каждой дорожке резервируется один сектор для замены дефектного. Резервирование секторов заметно сокращает общую емкость НМД, поэтому используйте резервирование только для дисков, имеющих значительное количество дефектов. После низкоуровневого форматирования не забудьте запустить программу fdisk.exe , создать с ее помощью разделы на диске и отформатировать их программой format.com . Программа CALIBRATПрограмма CALIBRAT входит в состав пакета Norton Utilities . Она значительно облегчает процедуру выбора оптимального фактора чередования , полностью автоматизируя весь процесс. Преимущества:
Дефрагментация дискаДля дефрагментации файлов на диске у вас есть две альтернативы:
Процедура "ручной" дефрагментации заключается в том, что вы выгружаете диск на магнитную ленту (стример) или дискеты, форматируете диск программой format.com , и восстанавливаете содержимое диска с магнитной ленты или дискет. После форматирования на диске имеется один непрерывный свободный участок. При восстановлении файлов с ленты или дискет они записываются на диск по одному, причем каждый файл занимает некоторое количество расположенных рядом свободных кластеров. Очевидный недостаток "ручной" фрагментации - большая трудоемкость и значительная продолжительность процесса. Кроме того, для выполнения операции вам потребуется много дискет или стример. Гораздо лучше воспользоваться программой defrag.exe , которая входит в состав MS-DOS, или программой speedisk.exe из пакета Norton Utilities . Эти программы выполняют дефрагментацию диска "по месту", как бы переставляя кластеры. После запуска программы defrag.exe вы должны выбрать из меню нужный диск. Программа исследует его содержимое и подберет наилучший, с ее точки зрения, метод оптимизации. Она может, например, просто сделать все файлы на диске расположенными в непрерывных областях, либо полностью оптимизировать расположение файлов на диске. В случае полной оптимизации все свободные кластеры собираются в один непрерывный блок. Программа defrag.exe представляет собой сокращенный вариант программы speedisk.exe из пакета Norton Utilities . Для последней возможны следующие методы оптимизации. Первый метод - полная оптимизация (Full Optimization). Программа выполняет все действия по оптимизации диска, не меняя содержимое каталогов и порядок расположения файлов. Это наиболее подходящий метод для большинства случаев. Второй метод (Full with DIR's first) выполняет оптимизацию диска с переносом каталогов в начало диска. Третий метод (Full with File reorder) кроме дефрагментации выполняет группировку файлов вблизи каталогов, в которых они описаны. Для второго и третьего методов требуется несколько больше времени, чем для первого. Четвертый метод (Unfragment Files Only) выполняет дефрагментацию файлов без изменения каталогов или изменения порядка расположения файлов. При использовании этого метода свободное пространство на диске остается фрагментированным. Пятый метод (Unfragment Free Space) - дефрагментация свободного пространства. Все свободные кластеры собираются вместе в одной непрерывной области диска. Во время работы программа показывает на экране все свои действия по перемещению кластеров. Стоит посмотреть на это захватывающее зрелище! Буферизация ввода и выводаОперационная система MS-DOS имеет средства буферизации, которые можно подключить при помощи команды BUFFERS . Эту команду необходимо поместить в файл CONFIG.SYS: BUFFERS =n,m В этой строке n задает количество буферов, которые MS-DOS использует для ввода и вывода. Если файл CONFIG.SYS отсутствует, или в нем нет команды BUFFERS , по умолчанию MS-DOS создает 15 буферов (если в системе установлено 640 Кбайт основной памяти). Параметр m задает количество буферов предварительной выборки. Предварительная выборка означает, что в буфер записывается не только сектор, затребованный программой, но и некоторое количество следующих за ним секторов. Можно задать от 1 до 8 буферов предварительной выборки. Параметр n может принимать значения от 1 до 99. Буферы используются следующим образом: все читаемые с диска секторы записываются в буферы. Если позже какой-либо программе потребуется прочитанный ранее и записанный в буфер сектор, он извлекается из буфера. При этом чтения сектора с диска не происходит. Буферы, созданные этой командой, располагаются в стандартной оперативной памяти, уменьшая свободное для прикладных программ пространство. Поэтому не следует злоупотреблять большим количеством буферов. Несмотря на простоту оператора BUFFERS , большей эффективности можно достичь при использовании кэширования дисковой памяти. Если вы используете программу кэширования, имеет смысл задать небольшое количество буферов, например, 10 или даже 5. Кэширование дисковой памятиДля кэширования диска можно воспользоваться либо драйвером smartdrv.exe , входящим в стандартную поставку операционной системы MS-DOS, либо специальными средствами кэширования, такими, как HyperDisk фирмы HyperWare. Драйвер SMARTDRVСамый простой способ организации кэширования дисковой памяти - использование драйвера smartdrv.exe . Этот драйвер можно запускать как резидентную программу из файла autoexec.bat или из командного приглашения MS-DOS: c:\dos\smartdrv [/X] [[Диск[=|-]]...] [/U] [/C | /R] [/F | /N] [/L] [/V | /Q | /S] [НачРазмер] [РазмерДляWindows] [/E:ElemSize] [/B:BufSize] Необязательный параметр [НачРазмер] задает размер области оперативной памяти в Кбайтах, отводимой под кеш. Если он не задан, для кеша отводится блок памяти, размер которого зависит от общего объема расширенной памяти, установленной в компьютере. Параметр [РазмерДляWindows] (также необязательный) задает минимальный размер кеша в Кбайтах. Этот параметр обычно используют при работе с оболочкой Microsoft Windows , которая умеет уменьшать размер кеша и использовать освободившуюся память для своих нужд. Например, может уменьшить размер кеша до нуля, что скажется отрицательно на производительности дисковой системы. Задавая параметр [Диск], можно управлять кэшированием отдельных дисков. Если этот параметр указан без символов "+" или "-", для данного диска разрешается кэширование на чтение. Если же указан символ "+", разрешается кэширование на чтение и запись. Символ "-" полностью отключает кэширование. Кэширование на запись предполагает "отложенное" выполнение записи на диск. То есть программа, выполняющая запись данных на диск, получает сигнал о завершении записи еще до того, как запись была фактически завершена. Запись произойдет позже, когда процессор будет свободен (если, конечно, случайно не пропадет напряжение питания, а вместе с ним и содержимое кеш-памяти). Таким образом, работа многих программ сильно ускоряется. Приведем краткое описание других параметров.
Если вы собираетесь использовать программу smartdrv.exe для кеширования устройства чтения компакт-дисков, загружайте ее ПОСЛЕ запуска программы mscdex.exe. Драйвер HyperDiskДрайвер HyperDisk - одно из самых мощных и быстродействующих средств кеширования дисковой памяти. Этот драйвер может располагать кеш в обычной, расширенной или дополнительной памяти компьютера. При использовании драйвера HyperDisk производительность дисковой системы может увеличиться в несколько раз. Для установки драйвера HyperDisk версии 4.30 вам достаточно скопировать в корневой каталог диска C: (или в любой другой каталог любого другого диска) все файлы дистрибутива драйвера HyperDisk с расширением exe. Затем надо убедиться в том, что вы не используете другие средства кеширования дисковой памяти, такие как драйвер smartdrv.exe . На установочной дискете драйвера HyperDisk находятся следующие файлы: hyper286.exe, hyper386.exe, hyperdkx.exe, hyperdke.exe, hyperdkc.exe, hyperdk.exe. Все эти файлы (за исключением hyperdk.exe) представляют собой различные варианты драйвера HyperDisk. Файл hyperdk.exe предназначен для динамического изменения параметров драйвера HyperDisk. Если ваш компьютер не оборудован расширенной или дополнительной памятью (IBM PC или IBM PC/XT), вы должны использовать файл hyperdkc.exe. При этом кеш будет располагаться в стандартной памяти, сильно сокращая доступное другим программам пространство. Для подключения драйвера поместите в файл config.sys следующую строку (мы предполагаем, что вы скопировали все файлы драйвера HyperDisk в корневой каталог диска C:): device=c:\hyperdkc.exe C:100 Параметр C:100 указывает, что кеш должен иметь размер 100 Кбайт. Если этот параметр не указывать, то по умолчанию для кеша, расположенного в основной памяти, будет отведено 128 Кбайт. При использовании драйвера HyperDisk параметр BUFFERS в файле config.sys должен быть равен 5: BUFFERS =5 Кроме того, в файл autoexec.bat следует добавить строку: VERIFY=OFF Если вы - обладатель компьютера, выполненного на базе процессора i286 (IBM PC/AT), то обычно вам доступно по крайней мере 384 Кбайт расширенной памяти. В этом случае используйте следующий вариант подключения драйвера: device=c:\hyper286.exe Если вы не укажите параметр C:, для кеша будет отведена вся имеющаяся расширенная память. Для компьютеров IBM PC/AT, выполненных на базе процессора i386, используйте файл hyper386.exe: device=c:\hyper386.exe C:2048 В данном случае для кеша отводится 2 Мбайт расширенной памяти. Обычно набора описанных только что файлов достаточно для организации кеша практически на любых компьютерах. Однако если у вас возникли проблемы совместимости драйвера HyperDisk с другим используемым программным обеспечением, вы можете попробовать установить драйверы hyperdkx.exe или hyperdke.exe. Первый из них предназначен для использования расширенной памяти в компьютерах, выполненных на базе процессоров i286 или i386, а второй - для использования дополнительной памяти. Эти драйверы подключаются аналогично только что описанным, например: device=c:\hyperdke.exe C:2048 Драйвер HyperDisk может выполнять множество других функций и имеет различные режимы работы, которые можно динамически изменять после загрузки операционной системы. Полный перечень и подробное описание всех возможностей драйвера приведены в документации, распространяемой в виде файла вместе с драйвером (на английском языке). Драйвер HyperDisk может "накапливать" изменения в оперативной памяти и сбрасывать их на диск позже, во время простоев компьютера или через заданный промежуток времени. Это увеличивает производительность при записи данных на диск. Кроме того, драйвер HyperDisk может оптимизировать последовательность записываемых секторов с целью сокращения перемещений блока головок. Однако такая задержка во времени опасна, так как если произойдет, например, внезапное отключение питающей сети, драйвер HyperDisk может не успеть записать все изменения в кеше на диск. Это может привести к логическому разрушению файловой системы на кешируемом диске. Возможности драйвера HyperDisk реализуются необязательными параметрами. Эти параметры могут задаваться в файле config.sys : device=c:\hyperdke.exe C:2048 H V Кроме того, некоторые параметры можно изменять во время работы операционной системы при помощи программы hyperdk.exe. Для этого надо запустить эту программу с новыми параметрами для драйвера HyperDisk : hyperdk H V Приведем таблицу некоторых, наиболее полезных
на наш взгляд, параметров:
Полный список команд приведен в документации на драйвер HyperDisk . Приведем комбинацию параметров для кеширования только накопителей на жестких дисках с отложенной записью измененных данных: device=c:\hyper386.exe C:2048 H S Режим отложенной записи данных рекомендуется использовать только в тех случаях, когда у вас надежно работающий компьютер, нет постоянных сбоев в питающей сети и вы не проводите экспериментов с новым программным обеспечением. Параметры драйвера HyperDisk можно динамически изменять в процессе работы с помощью ряда комбинаций клавиш. Например, перед тем, как вы запускаете новую программу, целесообразно отключить кеширование или, по крайней мере, режим отложенной записи. Приведем описание некоторых наиболее важных
комбинаций клавиш, управляющих работой драйвера
HyperDisk .
Создание электронного дискаДля организации электронного диска добавьте в файл CONFIG.SYS следующую строку: device=c:\dos\ramdrive.sys [параметры] В качестве первого параметра следует указать размер создаваемого электронного диска в Кбайтах. Второй параметр - число, определяющее размер сектора электронного диска. Он может принимать значения 128, 256, 512 и 1024 байт. Третий параметр - максимальное количество файлов в корневом каталоге диска. Дополнительно можно указывать параметры /E и /A. Параметр /E вызывает размещение электронного диска в расширенной памяти, а параметр /A - в дополнительной. Все параметры драйвера ramdrive.sys необязательные. Если ни один из них не указан, создается диск размером 64 Кбайт с размером сектора 512 байт. Максимальное количество файлов, которые можно записать в корневой каталог - 64. Кроме того, если не указан ни один ключ, электронный диск создается в стандартной памяти, отнимая память у запускаемых программ. Если ваш компьютер оборудован расширенной памятью размером в несколько Мбайт, вы можете создать электронный диск размером в 1024 Кбайт следующим образом: device=c:\dos\ramdrive.sys 1024 /E Драйверы кеша и Microsoft WindowsТак как Windows может сам уменьшать размер кеша, созданного драйверами кеширования (вплоть до нуля), не забудьте указать минимальный размер используемого кеша. Для драйвера smartdrv.exe это можно сделать, например, так: device=c:\dos\smartdrv.sys 2048 1024 В этом случае, когда программы работают непосредственно в среде MS-DOS, размер кеша составляет 2048 Кбайт. Если же запускается Microsoft Windows , размер кеша может уменьшиться до 1024 Кбайт. Аналогично в драйвере HyperDisk размер кеша, использующегося при работе с Windows , указывается при помощи параметра CW:, например, device=c:\hyper386.exe C:2048 CW:1024 H S Можно использовать и такой способ: device=c:\hyper386.exe C:2048:1024 H S При работе драйвера HyperDisk вместе с Microsoft Windows для переключения режимов работы драйвера рекомендуется следующая последовательность действий:
Программа FASTOPENПрограмма fastopen.exe - еще одно средство кеширования, предоставляемое операционной системой MS-DOS. Это резидентная программа, запоминающая в оперативной памяти расположение файлов и каталогов на диске. При ее использовании сильно уменьшается время доступа к файлам. Однако драйвер smartdrv.exe обеспечивает большую эффективность, так как он может хранить в оперативной памяти не только расположение файлов и каталогов, но и любые часто используемые файлы или участки файлов. Поэтому мы не рекомендуем вам использовать программу fastopen.exe . |