2. Быстродействие дисковой памяти

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

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

Каждая из приведенных выше причин сама по себе может привести к замедлению работы дисковой памяти или отдельных программ в несколько раз! А если у вас комбинация нескольких или всех неблагоприятных факторов? В этом случае даже современные быстродействующие накопители будут по скорости напоминать диски первых моделей IBM XT.

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

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

Первое, что вам следует сделать с жёсткими магнитными дисками нового компьютера (или с новыми дисками, установленными в старом компьютере) - выполнить низкоуровневую инициализацию или, другими словами, низкоуровневое форматирование.

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

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

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

Для того, чтобы это понять, вспомним, как устроен жёсткий диск ("винчестер").

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

На рисунке изображен HDD с открытой крышкой, вы можете увидеть диски и головки:

Головки "парят" на воздушной подушке очень близко к поверхности дисков, как бы прочерчивая окружности. С помощью специального шагового двигателя блок головок может перемещаться в направлении к центру дисков. Так как блок головок перемещается скачкообразно, головки при их перемещении прочерчивают концентрические окружности, называемые дорожками. Совокупность всех дорожек, образуемых всеми магнитными головками, называют цилиндром.

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

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

Блоки обычно называют секторами дорожки. Эти секторы идентифицируются своим порядковым номером относительно начала дорожки. Начало дорожки отмечается специальной меткой - маркером дорожки.

На рисунке показано расположение дорожек и секторов на поверхности одной пластины магнитного диска.

Сказанное выше касается накопителей на жёстких магнитных дисках (HDD). Гибкие диски (флоппи-диски) имеют только две рабочие поверхности. Соответственно, накопитель на гибких магнитных дисках (FDD) имеет только две магнитные головки. Информация записывается на гибкие диски также по дорожкам и секторам.

Для наглядности приведем в отдельной таблице способ нумерации дорожек, головок и секторов:

Секторы нумеруются начиная с первого, а дорожки и головки - начиная с нулевой.

Максимальное значение для дорожек, головок и секторов сильно зависит от типа HDD и магнитного носителя, а также от способа форматирования и некоторых других причин, о которых мы расскажем позже.

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

Когда формируется структура магнитной дорожки и записываются области служебной информации?

Во время процедуры низкоуровневого форматирования.

Обратите внимание:

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

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

Будьте внимательны при выполнении этой операции:

Низкоуровневое форматирование уничтожает всю информацию, записанную на магнитном носителе!

Мы долго рассказывали вам о том, как информация хранится на дисках, но пока ещё ничего не сказали о факторе чередования (Interleave Factor). Теперь, когда мы познакомились с дорожками и секторами, можно перейти к этому таинственному фактору, так сильно влияющему на быстродействие диска.

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

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

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

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

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

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

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

Например, можно располагать секторы через один (см. рисунок):


Когда секторы располагаются последовательно в порядке возрастания их номеров, фактор чередования секторов равен 1. Когда чередуются через один - фактор чередования равен 2.

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

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

В настоящее время существуют три главных направления развития персональных компьютеров и, соответственно, три преобладающих на рынке типа персональных компьютеров:

Первый персональный компьютер фирмы IBM - IBM PC - использовал процессор 8088, работающий с тактовой частотой 4,75 мегагерц. Он не имел жёсткого диска, вся его дисковая память ограничивалась двумя дисководами для флоппи-дисков. Кроме того, в первых моделях был установлен монохромный видеоадаптер, который не мог работать в графическом режиме.

Но тем не менее этот первый компьютер во многом определил направления развития всех персональных компьютеров и стал первым мировым стандартом для персональных компьютеров.

Следующая модель компьютера фирмы IBM называлась IBM XT. От IBM PC его отличало прежде всего наличие жёсткого диска объёмом 10 мегабайт (по тем временам это был диск огромной ёмкости).

Но самую большую популярность получила следующая модель компьютера фирмы IBM - IBM AT. В этом компьютере был установлен новый процессор фирмы Intel 80286, использовался жёсткий диск объёмом 20 мегабайт, появилась расширенная память, часы реального времени, работающие от аккумулятора и многие другие новшества.

У IBM появилось много подражателей. Разные фирмы выбросили на рынок огромное количество моделей компьютеров, совместимых с моделями IBM XT и IBM AT. Эти копии отличались от оригиналов более низкой стоимостью и иногда более высоким быстродействием. К сожалению, надежность IBM-совместимых компьютеров была не очень высока (по сравнению с надёжностью компьютеров, выпускаемых самой фирмой IBM), а IBM-совместимость не всегда была полной.

После появления 32-разрядного процессора Intel 80386 фирма IBM выпустила серию компьютеров PS/2. Было разработано несколько моделей, имеющих разные номера, разные процессоры и разные возможности. Модель 30 была во многом похожа на IBM AT, модель 80 была сделана на базе процессора 80386 и обладала высокой производительностью.

В настоящее время многие фирмы выпускают персональные компьютеры на базе процессоров 80386 и 80486. Такие компьютеры часто называют супер-AT, хотя, конечно, все они имеют свои названия. Например, один из самых быстродействующих и надёжных компьютеров называется COMPAQ-386. Как следует из названия, он создан фирмой Compaq.

