Пользователи компьютеров давно вывели новый закон природы: «оперативной памяти не может быть много». Для более рационального использования всех типов оперативной памяти рекомендую в CONFIG.SYS прописать строку DOS=HIGH,UMB,NOAUTO, чтобы не загружались SETVER.EXE (нужен для старых ДОС-программ) и DBLBUFF.SYS (нужен для SCSI-дисков) - чем меньше грузится всякой хрени - тем лучше. Желательно использовать в конфигурационных файлах команды с приставками HIGH типа DEVICEHIGH, LOADHIGH, INSTALLHIGH, BUFFERSHIGH, FCBSHIGH, FILESHIGH, LASTDRIVEHIGH, STACKSHIGH (если они вам нужны), для освобождения базовой памяти. Для этого впишите сначала в CONFIG.SYS строки
DEVICE=C:\WINDOWS\HIMEM.SYS /V /TESTMEM:Off
DEVICE=C:\WINDOWS\EMM386.EXE NOEMS V
для использования верхней памяти. Внимание! Если вы при этом не добавите в CONFIG.SYS строку
DEVICEHIGH=C:\WINDOWS\IFSHLP.SYS,
то ваш компьютер может не загрузиться, так как команда DOS=NOAUTO отключает загрузку и этого драйвера файловой системы. Используйте в этом случае загрузочный флоппи-диск или компакт для добавления в конфиг этой строки. Параметр HIGHSCAN (может еще немного добавить свободной верхней памяти) для EMM386 лучше не использовать, так как высока вероятность того, что это приведет к ошибкам и система зависнет.
Необходимо отметить, что Винды сами загружают по умолчанию (если в конфиге не прописано DOS=NOAUTO) как бы «невидимый» CONFIG.SYS, в котором такие строки:
dos=high, auto
device= c:\windows\himem.sys
device= c:\windows\ifshlp.sys
device= c:\windows\setver.exe
fileshigh=30
lastdrivehigh=z
buffershigh=30
stackshigh=9,256
shell=command.com /p
fcbshigh=4
Эти драйвера грузятся, даже если в вашем конфиге они не прописаны (и, даже, если отсутствуют файлы AUTOEXEC.BAT и CONFIG.SYS), при этом, если у вас уже записаны в CONFIG.SYS команды без приставок HIGH (например files), то выполняться все равно будут команды с этими приставками (типа fileshigh), для использования старших адресов памяти (вернее, винда сама решает - использовать старшие адреса памяти или нет, и чаще всего окончания «HIGH» к командам добавляет). Значения, задаваемые командами files, lastdrive, buffers, stacks, fcbs и драйвер SETVER.EXE нужны только приложениям MS-DOS, Windows'98 эти параметры не требуются. Существует и «скрытый» AUTOEXEC.BAT:
@echo off
net start
set tmp=C:\windows\temp
set temp=C:\windows\temp
set COMSPEC=C:\COMMAND.COM
prompt $p$g
path c:\windows; c:\windows\command
Изменяя значения конфигурационных параметров, используемых «виндами» по умолчанию, можно добиться более рационального распределения памяти. Немного базовой памяти можно высвободить, если задать командой LASTDRIVEHIGH букву реально последнего дисковода (по умолчанию памяти выделяется больше: резервируется под все диски от A до Z) - на каждый дополнительный диск расходуется 80 байт. Желательно командой STACKSHIGH=0,0 отменить выделение памяти под стеки, отводимые для временного хранения различной системной информации и нужные только старым ДОСовским программам. Командой BUFFERSHIGH=20 можно ограничить количество буферов дискового ввода-вывода (каждый занимает 532 байта), так как «винды» используют собственную систему кеширования дисковых данных VCache, а для MS-DOS MODE этого значения вполне обычно хватает. Еще один параметр, нужный в режиме эмуляции MS-DOS досовским программам - FCBS, задающий количество неких блоков управления файлами, на что, естественно, опять уходит ценная память (64 байта на каждый), его значение можно изменить на FCBSHIGH=1. Базовую память можно сберечь, задав параметр FILESHIGH=10, уменьшив тем самым число обработчиков файлов с 30 до 10 (на каждый по 60 байт, примерно). Если вы никогда не загружаете режим эмуляции MS-DOS, то можете выставить еще меньшие значения этих параметров, мой же вариант расчитан на поддержку и зтого режима. Если же вы используете какую-нибудь устаревшую программу, которая хочет работать только из режима эмуляции MS-DOS, то вам, возможно, придется изменить эти параметры, опять увеличив их значения, иначе некоторые из ДОСовских программ не запустятся, или даже включить поддержку устаревшей EMS-памяти, добавив параметр RAM к драйверу EMM386! Например:
DEVICE=C:\WINDOWS\EMM386.EXE RAM VERBOSE,
при этом, возможно, придется отказаться от драйвера си-ди-рома и некоторых других досовских драйверов для максимального увеличения обьема базовой памяти - лучше всего это сделать, не меняя основные файлы конфигурации, а создав для этой программы свой PIF-файл, в котором и задать нужные значения.
При наличии в корне системного диска файла dblspace.bin или drvspace.bin Windows загрузит соответствующий драйвер сжатых дисков, даже если вы не используете эту функцию, поэтому не забудьте удалить эти файлы!
Очень полезно посмотреть, что грузится, выбрав в загрузочном меню (нажать кнопку F8, при загрузке ПК, для его вызова) режим «Step-by-step confirmation». При этом вы сможете увидеть и исправить ошибки в конфигурационных файлах которые обычно возникают из-за неправильного написания путей к драйверам и файлам. А проверить, насколько эффективно распределяется память, можно с помощью команды «MEM /P/C», которую надо набрать в меню «Выполнить» («Run») кнопки «Пуск». Если в появившемся окне вы увидите примерно такие значения:
Largest executable program size=614032 (600k)
Largest free upper memory block=0 (0K)
MS-DOS is resident in the high memory area,
то все в порядке. Еще одна полезная команда «MEM /D/P» более детально покажет использование памяти.
Иногда нужно выделить больше памяти под переменные окружения (например, если вы хотите задать дополнительные параметры для видеоускорителя от 3dfx в автоэкзеке, а получаете сообщение «Out of environment space»), в этом случае пропишите строку в конфиге:
SHELL=C:\COMMAND.COM /P /E:1024
Обьем свободной оперативной памяти может резко уменьшится при использовании буфера обмена, особенно если в нем хранится большая картинка, поэтому не забывайте после работы с буфером в мощных программных пакетах очистить его, скопировав всего одну букву из блокнота, например.