Глава 41 Оптимизация использования памяти В этой главе мы расскажем о том, как с помощью программы MemMaker настроить
файлы конфигурации DOS так, чтобы наиболее эффективно использовать верхнюю
память компьютера и тем самым освободить как можно больше обычной памяти для
прикладных программ. Перед чтением данной главы полезно ознакомиться с главой 39, где описывается ис-
пользование оперативной памяти в DOS. 41.1. Программы' Назначения. Способ p;-i04ii..i Диспетчеры памяти (EMM386, QEMM, 386МАХ и др.) позволяют загружать рези-
дентные программы и драйверы в верхнюю память компьютера, позволяя тем самым
освободить обычную память для прикладных программ. Однако эту возможность не
так-то просто использовать наилучшим образом. Ведь доступная для размещения про-
грамм и драйверов верхняя память не представляет собой один непрерывный кусок, а
состоит из нескольких фрагментов (обычно называемых регионами), расположенных в
"дырах" между адресами памяти, используемыми BIOS и контроллерами. Так что для
эффективного использования верхней памяти необходимо наилучшим образом решить
задачу "укладки" программ и драйверов в регионы верхней памяти, то есть определить
для каждой резидентной программы или драйвера, в какой регион верхней памяти
лучше ее поместить (или, может быть, оставить в обычной памяти), чтобы в результате
разместить в верхней памяти программы и драйверы наибольшего суммарного размера
(это обеспечивает высвобождение максимального количества обычно памяти). Ясно, что сам пользователь не в состоянии решать подобные комбинаторные задачи
(скажем, методом проб и ошибок). И для этого были созданы специальные программы
Ч оптимизаторы использования памяти: Optimize в диспетчере QEMM фирмы
Quarterdesk, Maximize в диспетчере 386МАХ фирмы Qualitas и т.д. В MS DOS 6.0
тоже был включен оптимизатор MemMaker, который мы и рассмотрим ниже. Оптимизаторы выявляют потребности используемых драйверов и резидентных про-
грамм в оперативной памяти, определяют, как наилучшим образом можно разместить
эти программы и драйверы в регионах верхней памяти, и вносят все необходимые из-
менения в файлы конфигурации DOS Ч CONFIG.SYS и AUTOEXEC.BAT. Этот про-
цесс требует минимальных усилий от пользователя и выполняется за пару минут. 'Х...Х,^".,.'1 Если несколько более вдаваться в детали, то процесс оптимизации выполняет-
ся следующим образом. 1. Оптимизатор запрашивает у пользователя параметры оптимизации, после чего вносит
изменения в файлы CONFIG.SYS и AUTOEXEC.BAT. Эти изменения сводятся к тому.
чтобы все упомянутые в файлах CONFIG.SYS и AUTOEXEC.BAT резидентные програм-
мы или драйверы запускались не непосредственно, а посредством специального драйве-
ра, выявляющего их потребности в оперативной памяти. Для оптимизатора MemMaker
эта программа называется SIZER.EXE. Кроме того, вставляются и другие команды, на-
пример, команда запуска самого оптимизатора. 2. Оптимизатор перезагружает компьютер. В процессе загрузки происходит сбор информа-
ции о потребностях используемых драйверов и резидентных программ в оперативной
памяти, а затем автоматически вызывается оптимизатор. 3. Оптимизатор анализирует собранную информацию и определяет, как наилучшим обра-
зом можно разместить резидентные программы и драйверы врегионах верхней памяти.
После этого оптимизатор вносит изменения в файлы CONFIG.SYS и AUTOEXEC.BAT.
реализующие оптимальное размещение резидентных программ и драйверов в регионах
верхней памяти, удаляет из этих файлов вызовы драйвера, служащего для сбора инфор-
мации о потребностях в оперативной памяти, и снова перезагружает компьютер. Глава 41. Оптимизация использования памяти 467 1 4. Если процесс перезагрузки происходит благополучно (компьютер не зависает), то авто-
Г матически вызывается оптимизатор. Как правило, он спрашивает у пользователя, рабо-
1 тает ли компьютер нормально. Если пользователь отвечает утвердительно, то оптимиза-
i тор удаляет из файлов CONFIG.SYS и AUTOEXEC.BAT все свои служебные команды,
после чего процесс оптимизации заканчивается. 41.2. Возможное":' ХХптч^ИJaiХo,:'a MemMaker lХ^,Уi^'.^^ ^,..'^Л iVi^!iiiViCll\Cl Программа MemMaker может выполнять оптимизацию использования памяти на ком-
пьютерах с процессором Intel-80386 или старше, работающих под управлением MS
DOS версии 6.0 или последующих. MemMaker автоматически вставляет (при необхо-
димости) в файл CONFIG.SYS команды запуска драйверов расширенной памяти
HIMEM.SYS и верхней памяти EMM386.ЕХЕ, а также команду DOS=UMB, так что
пользователю беспокоиться о наличии этих команд не надо. MemMaker может автома-
тически удалить команды для запуска других диспетчеров памяти (QEMM, 386МАХ
или NETROOM) и установить вместо них драйверы HIMEM.SYS и EMM386.ЕХЕ.
MemMaker может работать в режиме быстрой оптимизации, в котором пользователю
по ходу оптимизации задается всего два вопроса. MemMaker позволяет отменить ре-
зультаты последнего сеанса оптимизации, если пользователь оказался недоволен его
результатами (для этого надо ввести команду MEMMAKER /UNDO, см. ниже). 41.3. Подготовка к оптимизации Перед выполнением оптимизации желательно выполнить следующие действия: Х просмотреть файлы CONFIG.SYS и AUTOEXEC.BAT на предмет того, не содержит-
ся ли там каких-либо команд для вызова ненужных резидентных программ или
драйверов. Если они имеются, надо их удалить или превратить в комментарии; Х включить все используемые Вами внешние устройства, доступ к которым осущест-
вляется через резидентные программы или драйверы. Дело в том, что многие рези-
дентные программы и драйверы удаляют себя из памяти, если не находят уст-
ройств, для доступа к которым они предназначены; Х выйти из Windows, Shell, QuarterDesk или иных программ-оболочек. Из Norton
Commander можно не выходить.
41.4. Выполнение огиимиза^лии Bbl30LiilPOllJijMM!il Д^ выполнения оптимизации оперативной памяти следует запустить оптимизатор командой:
MEMMAKER После этого работа с оптимизатором выполняется следующим образом (на любом эта-
пе можно работу прервать, нажав (ID). 1. MemMaker выведет экран с описанием назначения программы ("Welcome to
MemMaker"). Для продолжения нажмите CEnterI. Быстодя или 2- MemMaker выведет экран с описанием способов оптимизации. Для выбора между
этими способами нажимайте клавишу (Пробел): ^ 'Ч^Ч на с гра ива ема я
огиимизсшия Express Setup Ч быстрая оптимизация;
Custom Setup Ч оптимизация с настройкой пользователем. Как правило, оптимизацию с настройкой пользователем {Custom Setup) следует
выбирать, лишь если Вы знаете о том, что какая-либо резидентная программа или
драйвер не работает в верхней памяти, если у Вас имеется монитор EGA или VGA
(а не SuperVGA), или если Вы уже проводили быструю оптимизацию и не удовле-
творены ее результатами. В остальных случаях можно выбирать быструю оптими-
зацию {Express Setup). 468 Часть 8. Настройка конфигурации MS DOS Выбрав режим оптимизации, нажмите клавишу (Enter). ' Х"''^ '/.'^л"" ;-i<'4i)KU^i.1MU(,ih 3. MemMaker выведет экран с запросом о том, используете ли Вы программы, тре-
бующие EMS-памяти ("Do you use any programs that need expanded memory
(EMS)"). Нажатиями клавиши (Пробел] выберите ответ (Yes Ч да, No Ч нет), и
нажмите клавишу (Enter). Если Вы не знаете точно, что какая-либо из используе-
мых Вами программ требует наличия EMS-памяти, лучше выберите ответ No. 4-6. Эти шаги осуществляются только при оптимизации с настройкой пользователем
(Custom Setup). Мы рассмотрим их позже. 7, Если MemMaker обнаруживает версию Windows (при быстрой оптимизации это
первая встреченная на дисках версия Windows, а при оптимизации с настройкой
пользователем Ч версия в указанном пользователем каталоге), и это Windows 3.0,
то MemMaker выводит просьбу разрешить сделать изменения в файле
SYSTEM.INI: "Do you want MemMaker to change your SYSTEM.INI file?". Если Вы
ответите Yes, то MemMaker сделает нужные изменения, а исходный вариант фай-
ла SYSTEM.INI сохранит под именем SYSTEM.UMB. При ответе No предложен-
ные изменения надо сделать самостоятельно. Для Windows 3.1 или 3.11 или
Windows for Workgroups, как показывает практика, никаких изменений в файле
SYSTEM.INI не делается и запросов не выдается. C.u4i>Lnoiil-'i(.- и ^- MemMaker сообщает, что будет перезагружать компьютер ("MemMaker will now
,,,..^,,.., ,. i to restart your computer") и просит вынуть дискеты из дисководов. Сделайте это и
'"'' Х">'>'"''Х нажмите клавишу (Enter). i ".()(Х{) ii)t'in)n,-iHi-1i-1 9- MemMaker перезагрузит компьютер, соберет в ходе загрузки сведения о требова-
ниях к памяти драйверов и резидентных программ и на основе этой информации ''"' проанализирует возможные варианты оптимизации использования памяти и выбе-
рет из них наилучшую (по его мнению). При этом на экране промелькнет сообще-
ние: "MemMaker is determining the optimum memory configuration for your com-
puter and has considered ... configurations)". Crioftii'f'ulic о ^0- Затем MemMaker сообщит, что должен опять перезагрузить компьютер, чтобы
проверить новую конфигурацию ("MemMaker will now to restart your computer to Х'". "f^^i ny.int, ^^ ^g ^^ memory configuration"). Выньте дискеты из дисководов и нажмите
клавишу (Enter). К(1НфИ1 ур,1 Ц1'Ч-1 П!:)()!н"1)кн повои ^- MemMaker снова перезагрузит компьютер и спросит, работает ли операционная
система нормально ("Does your system appear to be working properly")^ Если при
загрузке Вы не заметили ничего необычного, нажмите клавишу (Enter). Если за-
метили, выберите нажатиями клавиши (Пробел) ответ No и нажмите клавишу
(Enter). Тогда MemMaker удалит сделанные изменения и восстановит прежнее со-
стояние файлов конфигурации. i '.' lХ'Л.W:^,^f {И1; t)("r/in,r;t4dy 12- Если Вы положительно ответили на предыдущий вопрос, MemMaker выведет от-
чет о результатах оптимизации в виде таблицы: Before After Memory type MemMaker MemMaker Change Free conventional memory: 593 616 595 024 1 408 Upper memory: Used by programs 48 304 49 712 1 408
Reserved for Windows О О О
Reserved for EMS О 65 536 65 536
Free 93 808 26 912 Expanded memory: Disabled В этой таблице приведены размеры различных областей до оптимизации (столбец
Before MemMaker), после оптимизации (столбец After MemMaker), а также измене-
ние этих размеров (столбец Change). Самая важная из этих областей Ч обычная
память, доступная программам (строка Free conventional inemory). По изменению
размера этой области можно судить об эффективности оптимизации. Ниже сооб-
щаются размеры различных областей верхней памяти: используемой драйверами и
резидентными программами (Used by programs), зарезервированной для Windows
(Reserved for Windows), зарезервированной для страницы обмена с EMS (Reserved
for EMS) и свободной верхней памяти (Free). В последней строке таблицы
(Expanded inemory) сообщается, доступна или нет EMS-память до и после оптими-
зации: Enabled Ч доступна, Disabled Ч недоступна. Глава 41. Оптимизация использования памяти 469 Нажмите клавишу (Enter"), и Вы окончите работу с MemMaker. 3.iMf"i:inn!; Если MoiTiMaker лишь ухудшил эффективность использования верхней памяти
(это возможно, если файлы CONFlu.^YS и AUIOEXEC.BAT уже были настроены каким-
либо более мощным оптимизатором другой фирмы), то он сообщает об этом: "Your com-
puter's rnemorv was optimally configured belore you ran MemMaker" (Память компьютера
была оптимально конфигурирована до запуска MemMaker). В этом случае Вы можете либо
вернуться к прежней конфигурации (нажав [rntci^), или оставить конфигурацию, только
что созданную программой MemMaker (нажав C^J). D^ Окончание этой главы при первом чтении можно пропустить 41.5. Оптимизация с настройкой пользователем Процесс оптимизации с настройкой пользователем {Custom Setup) включает дополни-
тельные этапы (п. 4-6 ниже), в ходе которых пользователь может задать различные
параметры оптимизации. Угтянппкч ^' MemMaker выводит экран с запросом дополнительных режимов ("Advanced Op-
tions"). Вы можете перемещаться по этим режимам клавишами (1] и (Т) (значение дополни юльных текущего режима выводится желтым цветом или повышенной яркостью), и изме-
режимов нять значения режимов нажатиями клавиши [Пробел^ (Yes Ч да, No Ч нет): оптимизации Specify which drivers and TSRs to include in optimization? (Указывать, какие
драйверы и резидентные программы включать в оптимизацию?). Выберите
значение режима Yes, если какая-либо резидентная программа или драйвер не
работает в верхней памяти. Тогда MemMaker будет запрашивать разрешения
включения в процесс оптимизации каждой резидентной программы или драй-
вера из файлов CONFIG.SYS и AUTOEXEC.BAT. Иначе выберите ответ No, Scan the upper memory area aggressively? (Выполнять интенсивное сканирование
верхней памяти?) Ч при значении Yes этого режима MemMaker будет искать
свободные блоки верхней памяти не только в обычном диапазоне адресов
(C6000hЧEFFFFh), но также и в диапазоне адресов FOOOOhЧF7FFFh. Кроме
того, MemMaker добавит параметр HIGHSCAN в команду вызова драйвера
EMM386.ЕХЕ, что заставит драйвер EMM386.ЕХЕ также использовать блоки
верхней памяти в диапазоне FOOOOhЧF7FFFh. На некоторых компьютерах при
этом компьютер начинает работать нестабильно или "зависает". Поэтому
обычно для данного режима следует указывать значение No', Optimize upper memory for use with Windows? (Оптимизировать верхнюю память
для работы с Windows?) Ч при значении Yes данного режима MemMaker ре-
зервирует некоторые участки верхней памяти для Windows с помощью пара-
метра WIN драйвера EMM386.ЕХЕ, добиваясь того, чтобы DOS-программам
при запуске из-под Windows было доступно максимальное количество обычной
памяти. Однако количество обычной памяти, доступной при работе вне среды
Windows, при этом может уменьшиться. Как правило, следует использовать
значение данного режима Л/о: Use monochrome region (ВОООЧB7FF) for running programs? (Использовать об-
ласть монохромной памяти для работы программ?) Ч при значении Yes дан-
ного режима MemMaker разрешает использовать для загрузки программ и
драйверов адреса памяти ВООООЧB7FFF (32 Кбайта), вставляя в команду вы-
зова драйвера EMM386.ЕХЕ параметр /1=8000-B7FF. Эти адреса памяти ис-
пользуются монохромными видеоконтроллерами и видеоконтроллерами
SuperVGA. Если Вы имеете компьютер с видеоконтроллером CGA, EGA или
VGA (это, по-видимому, достаточно старый компьютер), то Вы сможете осво-
бодить 32 Кбайта верхней памяти. В остальных случаях надо выбирать значе-
ние данного режима No', Keep current EMM386 memory exclusions and inclusions? (Сохранять текущие ис-
ключения и включения адресов памяти для EMM386?) Ч при задании значе-
ния No данного режима MemMaker исключает из команды вызова драйвера
EMM386.ЕХЕ параметры 1= и Х=, задающие включения и исключения участ-
ков памяти для использования драйвером EMM386.ЕХЕ. Обычно драйвер
Часть 8. Настройка конфигурации MS DOS Выбор Kij li)fl01 a
WllKiuwS Bhibop программ
и драйнорои,
учас1вую1цих
и оптимизации ЕММ386.ЕХЕ сам в состоянии разобраться, какие участки верхней памяти
можно использовать, а какие нельзя (поскольку они уже используются BIOS
или контроллерами). Однако иногда Вы можете захотеть вручную указать
драйверу ЕММ386.ЕХЕ с помощью параметров 1= и Х=, какие участки памяти
он должен или не должен использовать. Чтобы сохранять эти указания, сле-
дует выбрать значение Yes данного режима,
Move Extended BIOS Data Area from conventional to upper memory? (Перемещать
расширенную область параметров BIOS из обычной в верхнюю память?) Ч
при значении No данного режима MernMaker вставляет в команду вызова
драйвера ЕММ386.ЕХЕ параметр NOHOVEEXDBA, что запрещает перемещение в
верхнюю память расширенной области параметров BIOS (EBDA). Это может
быть необходимо в тех редких случаях, когда такое перемещение вызывает
сбои в работе компьютера. Как правило, значение данного режима должно
быть Yes, при этом освобождается на 1 Кбайт обычной памяти больше. Установив значения всех режимов, нажмите клавишу (Enter]. Если MemMaker обнаруживает на диске какую-либо версию Windows, он выводит
сообщение о каталоге, в котором находится эта версия Windows (MemMaker found
a copy of Windows in the following directory). Если это та версия Windows, кото-
рую Вы используете, нажмите клавишу ГЕпТ^). Иначе укажите полное имя катало-
га, в котором находится та версия Windows, с которой Вы работаете, и нажмите
клавишу CbiTeF). Если в шаге 4 Вы выбрали значение Yes режима Specify which drivers and TSRs to
include in optimization, то MemMaker будет выводить на экран строки файлов
CONFIG.SYS и AUTOEXEC.BAT, содержащие команды вызова драйверов и рези-
дентных программ. Для каждой такой команды он будет спрашивать, следует ли
включать драйвер или программу в процесс оптимизации ("Include this driver or
program in the optimization process?"). Нажатиями клавиши Гпробел ] выберите ответ
{Yes Ч да, No Ч нет), и нажмите клавишу (ТпТеТ). Как правило, ответ No надо вы-
бирать для программ и драйверов, которые не могут работать в верхней памяти
(что обнаружено экспериментально или утверждается в документации). В осталь-
ных случаях можно выбирать ответ Yes. Замечанием Чтобы MemMaker никогда не включал программу или драйвер в процесс оп-
тимизации, следует записать имя программы или драйвера в файл MEMMAKER.INF. Этот
файл находится там же, где программа MemMaker (в каталоге с файлами MS DOS). До-
полнительную информацию см. в самом файле MEMMAKER.INF. 6. 41.6. Отмена результатов оптимизации Если результаты последнего сеанса оптимизации Вас не устраивают, можно вернуться
к той конфигурации, которая была до выполнения этого сеанса оптимизации. Для этого
надо ввести команду MEMMAKER /UNDO . Можно отменить результаты оптимизации и вручную. MemMaker сохраняет исходные
варианты файлов CONFIG.SYS и AUTOEXEC.BAT под именами CONFIG.UMB и
AUTOEXEC.UMB в каталоге с файлами MemMaker. Если в файл SYSTEM.INI были
внесены изменения (это делается в Windows 3.0), то исходный вариант этого файла
сохраняется (также в каталоге с файлами MemMaker) под именем SYSTEM.UMB. Замечание. Если Вы выполняли не один сеанс оптимизации, а несколько (не отменяя ре-
зультаты предыдущего сеанса перед выполнением следующего), то исходный вариант кон-
фигурации так восстановить не удастся Ч MernMaker позволяет восстановить только ту
конфигурацию, которая была перед последним сеансом оптимизации. Так что делайте копии
файлов CONFIG.SYS и AUTOEXEC.BAT сами! 4/.7. Прекращение и возобновление оптимизации Прекращение
оптимизации При ответе на любой вопрос MemMaker (не считая предложений нажать (Enter) для
перезагрузки компьютера), Вы можете нажать клавишу СЕЗ) для выхода из программы.
Это может быть необходимо, например, если надо экстренно закончить работу с ком-
|