Компьютеры фирмы APPLE мало распространены в странах СНГ, в основном из-за их высокой стоимости. Мы не будем подробно останавливаться на них, отметим только, что эти компьютеры обладают большой производительностью и имеют отличные видеомониторы с высокой разрешающей способностью. Компьютеры фирмы APPLE программно несовместимы с серией IBM PC, так как они используют процессоры серии 68XXX фирмы Motorola.

Рабочие станции фирм HEWLETT PACKARD и SUN являются лидерами по производительности среди всех типов персональных компьютеров. Это стало возможным благодаря использованию в них процессоров с новой архитектурой - RISC и SPARC.

Архитектура RISC (Reduced Instruction Set Computer - компьютеры с сокращенным набором команд) предполагает не только сокращение до минимума количества используемых команд, но и выполнение практически всех команд за 1-2 машинных такта. Благодаря этому RISC-процессоры обладают громадным быстродействием.

Ещё большее быстродействие имеют процессоры с архитектурой SPARC (Scalable Processor Architecture - масштабируемая архитектура процессора).

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

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

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

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

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

Сдвиг цилиндров

Предположим, ваша программа считывает (или записывает) большой файл, занимающий на диске несколько цилиндров. Что происходит в тот момент, когда завершается чтение последней дорожки текущего цилиндра? Теперь надо установить головки на нулевую дорожку следующего цилиндра. Очень хорошо, контроллер выдаёт соответствующую команду, головки устанавливаются на другой цилиндр и начинается поиск первого сектора нулевой дорожки.

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

Здесь мы неявно предполагали, что все дорожки на всех цилиндрах расположены как бы параллельно, т.е. первые сектора на всех дорожках для всех цилиндров располагаются на одинаковом расстоянии от маркера начала дорожки.

Современные дисковые накопители, в частности, использующие интерфейс ESDI, можно отформатировать "со сдвигом цилиндров" (Cylinder Skew). В этом случае цилиндры, расположенные ближе к центру, будут сдвинуты вперёд по направлению вращения относительно внешних цилиндров.

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

Сдвиг головок

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

Для выбора правильного расположения первого сектора некоторые программы низкоуровневого форматирования позволяют задавать сдвиг головок (Head Skew) относительно маркера дорожки.

Фрагментация файлов

Для того чтобы понять причины появления фрагментированных файлов, нам необходимо вспомнить основы логической структуры файловой системы MS-DOS. Мы не будем углубляться в подробности, основное внимание сосредоточим на том, как хранятся файлы на диске.

Если вы работали с персональным компьютером, вам должно быть известно, что файловая система MS-DOS имеет иерархическую структуру. Каждый логический диск имеет корневой каталог, в котором описаны файлы и другие каталоги, которые, в свою очередь, также могут описывать файлы и каталоги. Что значит "описаны"? Это означает, что для каждого файла в каталоге хранится отдельная запись, описывающая файл (или другой каталог). Эту запись мы будем называть дескриптором файла (или, соответственно, дескриптором каталога).

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

Мы уже говорили о том, что физически информация на диске храниться в секторах, которые для MS-DOS имеют размер 512 байт. Сектор - минимальный элемент данных, читаемый с диска или записываемый на диск. Для работы с файлами операционная система MS-DOS пользуется элементами данных, называемых кластерами. Кластер - это просто совокупность секторов, имеющих смежные номера. Кластер может состоять из одного сектора (для дискет) или содержать несколько секторов (для жёсткого диска).

Операционная система выделяет для записываемых на диск файлов некоторое количество кластеров, в зависимости от размера файла. Если файл маленький (например, в нём всего один или два байта), выделяется один кластер. Это, в частности, означает, что при размере кластера, равном 8 секторам, для хранения файла размером в один байт используется 4 килобайта дисковой памяти.

Где же располагаются кластеры, выделяемые файлу?

Номер первого выделенного файлу кластера хранится в дескрипторе файла, т.е. в каталоге. Для выделения остальных кластеров можно использовать две стратегии.

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

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

Операционная система MS-DOS поступает по-другому. Для нового файла распределяются любые свободные кластеры, даже если они расположены в разных местах диска. Для каждого файла MS-DOS хранит номера всех занимаемых им кластеров в специальной таблице - таблице размещения файлов. Обычно эту таблицу называют FAT (File Allocation Table).

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

После форматирования диска утилитой MS-DOS FORMAT все кластеры, предназначенные для хранения файлов, помечаются в FAT как свободные. В процессе записи на диск нового файла в FAT записываются номера всех кластеров, распределенных данному файлу. Эти номера хранятся в виде односвязного списка.

Список строится следующим образом. Перед началом записи нового файла на диск MS-DOS просматривает FAT и находит первый свободный кластер. Номер этого кластера записывается в дескриптор файла. Далее в сектора этого кластера записываются данные. Если файл короткий и помещается целиком в один кластер, после записи данных в элементе FAT, соответствующий первому кластеру записывается специальное число, означающее конец цепочки кластеров (0FFFFh или 0FFFh в зависимости от типа FAT).

Если же длина файла больше размера одного кластера, MS-DOS ищет следующий свободный кластер, который может оказаться в любом месте диска. Номер найденного свободного кластера записывается в элемент FAT для первого кластера, распределенного файлу. Таким образом, элемент FAT, соответствующий первому кластеру будет содержать ссылку на второй кластер, распределенный файлу. Ссылка представляет собой просто порядковый номер следующего кластера.

