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