Тонкая настройка и оптимизация 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 секунд! Если же вы воспользуетесь кэшем, время, затраченное на трассировку команды, сократится практически до нуля.

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

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


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