По мере того, как файл записывается на диск, MS-DOS формирует в FAT список кластеров, распределённых файлу. В элементе FAT, соответствующему последнему кластеру, распределённому файлу, записывается число, означающее конец цепочки кластеров.

При удалении файла все кластеры, принадлежащие файлу, помечаются как свободные - в соответствующие элементы FAT записывается нулевое значение. В каталоге первая буква имени файла заменяется на русскую букву "х" (в альтернативной кодировке символов). Это означает, что файл удалён. Те кластеры, которые раньше занимал удалённый файл, становятся доступными для записи новых файлов.

Такой метод хранения файлов позволяет использовать всё имеющееся на диске свободное место, т.к. если длина записываемого файла больше, чем размеры непрерывных свободных участков, то файл просто расположится в нескольких несмежных участках.

Однако при использовании описанного выше метода файл становится фрагментированным - он как бы "размазан" по диску. К чему это может привести?

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

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

Существуют различные методы дефрагментации диска. Наиболее очевидный и наименее удобный - выгрузка всего диска на дискеты или стример, форматирование диска и восстановление всех файлов, соответственно, с дискет или стримера. Лучше всего использовать специальные программы, такие как Norton SPEEDISK. Во второй части главы мы подробно расскажем вам об использовании этой программы.

Буферизация

Ещё один путь к увеличению быстродействия дисковой подсистемы лежит в использовании буферизации ввода/вывода. Что здесь имеется в виду?

Пусть нам надо скопировать некоторый, достаточно большой файл. Пусть файл располагается в начале диска, в области первых нескольких цилиндров. Пусть копия файла будет располагаться в конце диска (например, потому, что там имеется свободное пространство).

Как можно копировать файл?

Мы уже говорили, что наименьший элемент данных, который может быть прочитан с диска или записан на диск - это сектор длиной 512 байт. Можно копировать файл по секторам. Для этого сначала надо прочитать первый сектор первого кластера, затем записать этот сектор в первый сектор первого кластера нового файла. Затем надо прочитать второй сектор первого кластера и записать прочитанные данные во второй сектор нового файла. И так далее до конца файла.

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

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

Чем больше будет размер буфера, тем меньше будет затрачено времени на перемещение головок и тем быстрее будет копироваться файл.

Операционная система MS-DOS имеет средства (правда, весьма ограниченные) для управления процессом буферизации ввода/вывода. Мы расскажем о них в практическом разделе этой главы.

Кэширование дисковой памяти

Во время работы операционная система и прикладные программы часто обращаются к одним и тем же файлам или к одним и тем же областям диска. Например, практически постоянно происходит обращение к таблице размещения файлов FAT, к каталогам используемых дисков. Системы управления базами данных могут часто обращаться к одним и тем же записям базы данных, к словарям или вспомогательным рабочим файлам. Отладчик Microsoft Code View версии 3.00 в пошаговом режиме после трассировки каждой строки отлаживаемой программы записывает своё текущее состояние в специальный файл на диске.

Один из необходимых этапов в разработке программного обеспечения - отладка программ. Она выполняется с помощью специальных отладочных средств - программ-отладчиков, позволяющих проследить ход выполнения программы.

Существуют несколько известных программ-отладчиков, отличающихся своими возможностями. Самые мощные из них - Turbo Debugger фирмы Borland и Code View фирмы Microsoft.

В пошаговом режиме работы отладчиков программист может проконтролировать выполнение каждой строки своей программы, узнать текущее состояние переменных, используемых программой. Обычно для запуска программы в пошаговом режиме и её построчной трассировки необходимо нажимать какую-либо функциональную клавишу, например, F8.

Можно привести много примеров, когда в процессе работы программы происходит частое обращение к одним и тем же областям диска. Или даже к одним и тем же секторам диска.

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

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

Описанный выше механизм хранения в оперативной памяти наиболее часто используемых секторов диска называется кэшированием дисковой памяти или просто кэшированием диска. Существуют различные способы организации кэширования диска в MS-DOS. Все они реализуются специальными драйверами, которые необходимо подключать в файле CONFIG.SYS.

Схематически реальный алгоритм кэширования дисковой памяти выглядит так.

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

Если требуемого сектора в буфере кэша нет, он читается с диска и записывается в буфер кэша, например, на место самого "старого" сектора данных. То есть на место сектора, к которому давно не было обращений. Таким образом, новая информация вытесняет из кэша старую. Разумеется, если в буфере кэша есть свободное место, никакого вытеснения не происходит, сектор просто записывается в буфер.

Кэширование диска для некоторых программ дает увеличение быстродействия в несколько раз! Иногда с программой просто невозможно работать без кэша. Например, отладчик Microsoft Code View версии 3.00. Попробуйте с его помощью трассировать программу по командам на компьютере с медленным диском - на трассировку каждой команды уйдет 15-20 секунд! Если же вы воспользуетесь кэшем, время, затраченное на трассировку команды, сократится практически до нуля.

Ещё одна область, в которой желательно применение кэширования - базы данных. Если вы обратились к какой-либо записи базы данных, в первый раз она будет считана с диска и на это может уйти весьма ощутимое время. В следующий раз эта запись появится на экране сразу, так как она уже прочитана в оперативную память.

