Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Тонкая настройка и оптимизация MS-DOS

© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 236 стр.

[Назад] [Содеожание] [Дальше]

2.1. Теория: Почему диск работает медленно?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Дорожки от 0 до максимального значения
  • Головки от 0 до максимального значения
  • Сектора от 1 до максимального значения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

    • компьютеры, которые произошли от первой разработки фирмы IBM - компьютера IBM PC;
    • компьютеры фирмы APPLE;
    • рабочие станции фирм HEWLETT PACKARD и SUN.

    Первый персональный компьютер фирмы 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 мегабайт.

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

    [Назад] [Содеожание] [Дальше]