Если вы помните историю появления персональных компьютеров, то наверное знаете, что объём оперативной памяти в них был порядка сотни-двух килобайт. В то время этого было достаточно для всех имеющихся тогда программ.
Фирма IBM в своем первом персональном компьютере IBM PC использовала процессор Intel 8086, способный непосредственно адресовать 1024 килобайта оперативной памяти. Из этого адресного пространства фирма IBM использовала для операционной системы и программ 640 килобайт памяти, зарезервировав оставшиеся 384 килобайта для системного постоянного запоминающего устройства, дисплейного адаптера и другой аппаратуры.
Однако по мере того, как компьютеры становились всё мощнее и мощнее, для них находились новые задачи, требующие всё большего объёма оперативной памяти. Первоначально заложенного в архитектуру IBM PC объёма памяти программ (640 килобайт) стало недостаточно для решения сложных задач.
С появлением процессора Intel 80286, способного адресовать до 16 мегабайт оперативной памяти, возникли предпосылки для расширения доступного программам адресного пространства. Архитектура компьютера IBM AT позволяет использовать для программ все 16 мегабайт памяти.
Казалось бы, всё хорошо, однако даже если ваш компьютер содержит 16 мегабайт оперативной памяти, операционная система MS-DOS может использовать для себя и программ только первые 640 килобайт. При этом самим программам достаётся обычно не более 500 - 550 килобайт основной оперативной памяти, остальная память используется MS-DOS для своих собственных нужд.
Это связано с тем, что MS-DOS использует так называемый реальный режим работы процессора 80286. В реальном режиме процессор 80286 становится несколько улучшенным аналогом старого процессора 8086, и может адресовать только первые 1024 килобайта памяти.
Возникает несколько странная ситуация - память есть, но пользоваться ей нельзя!
Для того, чтобы как-то задействовать память, расположенную выше границы 1024 килобайта (эту память называют расширенной), в новых версиях MS-DOS появились драйверы электронного диска RAMDRIVE.SYS и кэша дисковой памяти SMARTDRV.SYS. Драйвер электронного диска предназначен для организации быстродействующего квазидиска. Этот диск ведёт себя так же, как и обычный, но за счёт того, что данные пересылаются в оперативную память, такой диск работает очень быстро.
Операционная система MS-DOS версии 5.0 может использовать расширенную память и для решения других задач.
В частности, в расширенной памяти (вернее, в её небольшой начальной части размером около 64 килобайт, называющейся верхней памятью) могут располагаться модули, буфера и рабочие области самой операционной системы. Если в компьютере используется процессор 80386 или 80486, можно поместить в расширенную память резидентные программы и драйверы.
Если расположить в расширенной памяти MS-DOS, резидентные программы и драйверы, для программ останется порядка 600-620 килобайт памяти. Это на 100-140 килобайт больше, чем при использовании версий MS-DOS более ранних, чем 5.0. Теперь понятно, зачем надо обязательно переходить к использованию новой версии MS-DOS - у вас будет больше памяти для работы программ! Конечно, это не единственная причина (например, MS-DOS весрии 4.0 содержит ошибки), но довольно существенная.
А если ваша программа имеет размер 2 мегабайта и к тому же ей требуется обрабатывать массивы данных размером в 1 мегабайт?
Для решения таких задач можно использовать дополнительную память. Эта память располагается на отдельной плате, которая вставляется в слот расширения материнской платы компьютера. Дополнительная память может быть установлена даже в компьютерах, выполненных на базе процессоров 8086 или 8088, которые не могут адресовать память за границей одного мегабайта! Как это может быть?
Здесь всё дело в том, что дополнительная память (которая может по размеру достигать 16 или даже 32 мегабайта) отображается с помощью специальных схем в область памяти, лежащую ниже границы 1024 килобайт, то есть в стандартную память. Для работы с расширенной памятью выделяются 4 окна в области адресов выше границы 640 килобайт, но ниже 1024 килобайт. Причём общий размер этих окон составляет 64 килобайта.
Программы обращаются по адресам, соответствующим одному из четырёх окон. Эти адреса находятся в пределах первых 1024 килобайт. Но специальное аппаратное устройство отображает в эти окна часть дополнительной памяти, поэтому фактически программа будет работать с дополнительной памятью.
При необходимости окна могут двигаться по дополнительной памяти, позволяя программам адресовать весь объём дополнительной памяти.
Запомните: расширенная память и дополнительная память - разные вещи!
Ещё одно замечание, касающееся использования программами дополнительной памяти: для получения доступа к дополнительной памяти программы должны непосредственно вызывать драйвер дополнительной памяти. Т.е. для того, чтобы использовать дополнительную память, программы должны быть составлены специальным образом.
Для иллюстрации сказанного выше мы приведём рисунок, на котором изображена упрощённая карта распределения оперативной памяти:
Возможности, имеющиеся у вас для оптимизации использования оперативной памяти, сильно зависят от типа процессора и наличия расширенной или дополнительной памяти.
Этот тип компьютера не оснащён расширенной памятью, но в нём может быть установлена плата дополнительной памяти. Если есть дополнительная память, вы можете разместить в ней кэш диска или электронный диск.
Если ваш компьютер содержит процессор 80286, вы можете предпринять следующие шаги, направленные на более эффективное использование оперативной памяти.
Если ваш компьютер содержит процессор 80386 или 80486, к возможностям, перечисленным выше, добавляется ещё две.
Остановимся подробнее на второй возможности.
Обычно компьютеры с процессорами 80386 или 80486 оснащены расширенной памятью объёмом от 2 до 64 мегабайт (вам могут встретиться компьютеры с ещё большим объёмом расширенной памяти). Однако многие программы рассчитаны на использование дополнительной памяти.
Получается, что у вас есть море расширенной памяти, но вам-то нужна дополнительная! Как быть в этом случае? Не покупать же ещё и плату дополнительной памяти!
В этом случае необходимо воспользоваться драйвером .i.EMM386.EXE;, входящим в состав MS-DOS версии 5.0. Этот драйвер использует часть расширенной памяти для эмуляции в ней дополнительной памяти. То есть у вас становится меньше расширенной памяти, но появляется дополнительная.
Приведём конкретные рекомендации, которые позволят вам максимально задействовать установленную в компьютере оперативную память.
Как мы уже говорили раньше, компьютеры этого класса не имеют расширенной памяти. Плата дополнительная памяти покупается отдельно, поэтому в большинстве случаев компьютеры IBM PC или IBM XT не имеют ни расширенной, ни дополнительной памяти.
В этом случае всё что вы можете сделать для увеличения объёма доступной программам оперативной памяти - это сократить до минимума количество используемых драйверов и резидентных программ.
В следующей таблице мы перечислим драйверы,
входящие в состав MS-DOS версии 5.0. Пользуясь этой
таблицей, вы сможете принять решение о
необходимости включения того или иного драйвера
в состав вашей конфигурации операционной
системы.
Драйвер |
Назначение драйвера и рекомендации по
использованию |
EGA SYS |
Сохранение текущего состояния
видеоадаптера EGA. Этот драйвер вам нужен только в
том случае, если вы работаете с оболочкой DOSSHELL
или WINDOWS и ваш компьютер оснащён видеоадаптером
EGA. |
COUNTRY SYS |
Этот драйвер нужен вам только в одном
случае - если вы используете интернациональную
поддержку, встроенную в MS-DOS, например, работаете
с французским или немецким языками. Возможно
использование файлов COUNTRY.SYS и EGA.CPI от
русифицированной MS-DOS версии 4.01. |
DISPLAY SYS |
Аналогично предыдущему драйверу. |
KEYBOARD SYS |
Аналогично предыдущему драйверу. |
PRINTER SYS |
Аналогично предыдущему драйверу. |
HIMEM SYS |
Драйвер предназначен для управления
расширенной памятью. Он бесполезен на тех
компьютерах, в которых отсутствует расширенная
память. В частности, на компьютерах IBM PC и
IBM XT. |
ANSI SYS |
Драйвер обеспечивает расширенное
управление консолью. Этот драйвер используется
достаточно редко. Подключайте его только в том
случае, если он действительно необходим для
правильной работы используемых вами программ, о
чём можно узнать в документации на эти программы.
|
RAMDRIVE SYS |
Этот драйвер предназначен для
организации электронного диска в оперативной
памяти. Используйте его только в том случае,
когда в компьютере имеется расширенная или
дополнительная память достаточного объёма.
Учтите, что более предпочтительным способом
увеличения быстродействия дисковой подсистемы
является кэширование дисковой памяти. |
SMARTDRV SYS |
Драйвер используется для организации
кэширования дисковой памяти. Его использование
оправдано только на тех компьютерах, которые
имеют расширенную или дополнительную память. |
DRIVER SYS |
Этот редко используемый драйвер
предназначен для поддержки нестандартных или
внешних накопителей на флоппи-дисках. |
SETVER EXE |
Драйвер позволяет "обмануть"
программы, не рассчитанные на использование MS-DOS
версии 5.0. Когда такие программы пытаются
определить версию MS-DOS, драйвер SETVER.EXE возвращает
заранее оговорённое для каждой программы
значение, например, 3.30. Если вы не запускаете
программы, рассчитанные на конкретную версию
MS-DOS, у вас нет необходимости использовать этот
драйвер. |
EMM386 EXE |
Этот драйвер используется для
управления расширенной памятью в компьютерах,
выполненных на базе процессоров 80386 или 80486. Он
совершенно бесполезен, если ваш компьютер
содержит процессоры 8086, 8088, NEC20 или 80286. |
Первое, что необходимо сделать - перенести ядро операционной системы MS-DOS, её буфера и рабочие области в область адресов, лежащую выше границы 1024 килобайт. Эта возможность появилась в MS-DOS начиная с версии 5.0, поэтому если вы пользуетесь более ранними версиями, сейчас самое время обновить MS-DOS до версии 5.0.
После установки MS-DOS версии 5.0 на компьютере IBM AT файл CONFIG.SYS будет содержать следующие две строки:
DEVICE=C:\DOS\HIMEM.SYS DOS=HIGH
Первая строка нужна для подключения драйвера HIMEM.SYS, управляющего расширенной памятью. Этот драйвер необходим для размещения MS-DOS выше границы 1024 килобайт.
Вторая строка указывает, что MS-DOS и все её рабочие области должны быть размещены в расширенной памяти.
Как вы можете убедиться сами, для увеличения размера доступной программам оперативной памяти на несколько десятков килобайт вам достаточно сделать две вещи:
Учтите, что эти две строки должны располагаться в файле CONFIG.SYS именно в том порядке, в котором они были приведены выше - вначале необходимо подключить драйвер HIMEM.SYS, а затем указать MS-DOS о необходимости загрузки её ядра и областей данных в старшие адреса памяти строкой DOS=HIGH.
После того, как вы переместили операционную систему в область адресов выше 1024 килобайт, займитесь размещением кэша дисковой подсистемы и электронного диска. Здесь всё зависит от того, сколько и какой памяти установлено в вашем компьютере. Вам необходимо найти компромисс между размером кэша и дополнительной или расширенной памятью, отведённой используемому программному обеспечению. При этом вы можете воспользоваться рекомендациями, приведёнными в главе, посвящённой настройке дисковой подсистемы компьютера.
Если вы - обладатель компьютера с процессором 80386 или 80486, вам доступна возможность переноса драйверов и резидентных программ в расширенную память, а также эмуляция дополнительной памяти с использованием расширенной памяти. Конечно, при условии, что вы используете операционную систему MS-DOS версии 5.0!
Для реализации этих возможностей подключите драйвер EMM386.EXE:
device=c:\dos\emm386.exe [параметры]
Эта строка должна располагаться в файле CONFIG.SYS после строки, подключающей драйвер HIMEM.SYS.
В качестве параметра вы можете указать размер эмулируемой дополнительной памяти в килобайтах. Например, если вам нужна дополнительная память размером 1 мегабайт, используйте следующую строку:
device=c:\dos\emm386.exe 1024
Если вы не укажите размер эмулируемой дополнительной памяти, будет использовано значение по умолчанию - 256 килобайт.
Для того, чтобы полностью отключить эмуляцию дополнительной памяти, задайте параметр NOEMS:
device=c:\dos\emm386.exe NOEMS
В этом случае драйвер EMM386.EXE будет использоваться только для загрузки драйверов и резидентных программ в расширенную память.
Однако даже если вы подключите драйвер EMM386.EXE, ваши резидентные программы и драйверы не попадут автоматически в расширенную память. Для того, чтобы разместить драйверы и резидентные программы в расширенной памяти, вам необходимо сделать следующее:
Для примера приведём образец файла CONFIG.SYS, в котором подключен драйвер EMM386.EXE:
device=c:\dos\himem.sys device=c:\dos\emm386.exe 2048 dos=high,umb devicehigh=c:\dos\smartdrv.sys 320 devicehigh=c:\dos\ansi.sys
В первой строке подключается драйвер HIMEM.SYS, необходимый для управления расширенной памятью. Во второй строке подключается драйвер EMM386.EXE, который используется для эмуляции двух мегабайт дополнительной памяти и для загрузки резидентных программ и драйверов в расширенную память. В третьей строке указывается, что MS-DOS должен быть загружён в верхние адреса памяти, и кроме того, что должна быть использована возможность размещения драйверов и резидентных программ в расширенной памяти.
Последние две строки - пример размещения драйверов в расширенной памяти.
Для загрузки в расширенную память резидентных программ воспользуйтесь командой LOADHIGH или LH. Приведём фрагмент файла AUTOEXEC.BAT, в котором используется загрузка резидентных программ в расширенную память:
LOADHIGH c:\cyryllic\cyrkeyb c LH c:\mouse.com
Первая строка демонстрирует загрузку в расширенную память драйвера клавиатуры, вторая - драйвера мыши.
Если вам не нужна эмуляция дополнительной памяти, вы можете увеличить размер области расширенной памяти, доступной для загрузки драйверов и резидантных программ на 64 килобайта. Для этого при подключении драйвера EMM386.exe вам необходимо воспльзоваться параметром /I:
device=c:\dos\emm386.exe noems /Ie000-efff
Из-за ограниченного объёма книги мы не можем рассказать вам о всех возможностях драйвера emm386.exe. Для получения дополнительной информации обратитесь к документации по операционной системе MS-DOS версии 5.0.
Для более эффективного использования памяти в компьютерах на базе процессоров 80386 или 80486 необходимо полное понимание механизма, позволяющего загружать драйверы и резидентные программы в расширенную память. Для этого мы вновь вернёмся к карте распределения памяти. Расскажем подробнее об использовании различных участков оперативной памяти операционной системой MS-DOS версии 5.0 при её загрузке в старшие адреса памяти указанием DOS=HIGH в файле CONFIG.SYS.
Это так называемая стандартная память. В области стандартной памяти располагаются вектора прерываний, часть ядра операционной системы, резидентные программы, драйверы. В эту же область загружаются запущенные на выполнение программы. В результате оптимизации нам было бы желательно максимально расширить пространство, доступное программам, переместив ядро операционной системы, драйверы и резидентные программы в расширенную память.
Эта область зарезервирована фирмой IBM для аппаратного обеспечения. В ней находятся:
Память с адресами от 640 до 1024 килобайт - это зарезервированная память, она играет ключевую роль в механизме, используемом для расположения драйверов и резидентных программ в расширенной памяти. Эта память также используется драйверами дополнительной памяти.
Как правило, зарезервированная память задействована не полностью, в ней есть свободные области. Эти свободные области и используются при работе с расширенной или дополнительной памятью.
Драйвер EMM386.EXE отображает свободные области на расширенную память, пользуясь виртуальным режимом работы процессоров 80386 или 80486 (.i.режим виртуального процессора 8086;). К сожалению, в этой книге нет места для детального описания виртуального режима работы. Для нас важно, что процессор, находясь в виртуальном режиме при использовании драйвера EMM386.EXE адресуется к свободным областям зарезервированной памяти. При этом процессор использует механизм адресации, соответствующий реальному режиму работы. Однако на эти свободные области зарезервированной памяти отображаются участки расширенной памяти, находящиеся выше границы 1024 килобайта.
Если поместить в свободные участки зарезервированной памяти, отображаемые на расширенную память, драйверы или резидентные программы, физически они окажутся в расширенной памяти. Но сами они об этом не будут знать ничего, продолжая работать так, как будто они находятся в стандартной памяти ниже границы 1024 килобайта.
Драйверы дополнительной памяти также используют свободные участки зарезервированной памяти. Они располагают там окно размером 64 килобайта, отображаемое с помощью специальной аппаратуры на дополнительную память, установленную на отдельной плате. Дополнительная память не входит в адресное пространство процессора и не может адресоваться им непосредственно ни в реальном, ни в защищенном режиме. Она отображается в окно, расположенное в зарезервированной памяти и программы адресуются к ней только через это окно.
Разумеется, программы могут передвигать окно, адресуя через него по частям всю дополнительную память.
Это расширенная память. Её начальный участок от 1024 до 1088 килобайт - область старшей памяти (High Memory Area - HMA). Именно в эту область MS-DOS версии 5.0 может помещать значительную часть своего ядра и области данных. Интересной особенностью области HMA является то, что она доступна для процессора, работающего в реальном режиме, то есть как раз в том режиме, который использует MS-DOS.
Как такое может быть? Для того, чтобы это понять, необходимо вспомнить механизм сегментной адресации памяти, используемый всеми процессорами серии Intel 80XXX. Физический адрес получается из двух компонент - сегментного адреса и смещения. Каждая компонента - двухбайтовая. Для вычисления адреса в реальном режиме работы процессора к сегментной компоненте, сдвинутой влево на четыре бита, прибавляется компонента смещения.
Например, пусть у нас имеется логический адрес 1234:0005 (при работе с адресами обычно используются шестнадцатеричные числа). Сегментный адрес равен 1234, а смещение - 0005. Сдвигаем сегментный адрес влево на четыре бита, получаем 12340. Затем прибавляем смещение 0005 и получаем физический адрес 12345.
Задавая какое-нибудь значение сегментного адреса и меняя смещение, мы можем адресоваться к любым 64 килобайтам памяти в пределах первого мегабайта.
А что получится, если задать сегментный адрес FFFF, то есть самое большое значение для сегментного адреса?
Очевидно, что конец области оперативной памяти, простирающейся от 0 до 1024 килобайт, имеет адрес FFFF:000F, так как этому логическому адресу соответствует физический адрес FFFFF. Адрес FFFFF - это самый большой адрес, который может быть задан при использовании 20-разрядной адресации. А реальный режим работы процессора использует именно 20-разрядную адресацию.
Зададим себе вопрос: что произойдёт, если, например, при записи в память будет указан логический адрес FFFF:0010?
Если в вашем компьютере установлен процессор 8086 или 8088, то произойдет запись в самую первую ячейку оперативной памяти, имеющую физический адрес 00000, так как перенос из 19-го разряда в двадцатый будет игнорирован (адресные разряды в процессоре 8086 или 8088 нумеруются от 0 до 19).
Процессоры 80286, 80386 и 80486 имеют большее количество адресных линий, поэтому перенос в 20-й разряд не будет потерян. Произойдет адресация памяти за пределами первого мегабайта!
За счёт двадцатого разряда адресной шины процессор в реальном режиме получает доступ к памяти в диапазоне адресов от FFFF:0010 до FFFF:FFFF. Это почти 64 килобайта (без шестнадцати байт). Именно эти 64 килобайта MS-DOS версии 5.0 может использовать для размещения своего ядра и областей данных. Всё что вам нужно для того чтобы использовать таким образом область старшей памяти HMA - это две строки в файле CONFIG.SYS:
DEVICE=C:\DOS\HIMEM.SYS DOS=HIGH
Драйвер расширенной памяти QEMM-386
Для тех, кто желает использовать все возможности по оптимизации использования памяти в компьютерах с процессорами 80386 и 80486, мы расскажем о драйвере расширенной памяти QEMM-386 фирмы Quarterdeck. Мы рассмотрим версию 6.0. Этот драйвер выполняет все функции драйвера EMM386.EXE, но делает это лучше и быстрее. Вы можете использовать QEMM-386 для решения следующих задач.
Мы опишем только основные возможности драйвера QEMM-386. Тех, кто хочет использовать все возможности QEMM-386, мы адресуем к документации, поставляющейся вместе с этим драйвером.
Вы можете установить драйвер двумя способами - с помощью специальной программы INSTALL, имеющейся на дистрибутивной дискете, либо вручную.
Программа INSTALL переписывает все файлы с дистрибутивной дискеты в каталог, указываемый при установке драйвера QEMM-386. Затем она подключает драйвер в файле CONFIG.SYS и настраивает параметры драйвера. Если у вас нет проблем с английским языком, мы рекомендуем вам именно этот способ установки драйвера.
Установка драйвера вручную также несложна. Создайте на диске каталог с именем, например, QEMM, и скопируйте в него все файлы с дистрибутивной дискеты. Затем подключите драйвер QEMM.SYS. Например, если вы установили драйвер в каталог QEMM на диске C:, добавьте в файл CONFIG.SYS следующую строку:
device=c:\qemm\qemm.sys [параметры]
Учтите, что драйвер QEMM.SYS должен располагаться в первой строке файла CONFIG.SYS. Кроме того, вы должны отключить драйвер HIMEM.SYS, так как драйвер QEMM.SYS выполняет сам все функции по управлению расширенной памятью.
После того, как вы подключили драйвер QEMM.SYS и перезагрузили компьютер, запустите программу OPTIMIZE, входящую в состав QEMM-386. Эта программа должна находиться в каталоге QEMM.
Программа OPTIMIZE исследует файлы CONFIG.SYS и AUTOEXEC.BAT и пытается сама перенести все драйверы и резидентные программы в свободные области зарезервированной памяти, отображаемые на расширенную память. В процессе своей работы программа модифицирует файлы CONFIG.SYS и AUTOEXEC.BAT и два раза выполняет перезагрузку операционной системы. Проследите за тем, чтобы перед запуском OPTIMIZE в файле AUTOEXEC.BAT не производился запуск таких программ, как Norton Commander, DOSSHELL или WINDOWS.
OPTIMIZE настраивает параметры драйвера QEMM.SYS, модифицирует строки файла CONFIG.SYS, в которых подключаются драйверы.
После завершения процесса оптимизации выдайте команду MEM и убедитесь в том, что свободной памяти стало гораздо больше.
Приведём таблицу некоторых, самых важных на наш
взгляд, параметров драйвера QEMM.SYS:
RAM |
Этот параметр указывается в тех случаях,
когда необходимо выполнить отображение
расширенной памяти на свободные участки
зарезервированной памяти. Используйте этот
параметр, если вы решили переместить драйверы и
резидентные программы в расширенную память. |
ROM |
Параметр указывает на то, что содержимое
BIOS должно быть скопировано в расширенную память.
Используется для увеличения скорости выполнения
программ, активно использующих BIOS. |
NOEMS |
Если задан этот параметр, драйвер QEMM.SYS
не будет выполнять эмуляцию дополнительной
памяти. В этом случае освобождается
дополнительно 64 килобайта зарезервированной
памяти, в которой могут разместиться драйверы и
резидентные программы. Вам следует указать этот
параметр в том случае, если ни одна из
используемых вами программ не нуждается в
дополнительной памяти. |
Всего же драйверу QEMM.SYS можно указывать десятки параметров, с помощью которых можно выполнить тонкую настройку драйвера практически для любой конфигурации программных и аппаратных средств. Мы научим вас использовать только основные возможности драйвера QEMM.SYS, остальные сведения вы сможете найти в документации на драйвер.
Начните с того, что поместите в самое начало файла CONFIG.SYS следующую строку:
device=c:\qemm\qemm.sys RAM NOEMS
В этом случае драйвер QEMM.SYS будет использоваться только для управления областью старшей памяти HMA и размещения драйверов и резидентных программ в расширенной памяти. Эмуляция дополнительной памяти выполняться не будет.
Далее запустите программу QEMM.COM, которая находится в каталоге QEMM и входит в состав дистрибутивной дискеты. Эта программа нужна для правильной настройки параметров драйвера QEMM-386.
После запуска программа QEMM.COM выведет на экран карту использования оперативной памяти:
Current Mode = ON Expanded Memory Available = 0K Page Frame Address = None Expanded memory is being used. г===================================¬ ¦ Area Size Status ¦ ¦ 0000 - 0FFF 64K Excluded ¦ ¦ 1000 - 9FFF 576K Mappable ¦ ¦ A000 - AFFF 64K Video ¦ ¦ B000 - B7FF 32K High RAM ¦ ¦ B800 - BFFF 32K Video ¦ ¦ C000 - C7FF 32K ROM ¦ ¦ C800 - C9FF 8K High RAM ¦ ¦ CA00 - CAFF 4K ROM ¦ ¦ CB00 - CBFF 4K Split ROM ¦ ¦ CC00 - CFFF 16K Adapter RAM ¦ ¦ D000 - EFFF 128K High RAM ¦ ¦ F000 - F7FF 32K ROM ¦ ¦ F800 - F8FF 4K Mapped ROM ¦ ¦ F900 - FFFF 28K ROM ¦ L===================================-
Области памяти, отмеченные как "High RAM", доступны для размещения в них драйверов и резидентных программ. Оказывается, у вас есть 168 килобайт памяти для драйверов и резидентных программ!
Теперь о том, как же эту память использовать. Запустите другую программу, входящую в состав пакета QEMM-386 - программу LOADHI.COM. На экран будет выведена таблица областей зарезервированной памяти, доступных для загрузки драйверов и резидентных программ:
г=============================================¬ ¦ Region Area Size Status ¦ ¦ 1 B001 - B7FD 31K Available ¦ ¦ 2 C801 - C9FD 7.7K Available ¦ ¦ 3 D001 - EFFF 133K Available ¦ L=============================================-
В данном случае имеется три доступные области с номерами 1, 2 и 3. Эти области имеют размер, соответственно, 31, 7.7 и 133 килобайта.
Для загрузки драйверов в одну из областей используйте драйвер LOADHI.SYS, указав ему в качестве параметра путь загружаемого драйвера и параметры этого драйвера, например:
device=c:\qemm\loadhi.sys c:\dos\ansi.sys
Для загрузки в расширенную память резидентных программ используйте программу LOADHI.COM. Для этого расположите её в файле AUTOEXEC.BAT и укажите ей путь загружаемой резидентной программы и её параметры:
c:\qemm\loadhi cyrkeyb c
Разумеется, что вы можете одновременно загружать в расширенную память несколько драйверов и резидентных программ.
После запуска программы OPTIMIZE запустите программу LOADHI ещё раз. Вы увидите, что драйверы и резидентные программы разместились в разных областях зарезервированной памяти:
г=============================================¬ ¦ Region Area Size Status ¦ ¦ 1 B001 - B207 8.1K Used (DISPLAY) ¦ ¦ 1 B208 - B30E 4.1K Used (ANSI) ¦ ¦ 1 B30F - B370 1.5K Available ¦ ¦ 1 B371 - B57A 8.1K Used (EP) ¦ ¦ 1 B57B - B7FD 10K Available ¦ ¦ 2 C801 - C848 1.1K Used (RAMDRIVE) ¦ ¦ 2 C849 - C8AD 1.5K Used (SJDRIVER) ¦ ¦ 2 C8AE - C8F3 1K Used (SWAKEYB) ¦ ¦ 2 C8F4 - C9FD 4.1K Available ¦ ¦ 3 D001 - DBE7 47K Used (STACKER) ¦ ¦ 3 DBE8 - E78F 46K Used (DISKREET) ¦ ¦ 3 E790 - E7A1 0.2K Available ¦ ¦ 3 E7A2 - EB4A 14K Used (MOUSE) ¦ ¦ 3 EB4B - EFFF 18K Available ¦ L=============================================-
Во всех областях имеется свободное пространство, в которое можно загрузить драйверы или резидентные программы (свободные области отмечены словом Available).
Для оптимального использования свободных областей зарезервированной памяти вы должны знать, сколько памяти требует каждый используемый вами драйвер или резидентная программа. Как это определить?
Запустите программу MFT.COM, которая находится в каталоге QEMM. С её помощью вы можете определить размер памяти, нужный для резидентных программ и драйверов. Выберите из меню "First Meg" слово "Programs". На экран будет выведен список всех загруженных программ с указанием в столбце Size требуемой для них памяти:
Аналогично для драйверов выберите из меню "DOS" слово "DRIVERS". На экран будет выведен список всех загруженных драйверов с указанием в столбце Size требуемой для них памяти:
Далее исходя из размеров областей зарезервированной памяти определите, как лучше распределить по этим областям нужные вам драйверы и резидентные программы.
Программа LOADHI и драйвер LOADHI.SYS допускают явное указание номера области, в которую необходимо загрузить, соответственно, резидентную программу и драйвер. Номер области указывается с помощью параметра /r:.
Например, для загрузки драйвера мыши в область с номером 3 в файле AUTOEXEC.BAT используйте такую строку:
c:\qemm\loadhi /r:3 c:\mouse\mouse
Аналогично для загрузки драйвера ANSI.SYS в первую область в файл CONFIG.SYS необходимо поместить следующую строку:
device=c:\qemm\loadhi.sys /r:1 c:\dos\ansi.sys
Программа OPTIMIZE сама определяет требуемый для используемых резидентных программ и драйверов размер оперативной памяти и сама располагает их оптимальным способом в имеющихся свободных областях. При этом для указания номера области она использует параметр /r:.
Вместе с драйвером QEMM-386 поставляется программа VIDRAM.COM. Эта программа позволяет увеличить доступное для программ пространство оперативной памяти на 96 килобайт, при условии, что вы откажитесь от использования графических режимов видеоадаптера. Кроме того, у вас должен быть установлен видеоадаптер EGA или VGA.
Программа VIDRAM.COM - резидентная. После запуска вы можете её легко подключать или отключать. Для отключения VIDRAM.COM (например, перед запуском графических программ) введите команду:
vidram off
Если вам вновь потребовались дополнительные 96 килобайт памяти для программы, работающей в текстовом режиме, введите команду:
vidram on
Вы можете использовать программу VIDRAM.COM на любом компьютере, имеющем видеоадаптеры EGA или VGA. Тип процессора, установленного в компьютере, значения не имеет.
Когда наиболее целесообразно загружать программы в видеопамять? Например, при работе с такими программами, как dBASE IV или Microsoft WORKS. Эти программы могут работать в текстовом режиме. Для их запуска можно подготовить пакетные файлы, в которых перед запуском, например, WORKS, подключается видеопамять, а после её завершения - отключается:
vidram on works vidram off
Как ни мало время, требующееся для записи данных в оперативную память или для чтения данных из памяти, но оно отлично от нуля. Быстрая память - дорогое удовольствие, поэтому часто получается так, что процессор компьютера может обрабатывать данные быстрее, чем они могут быть получены из оперативной памяти.
Для согласования скорости работы процессора со скоростью работы оперативной памяти часто приходится искусственно занижать производительность процессора, вставляя специальные такты ожидания во временной цикл работы процессора с памятью.
Разумеется, вы не сможете повлиять на быстродействие установленной в вашем компьютере оперативной памяти, не заменив микросхемы памяти на более быстрые. Но в некоторых компьютерах предусмотрена возможность работы как с быстрой памятью, так и с медленной. Для этого в CMOS-памяти необходимо задать количество используемых при работе с памятью тактов ожидания.
Мы уже говорили, что в CMOS-памяти хранится конфигурация аппаратных средств компьютера. После изменения конфигурации компьютера необходимо обновить содержимое CMOS-памяти. Для этого предназначена специальная программа, часто называемая SETUP-программой или программой установки конфигурации.
SETUP-программа может запускаться при включении компьютера (если нажать определённую клавишу, обычно Del), либо эта программа может поставляться на дискете вместе с компьютером.
Если ваш компьютер оснащён быстродействующей памятью, необходимо убедиться в том, что процессор не вставляет циклы ожидания при обращении к памяти.
Это особенно необходимо, если в вашем компьютере установлен процессор 80386 или 80486. Такие компьютеры обычно комплектуются быстрой памятью. И если в CMOS-памяти указано, что надо вставлять циклы ожидания при работе с памятью, компьютер не будет работать с максимальной производительностью.
Другая возможность повышения скорости работы с памятью, но на этот раз с постоянной памятью (BIOS), часто имеется в компьютерах, выполненных на процессорах 80386 или 80486. Эта возможность заключается в копировании содержимого относительно медленной постоянной памяти в специальную область быстродействующей оперативной памяти с последующим преобразованием адресов. Используемая область памяти имеет специальное название - теневая память.
При этом программы, обращаясь по адресам, принадлежащим BIOS, будут работать с быстрой оперативной памятью. Это значительно ускорит выполнение программ, активно обращающихся к BIOS.
Будет выполняться копирование BIOS в теневую память или нет - зависит от установки определённой ячейки CMOS-памяти. Для выбора правильного режима вам необходимо воспользоваться SETUP-программой.
Если у вас компьютер, имеющий процессор 80386 или 80486 и набор управляющих микросхем фирмы Chips & Technology, при запуске SETUP-программы на экране появляется меню:
В этом меню вам необходимо выбрать выделенную строку. При этом вам будет предоставлена возможность выполнить упрощённую процедуру установки конфигурации компьютера.
После выбора первой строки на экран будет выдано предупреждение о том, что неправильная установка конфигурации может привести к зависанию компьютера:
В этом случае необходимо нажать клавишу INS, затем, не отпуская её, выключить питание компьютера и включить его заново. Клавишу INS следует отпустить только после прохождения теста оперативной памяти. После выполнения такой операции в CMOS-память будет записана конфигурация из BIOS.
На этом этапе вы можете отказаться от изменения конфигурации, если нажмёте клавишу ESC.
Если же вы решили изменить конфигурацию, нажмите клавишу ENTER. Вы увидите на экране следующее меню:
Здесь можно задать конфигурацию памяти (Memory Configuration), параметры тактового генератора (Clock Source), режим теневой памяти и использование чередования при работе с памятью (Shadow RAM/Memory Interleave).
С помощью клавиш перемещения курсора вы можете переключаться с одной области параметров на другую. Изменение значения параметров выполняется клавишами PgUp и PgDn. Когда вы будете нажимать на эти клавиши, в выбранной области будет происходить циклическое изменение значений параметров.
Выберите область Waitstate. В этой области задаётся количество тактов ожидания при работе с оперативной памятью. Для увеличения скорости работы установите режим "0 WAIT STATE", при котором такты ожидания не используются.
Затем с помощью клавиш перемещения курсора перейдите в область Shadow RAM/Memory Interleave. Установите режим использования теневой памяти ENABLED, как это показано на предыдущем рисунке.
После изменения конфигурации нажмите клавишу ESC и выберите в появившемся меню строку "WRITE CMOS REGISTERS AND EXIT". Произойдёт перезгрузка компьютера. Обратите внимание на скорость тестирования оперативной памяти - после изменения её режима работы она может заметно возрасти.
Описанная только что SETUP-программа - не
единственная. Вместе с вашим компьютером может
продаваться другая, имеющая больше или меньше
возможностей. Как правило, SETUP-программа
описывается в документации на материнскую плату
компьютера (Motherboard). Возможность изменения
количества тактов ожидания и режим теневой
памяти обычно имеются только в компьютерах,
выполненных на процессорах 80386 и 80486. однако
бывают и исключения - например, модели
компьютеров фирмы SUMMIT, выполненные на основе
процессора 80286, могут работать без тактов
ожидания. В них также имеется возможность
использования теневой памяти.