Физически кэш диска обычно реализуется с использованием расширенной или дополнительной оперативной памяти. Чем больше размер области памяти, отведённой для буфера кэша, тем больше вероятность того, что требуемый сектор уже хранится в памяти и его не надо заново считывать с диска.

Электронный диск

Если в вашем компьютере имеется расширенная или дополнительная память, вы можете организовать так называемый электронный диск. Подключив в файле 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, а транслятором BorlandC пользуетесь эпизодически, рекомендуется преобразовать приведенную выше строку следующим образом:

PATH = c:\;c:\norton;e:\word;d:\borlandc\bin;c:\dos;

Корневой каталог c:\ мы поместили в левой части потому, что в этом каталоге описан командный процессор COMMAND.COM, нужный для запуска любых программ. Утилиты MS-DOS обычно используются редко, поэтому мы поместили их в правой части строки.

Расположение файлов

В некоторых случаях на скорость работы программы сильно влияет расположение файлов на диске или на дисках (если компьютер оборудован несколькими накопителями на магнитных дисках). Мы уже рассказывали вам о проблемах, связанных с перемещениями блока магнитных головок HDD при копировании файлов. Ситуация будет ещё более серьёзной, если выполняется не копирование, а, например, слияние двух файлов в один. При этом головки будут перемещаться уже между тремя зонами диска.

Если ваш компьютер имеет несколько HDD, имеет смысл располагать одновременно используемые файлы на разных дисководах. Копирование файла с одного HDD на другой будет выполняться быстрее, чем копирование в пределах одного HDD. Это связано с тем, что на каждом HDD головки будут перемещаться только в пределах одного файла. Дополнительное время на перемещение головок между файлами не потребуется.

Рабочие или временные файлы целесообразно располагать на отдельном HDD, желательно обладающем наибольшим быстродействием. Если вам недоступны твёрдотельные HDD, выполненные на обычных микросхемах памяти и имеющие огромное быстродействие, для размещения рабочих или временных файлов вы можете организовать "электронный диск" в расширенной или дополнительной памяти.

Дальнейшее развитие идеи электронного диска, выполненного в оперативной памяти, привело к созданию отдельного устройства - диска, выполненного на микросхемах памяти и подключающегося к контроллеру HDD. В этом устройстве в качестве носителя информации используются обычные микросхемы памяти. Такие диски называются твёрдотельными дисками (Solid State Disk).

Твёрдотельные диски более чем в 100 раз быстрее обычных жёстких магнитных дисков. При этом они обладают значительной ёмкостью. Например, диск ST8167K фирмы Seagate имеет ёмкость порядка 167 мегабайт.

Твёрдотельные диски наилучшим образом подходят для хранения временных рабочих файлов, файлов баз данных в системах коллективного пользования или в локальных сетях персональных компьютеров.

2.2. Практика: Настройка дисковой подсистемы

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

Оптимизация фактора чередования

Реально можно использовать два метода выбора правильного значения для фактора чередования:

Метод подбора

При использовании этого метода вам предлагается попробовать по очереди все значения фактора чередования с измерением производительности диска.

Преимущество метода: не требуются специальные программы оптимизации фактора чередования.

Недостатки:

Рекомендуемая последовательность действий:

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

Мы не будем подробно останавливаться на процедуре выгрузки содержимого диска перед низкоуровневым форматированием - об этом вы сможете прочитать в документации на операционную систему. Расскажем подробнее о низкоуровневом форматировании.

Существует два способа выполнить низкоуровневое форматирование HDD.

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

Второй способ основан на использовании процедуры инициализации диска, записанной в микросхеме постоянного запоминающего устройства ROM (Read Only Memory - только читаемая память), располагающейся в контроллере диска. Этот способ пригоден не для всех контроллеров, так как не все контроллеры содержат ROM. Подробности вы сможете узнать из документации на ваш дисковый контроллер, там же приведены все необходимые сведения о работе с программой форматирования, записанной в ROM.

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

Напомним вам, что низкоуровневое форматирование жёсткого диска невозможно выполнить с помощью команд или утилит MS-DOS, в том числе с помощью команды FORMAT.

Низкоуровневое форматирование

Самая простая утилита низкоуровневого форматирования - hdinit. Запустите её (предварительно выгрузив диск) с параметром C: для первого HDD или с параметром D: для второго HDD. Например:

hdinit c:


На экране вы увидите следующее:

Программа hdinit сообщит вам имя и физический адрес инициализируемого HDD (в нашем случае инициализируется диск drive c:, его адрес - 80H), количество цилиндров (cylinders), головок (heads), секторов на трек (sector/track) и другие параметры. Далее программа сообщит вам, что она уничтожит все данные, находящиеся на диске и спросит, желаете ли вы продолжить работу. На этот вопрос вы отвечаете нажатием клавиши "y", если вы желаете инициализировать диск и "n" в противном случае.

На второй вопрос - Scan for existing defective tracks (y/n) (желаете ли вы просмотреть существующие дефектные дорожки) - ответьте "n".

Продолжение диалога можно увидеть на следующем рисунке:

Сперва программа выведет на экран список дефектных дорожек диска в формате цилиндр/головка (если на диске имеются дефектные дорожки). Вы сможете пополнить список дефектных дорожек, введя их номера в аналогичном формате, или исключить дорожки из списка дефектных, если укажите адрес дорожки в формате "-цилиндр/головка". Если дефектных дорожек нет, просто нажмите клавишу <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". На экране будет отображаться процесс форматирования. Он может продолжаться несколько десятков минут.

Рассмотрим теперь способ низкоуровневого форматирования HDD при помощи программы, записанной в ROM дискового контроллера, т.е. .i.форматирование при помощи BIOS;. Мы уже говорили о том, что этот способ будет работать не для всех типов контроллеров.

Вначале запустите программу-отладчик DEBUG, входящую в стандартно поставляемую конфигурацию MS-DOS:

c:\>debug


В ответ на приглашение отладчика введите:

g=c800:5


Запустится программа низкоуровневого форматирования. Она задаст вам вопросы, аналогичные тем, что задаёт утилита hdinit. Вам необходимо установить правильное значение для фактора чередования (Interleave Factor).

Если программа форматирования не запустилась, попробуйте вместо адреса c800:5 ввести c800:6 (работает на компьютере Bondwell B-300) или d800:5. Правильное значение адреса запуска программы можно узнать только из документации на используемый контроллер диска.

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

В начале работы программа определяет физические параметры установленных HDD и выводит их на экран. Затем вам может быть предложено меню. В этом меню обычно находятся:

Для выполнения низкоуровневого форматирования выберите функцию Format или Format/Verify. Вам будет нужно указать требуемый фактор чередования (Interleave) и другие параметры, для которых лучше использовать те значения, которые предложит сама программа форматирования.

Обычно контроллер сам определяет оптимальные значения для сдвига цилиндров (Cylinder Skew) и сдвига головок (Head Skew). Если ваша утилита не может сама определить оптимальное значение для сдвига цилиндров, используйте величину, равную одной трети от общего количества секторов на дорожке. Аналогично, для сдвига головок используйте значение 1.

Некоторые HDD используют резервирование секторов (Sector Sparing). При этом на каждой дорожке резервируется один сектор для замены дефектного. Резервирование секторов заметно сокращает общую ёмкость HDD, поэтому используйте резервирование только для дисков, имеющих значительное количество дефектов.

После низкоуровневого форматирования не забудьте запустить утилиту FDISK, создать с её помощью разделы на диске и отформатировать их утилитой FORMAT.

Использование специальных утилит

Утилита Norton CALIBRAT

Утилита CALIBRAT входит в состав пакета Norton Utilities версии 6.0. Она значительно облегчает процедуру выбора оптимального фактора чередования, полностью автоматизируя весь процесс.

Преимущества:

Недостаток один - вам надо покупать пакет Norton Utilities. Однако, по нашему мнению, это не очень большой недостаток, так как с помощью этого пакета вы сможете выполнять практически все операции по обслуживанию компьютера.

Всемирно известный пакет программ Norton Utilities предназначен для решения различных задач, встающих перед любым пользователем персонального компьютера. Этот пакет состоит из нескольких десятков программ. Вот некоторые из них:

Без преувеличения можно сказать, что самый необходимый программный продукт после оболочки Norton Commander - это Norton Utilities.

Теперь о том, как оптимизировать фактор чередования с помощью утилиты CALIBRAT. Запустите её, на экране появится краткая информация о том, какие функции выполняет CALIBRAT:

Утилита предложит вам оптимизировать скорость дисковой системы (Optimizes the speed of your Disk System), выявить плохо читающиеся данные и попытаться перезаписать их на другое место диска (Detects endangered data and relocates it to a safe location), выяснить состояние дисковой системы и решить проблемы до того, как они станут причиной потерь данных на диске (Keeps your disk healthy...).

Заметьте, что помимо оптимизации фактора чередования будет выполнена проверка целостности данных, хранящихся на диске.

Нажмите клавишу <Enter> или выберите мышью слово Continue. На экране появится меню:

Пользуясь клавишами перемещения курсора по вертикали, выберите диск, для которого необходимо выполнить оптимизацию, затем нажмите клавишу <Enter> или выберите мышью слово OK. Если вы передумали выполнять оптимизацию, выберите слово CANCEL.

Далее, если вы решили продолжить работу, на экране появится предостерегающее сообщение о необходимости выгрузить содержимое оптимизируемого диска. Это подстраховка на тот случай, если программа CALIBRAT не сможет правильно распознать тип вашего диска или контроллера:

Обычно необходимости в выгрузке диска нет, и вы можете просто продолжить работу, нажав клавишу <Enter>.

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

Перед началом тестирования программа объяснит вам смысл выполняемых операций:

Утилита проверит целостность системы, выполнит тест позиционирования головок, определит применяемый способ кодирования данных и текущий фактор чередования.

Здесь вам надо просто нажать клавишу <Enter> или выбрать мышью слово Continue.

CALIBRAT начнет тестирование. Все выполняемые операции будут отображаться на экране:

На следующем этапе CALIBRAT выполняет измерение временных характеристик HDD, таких как время позиционирование головок:

Далее на экран выводятся измеренные характеристики HDD и контроллера:

Можете нажать клавишу <Enter> для перехода к следующему этапу оптимизации.

На этом этапе CALIBRAT подбирает оптимальный фактор чередования, используя метод перебора. Для каждого значения фактора чередования определяется быстродействие диска. Результаты отображаются в виде столбчатой диаграммы, причём оптимальное и текущее значения фактора чередования специально выделяются (на этом рисунке они совпадают):

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

Если вы не уверены в качестве диска или форматируете диск в первый раз, лучше выбрать стандартное тестирование (Standard Pattern Testing).

Далее начинается процесс переформатирования диска с оптимальным значением фактора чередования. Программа CALIBRAT отображает ход выполнения операции на экране:

Вы можете нажать клавишу <Esc> для того, чтобы прервать переформатирование диска.

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

Дефрагментация диска

Для дефрагментации файлов на диске у вас есть две альтернативы:

Процедура "ручной" дефрагментации заключается в том, что вы выгружаете диск на магнитную ленту (стример) или дискеты, форматируете диск утилитой MS-DOS FORMAT, и восстанавливаете содержимое диска с магнитной ленты или дискет.

После форматирования на диске имеется один непрерывный свободный участок. При восстановлении файлов с ленты или дискет они записываются на диск по одному, причём каждый файл занимает некоторое количество расположенных рядом свободных кластеров.

Очевидный недостаток "ручной" фрагментации - большая трудоёмкость и значительная продолжительность процесса. Кроме того, для выполнения операции вам потребуется много дискет или стример.

Гораздо лучше воспользоваться утилитой SPEEDISK из пакета Norton Utilities. Эта утилита выполнит дефрагментацию диска "по месту", как бы переставляя кластеры.

Запустите утилиту SPEEDISK (иногда используется сокращенное имя SD). На экране появится меню, необходимо выбрать оптимизируемый диск. На рисунке мы выбрали диск F:

Утилита SPEEDISK оптимизирует диск несколькими методами: она может, например, просто сделать все файлы на диске расположенными в непрерывных областях, либо полностью оптимизировать расположение файлов на диске. В случае полной оптимизации все свободные кластеры собираются в один непрерывный блок.

После выбора диска SPEEDISK анализирует расположение файлов и предлагает наиболее подходящий с её точки зрения метод оптимизации:

На этом рисунке утилита сообщает, что 98% файлов на диске не фрагментированы. Предлагается такой метод оптимизации, при котором выполняется только дефрагментация файлов.

Вы можете согласиться использовать предложенный метод, либо задать свой, воспользовавшись полем "Optimization Method" из меню "Optimize":

На следующем рисунке показано меню выбора методов оптимизации:

Первый метод - полная оптимизация (Full Optimization). Утилита выполняет все действия по оптимизации диска, не меняя содержимое каталогов и порядок расположения файлов. Это наиболее подходящий метод для большинства случаев.

Второй метод - Full with DIR's first - выполняет оптимизацию диска с переносом каталогов в начало.

Третий метод - Full with File reorder - кроме дефрагментации выполняет группировку файлов вблизи каталогов, в которых они описаны.

Для второго и третьего методов требуется несколько больше времени, чем для первого.

Четвёртый метод - Unfragment Files Only - выполняет дефрагментацию файлов без изменения каталогов или изменения порядка расположения файлов. При использовании этого метода свободное пространство на диске остается фрагментированным.

Пятый метод - Unfragment Free Space - дефрагментация свободного пространства. Все свободные кластеры собираются вместе в одной непрерывной области диска.

Во время работы программа показывает на экране все свои действия по перемещению кластеров. Стоит посмотреть на это захватывающее зрелище!

В конце работы программы вы можете увидеть результат - распределение занятых и свободных кластеров на диске:

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

Буферизация ввода/вывода

Операционная система MS-DOS имеет средства буферизации, которые можно подключить при помощи команды .i.BUFFERS;. Эту команду необходимо поместить в файл CONFIG.SYS.

Для MS-DOS более ранних версий, чем 4.0, команда BUFFERS имеет следующий формат:

BUFFERS=n


В этой строке n задаёт количество буферов, которые MS-DOS использует для ввода/вывода. Если файл CONFIG.SYS отсуствует, или в нём нет команды BUFFERS, по умолчанию MS-DOS создает два буфера.

Буфера используются следующим образом: все читаемые с диска сектора записываются в буфера. Если впоследствии какой-либо программе требуется прочитанный ранее и записанный в буфер сектор, он извлекается из буфера. Физического чтения сектора с диска не происходит.

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

Максимально можно создать 255 буферов, однако реально имеет смысл создавать их не более 30-50, т.к. при большом количестве буферов, помимо уменьшения доступной оперативной памяти, происходит замедление работы MS-DOS из-за накладных расходов на управление буферами. Приведем таблицу, которая поможет вам определить оптимальное количество дисковых буферов:

Размер диска Количество буферов
меньше 40 Мбайт 20
от 40 до 80 Мбайт 30
от 80 до 120 Мбайт 40
больше 120 Мбайт 50

Операционная система MS-DOS версий 4.0, 4.01 и 5.0 имеет несколько расширенный синтаксис оператора BUFFERS:

BUFFERS=n,m[/x]


Параметр m задаёт количество буферов предварительной выборки. Предварительная выборка означает, что в буфер записывается не только затребованный программой сектор, но и некоторое количество следующих за ним секторов. Это повышает скорость работы таких программ, как компиляторы и системы управления базами данных. Можно задать от 1 до 8 буферов предварительной выборки.

Параметр n может принимать значения от 1 до 10000.

Однако самое важное новшество - ключ /x. Если он задан, все буфера располагаются в дополнительной памяти (expanded memory). Эта память (если она есть в компьютере) обычно располагается на отдельной плате и требует наличия специального драйвера. Подробнее о расширенной памяти вы можете узнать в главе, посвящённой увеличению объёма доступной оперативной памяти.

Кроме того, MS-DOS версии 5.0 располагает буфера в области памяти HMA, которая находится выше границы 1 Мбайт (при условии, что в файле CONFIG.SYS имеется строка DOS=HIGH и не задан ключ /x). Это позволяет экономить стандартную оперативную память для обычных программ.

Несмотря на простоту оператора BUFFERS, большей эффективности можно достичь при использовании кэширования дисковой памяти. Однако следует отметить, что оператор BUFFERS увеличивает производительность флоппи-дисков, в то время как программы кэширования обычно используются только для HDD.

Если вы используете программу кэширования, имеет смысл задать небольшое количество буферов, например, 15 или даже 5.

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

Кэширование дисковой памяти

Для кэширования диска можно воспользоваться либо драйвером SMARTDRV.SYS, входящим в стандартную поставку операционной системы MS-DOS, либо специальными средствами кэширования, такими, как HyperDisk фирмы HyperWare.

Драйвер SMARTDRV.SYS

Самый простой (но не самый эффективный) способ организации кэширования дисковой памяти - использование драйвера SMARTDRV.SYS. Обычно он располагается в каталоге DOS на диске c:. Для подключения кэша в файле CONFIG.SYS должна находиться строка:

device=c:\dos\smartdrv.sys [Размер] [МинРазмер] [/A]


Параметр /A, если он задан, указывает, что кэш должен быть расположен в дополнительной (expanded) памяти. В противном случае кэш будет находится в расширенной (extended) памяти.

Если вы решили использовать расширенную память, в файле CONFIG.SYS перед вышеприведённой строкой должна находиться строка:

device=c:\dos\himem.sys


Эта строка нужна для подключения драйвера расширенной памяти HIMEM.SYS.

Необязательный параметр [Размер] задаёт размер области оперативной памяти в килобайтах, отводимой под кэш. Если он не задан, для кэша отводится 256 килобайт памяти. (В том случае, когда задан параметр /A и не указан параметр [Размер], для кэша отводится вся имеющаяся дополнительная память.)

Параметр [МинРазмер] (также необязательный) задаёт минимальный размер кэша в килобайтах. Этот параметр обычно используют при работе с такими программами, которые умеют уменьшать размер кэша и использовать освободившуюся память для своих нужд. Например, Microsoft Windows может уменьшить размер кэша до нуля.

Приведём рекомендации по выбору параметров в зависимости от типа компьютера и наличия расширенной или дополнительной памяти.

Компьютеры IBM PC и IBM XT

Если у вас компьютер IBM PC или IBM XT, вам недоступна расширенная память (потому что в этих моделях её нет). Если у вас есть плата дополнительной памяти, вы можете воспользоваться параметром /A:

device=c:\dos\smartdrv.sys /A


В данном случае для кэша будет отведена вся имеющаяся дополнительная память. Для того, чтобы оставшаяся дополнительная память могла быть использована другими программами, укажите явно размер кэша. Если дополнительной памяти мало, задайте размер кэша порядка 300-500 килобайт:

device=c:\dos\smartdrv.sys 320 /A


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

Компьютеры IBM AT и IBM PS/2

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

device=c:\dos\himem.sys
device=c:\dos\smartdrv.sys 384


Если у вас наряду с расширенной памятью имеется дополнительная, вы также можете её использовать, указав параметр /A:

device=c:\dos\smartdrv.sys 2000 /A


Команда FASTOPEN - ещё одно средство кэширования, предоставляемое операционной системой MS-DOS. Это резидентная программа, запоминающая в оперативной памяти расположение файлов и каталогов на диске. При её использовании сильно уменьшается время доступа к файлам.

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

Драйвер HyperDisk

Драйвер HyperDisk - одно из самых мощных и быстродействующих средств кэширования дисковой памяти. Он работает как с флоппи-дисками, так и с жёсткими дисками. Этот драйвер может располагать кэш в обычной, расширенной или дополнительной памяти компьютера. При использовании драйвера HyperDisk производительность дисковой системы может увеличиться в несколько раз. За счет сокращения объёма физического ввода/вывода и существенного уменьшения перемещений блока головок увеличивается срок службы дисководов.

Для установки драйвера HyperDisk версии 4.30 вам достаточно скопировать в корневой каталог диска C: (или в любой другой каталог любого другого диска) все файлы с расширением exe. Затем надо убедиться в том, что вы не используете другие средства кэширования дисковой памяти, такие как драйвер SMARTDRV.SYS.

На дистрибутивной дискете драйвера HyperDisk находятся следующие файлы: HYPER286.EXE, HYPER386.EXE, HYPERDKX.EXE, HYPERDKE.EXE, HYPERDKC.EXE, HYPERDK.EXE. Все эти файлы (за исключением HYPERDK.EXE) представляют собой различные варианты драйвера HyperDisk. Файл HYPERDK.EXE предназначен для динамического изменения параметров драйвера HyperDisk.

Если ваш компьютер не оборудован расширенной или дополнительной памятью (IBM PC или IBM 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


Если вы - обладатель компьютера, выполненного на базе процессора 80286 (IBM AT), то обычно вам доступно по крайней мере 384 килобайта расширенной памяти. В этом случае используйте следующий вариант подключения драйвера:

device=c:\hyper286.exe


Если вы не укажите параметр C:, для кэша будет отведена вся имеющаяся расширенная память.

Для компьютеров IBM AT, выполненных на базе процессора 80386, используйте файл HYPER386.EXE:

device=c:\hyper386.exe C:2048


В данном случае для кэша отводится два мегабайта расширенной памяти.

Обычно набора описанных только что файлов достаточно для организации кэша практически на любых компьютерах. Однако если у вас возникли проблемы совместимости драйвера HyperDisk с другим используемым программным обеспечением, вы можете попробовать установить драйверы HYPERDKX.EXE или HYPERDKE.EXE. Первый драйвер предназначен для использования расширенной памяти в компьютерах, выполненных на базе процессоров 80286 или 80386, а второй - для использования дополнительной памяти. Эти драйверы используются аналогично только что описанным, например:

device=c:\hyperdke.exe C:2048


Драйвер 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


2.3. Опытному пользователю

Ещё о драйвере HyperDisk

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

Однако такая задержка во времени опасна, так как если произойдет, например, внезапное отключение питающей сети, драйвер HyperDisk может не успеть записать все изменения в кэше на диск. Это может привести к логическому разрушению файловой системы на кэшируемом диске.

Возможности драйвера HyperDisk реализуются необязательными параметрами. Эти параметры могут задаваться в файле CONFIG.SYS:

device=c:\hyperdke.exe C:2048 H V


Кроме того, некоторые параметры можно изменять во время работы операционной системы при помощи программы HYPERDK.EXE. Для этого надо запустить эту программу с новыми параметрами для драйвера HyperDisk:

hyperdk H V


Приведем список некоторых, наиболее полезных на наш взгляд, параметров:

H Если задан этот параметр, кэшируются только накопители на жёстких магнитных дисках.
F Кэшируются также и накопители на гибких магнитных дисках. Этот режим включён по умолчанию.
V Включение проверки записываемых данных. Этот параметр используется вместо команды MS-DOS VERIFY. Команда VERIFY не должна использоваться вместе с драйвером HyperDisk.
N Не выполнять проверку записываемых данных. Отменяет действие параметра V.
C:nn Параметр определяет количество памяти, используемой драйвером для организации кэша, nn задаёт размер кэша в килобайтах.
W Режим немедленной записи данных на диск сразу после их обновления в кэше. Этот режим включён по умолчанию.
Q Аналогично W, но для флоппи-дисков.
S Запись данных на диск откладывается до тех пор, пока компьютер не перейдет в состояние ожидания.
A Аналогично S, но для флоппи-дисков.
XU Отключение кэша. Вся память, котрая использовалась для кэша, освобождается и становится доступна другим программам.

Полный список команд приведен в документации на драйвер HyperDisk.

Приведем комбинацию параметров для кэширования только накопителей на жёстких дисках с отложенной записью измененных данных:

device=c:\hyper386.exe C:2048 H S


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

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

Приведём описание некоторых наиболее важных комбинаций клавиш, управляющих работой драйвера HyperDisk.

Ctrl-Alt-D Отключение драйвера HyperDisk. Эту команду целесообразно использовать при проверке нового программного обеспечения, либо при установке программ, защищенных от копирования.
Ctrl-Alt-E Включение драйвера HyperDisk в работу, используется после ввода предыдущей команды для возобновления кэширования.
Ctrl-Alt-S Включение режима отложенной записи.
Ctrl-Alt-W Выключение режима отложенной записи. Используйте эту команду при выполнении "рискованных" операций, которые могут привести к зависанию компьютера.
Ctrl-Alt-F Команда вызывает принудительную запись содержимого кэша на диск перед запуском каждой новой программы. Эту команду удобно использовать при отладке нового программного обеспечения.
Ctrl-Alt-R Отмена предыдущего режима.
Ctrl-Alt-Del Перезагрузка операционной системы. При нажатии этой комбинации клавиш драйвер HyperDisk запишет содержимое кэша на диск. Когда начнется запись данных, вы услышите два звуковых сигнала. После завершения записи для выполнения перезагрузки операционной системы нажмите Ctrl-Alt-Del ещё раз. Если вы используете какие-либо драйверы или резидентные программы, которые при нажатии указанной комбинации клавиш выполняют немедленную перезагрузку MS-DOS, используйте перед перезагрузкой команду Ctrl-Alt-D для сброса содержимого кэша на диск.

Драйверы кэша и Microsoft Windows

Так как Windows может сам уменьшать размер кэша, созданного драйверами кэширования (вплоть до нуля), не забудьте указать минимальный размер используемого кэша. Для драйвера SMARTDRV.SYS это можно сделать, например, так:

device=c:\dos\himem.sys
device=c:\dos\smartdrv.sys 2048 1024


В этом случае, когда программы работают непосредственно в среде MS-DOS, размер кэша составляет 2048 килобайта. Если же используется 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 для переключения режимов работы драйвера рекомендуется следующая последовательность действий: