Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад] [Содеожание] [Дальше]

Тонкая настройка и оптимизация MS-DOS

© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 236 стр.

4. ОПЕРАТИВНАЯ ПАМЯТЬ

  • 4.1. Теория: Как использовать всю доступную память?
  • 4.2. Практика: Эффективное использование оперативной памяти
  • 4.3. Опытному пользователю
  • Если вы помните историю появления персональных компьютеров, то наверное знаете, что объём оперативной памяти в них был порядка сотни-двух килобайт. В то время этого было достаточно для всех имеющихся тогда программ.

    Фирма 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 килобайта памяти.

    Возникает несколько странная ситуация - память есть, но пользоваться ей нельзя!

    4.1. Теория: Как использовать всю доступную память?

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

    При необходимости окна могут двигаться по дополнительной памяти, позволяя программам адресовать весь объём дополнительной памяти.

    Запомните: расширенная память и дополнительная память - разные вещи!

    • Расширенная память (extended memory) - лежит в адресном пространстве процессора выше границы 1024 килобайт, непосредственно адресуется процессорами 80286/80386/80486 в так называемом "защищённом режиме". Операционная система MS-DOS не может непосредственно использовать расширенную память для загрузки и выполнения программ. Вы можете использовать расширенную память для размещения ядра MS-DOS, системных буферов, резидентных программ и драйверов. Расширенная память располагается непосредственно на материнской плате компьютера.
    • Дополнительная память (expanded memory) - отображается в окна, расположенные в адресном пространстве ниже границы 1024 килобайта, то есть в стандартную память. Эта память доступна MS-DOS и программам, работающим в "реальном режиме", т.е. в дополнительную память могут загружаться программы и эти программы могут там выполняться под управлением MS-DOS. Дополнительная память располагается на отдельной плате, которая вставляется в слоты расширения материнской платы компьютера. Для работы дополнительной памяти в файле CONFIG.SYS должен быть установлен специальный драйвер, поставляющийся вместе с платой памяти.

    Ещё одно замечание, касающееся использования программами дополнительной памяти: для получения доступа к дополнительной памяти программы должны непосредственно вызывать драйвер дополнительной памяти. Т.е. для того, чтобы использовать дополнительную память, программы должны быть составлены специальным образом.

    Для иллюстрации сказанного выше мы приведём рисунок, на котором изображена упрощённая карта распределения оперативной памяти:

    Возможности, имеющиеся у вас для оптимизации использования оперативной памяти, сильно зависят от типа процессора и наличия расширенной или дополнительной памяти.

    Компьютер IBM PC или IBM XT

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

    Компьютер IBM AT с процессором 80286

    Если ваш компьютер содержит процессор 80286, вы можете предпринять следующие шаги, направленные на более эффективное использование оперативной памяти.

    • Ядро операционной системы MS-DOS версии 5.0, её буфера и рабочие области можно перенести в область адресов, лежащую выше границы 1024 килобайт. При этом доступная для программ область оперативной памяти увеличится на несколько десятков килобайт.
    • Стандартная IBM AT с процессором 80286 обычно имеет по крайней мере 384 килобайта расширенной памяти. Эту память лучше всего задействовать для организации кэширования дисков. Кэширование дисков кардинальным образом улучшит производительность дисковой подсистемы компьютера.
    • Если вы располагаете расширенной памятью размером в несколько мегабайт, имеет смысл увеличить размер кэша до 2 мегабайт. Кроме того, можно организовать в расширенной памяти электронный диск.
    • Если размер расширенной памяти составляет 384 килобайта, но имеется ещё и дополнительная память, вы можете организовать кэш в расширенной памяти и электронный диск в дополнительной. Если вы работаете с программным обеспечением, использующим дополнительную память, лучше ограничиться дисковым кэшем в расширенной памяти.

    Компьютеры с процессорами 80386 или 80486

    Если ваш компьютер содержит процессор 80386 или 80486, к возможностям, перечисленным выше, добавляется ещё две.

    • Вы можете разместить практически все используемые драйверы и резидентные программы в расширенной памяти. При этом объём памяти, доступной прикладным программам, составит 618-620 килобайт!
    • Вам становится доступна эмуляция дополнительной памяти с использованием расширенной памяти.

    Остановимся подробнее на второй возможности.

    Обычно компьютеры с процессорами 80386 или 80486 оснащены расширенной памятью объёмом от 2 до 64 мегабайт (вам могут встретиться компьютеры с ещё большим объёмом расширенной памяти). Однако многие программы рассчитаны на использование дополнительной памяти.

    Получается, что у вас есть море расширенной памяти, но вам-то нужна дополнительная! Как быть в этом случае? Не покупать же ещё и плату дополнительной памяти!

    В этом случае необходимо воспользоваться драйвером .i.EMM386.EXE;, входящим в состав MS-DOS версии 5.0. Этот драйвер использует часть расширенной памяти для эмуляции в ней дополнительной памяти. То есть у вас становится меньше расширенной памяти, но появляется дополнительная.

    4.2. Практика: Эффективное использование оперативной памяти

    Приведём конкретные рекомендации, которые позволят вам максимально задействовать установленную в компьютере оперативную память.

    Компьютер IBM PC или IBM XT

    Как мы уже говорили раньше, компьютеры этого класса не имеют расширенной памяти. Плата дополнительная памяти покупается отдельно, поэтому в большинстве случаев компьютеры 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.

    Компьютер IBM AT с процессором 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 и все её рабочие области должны быть размещены в расширенной памяти.

    Как вы можете убедиться сами, для увеличения размера доступной программам оперативной памяти на несколько десятков килобайт вам достаточно сделать две вещи:

    • обновить версию MS-DOS до 5.0;
    • поместить в файл CONFIG.SYS приведенные выше две строки.

    Учтите, что эти две строки должны располагаться в файле CONFIG.SYS именно в том порядке, в котором они были приведены выше - вначале необходимо подключить драйвер HIMEM.SYS, а затем указать MS-DOS о необходимости загрузки её ядра и областей данных в старшие адреса памяти строкой DOS=HIGH.

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

    Компьютеры с процессорами 80386 или 80486

    Если вы - обладатель компьютера с процессором 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, ваши резидентные программы и драйверы не попадут автоматически в расширенную память. Для того, чтобы разместить драйверы и резидентные программы в расширенной памяти, вам необходимо сделать следующее:

    • подключить драйвер HIMEM.SYS;
    • поместить в файл CONFIG.SYS строку "DOS=HIGH,UMB";
    • для загрузки драйверов вместо оператора "DEVICE=" использовать оператор "DEVICEHIGH=";
    • для загрузки резидентных программ в файле AUTOEXEC.BAT использовать команду LOADHIGH, передав ей в качестве параметра имя и параметры загружаемой резидентной программы.

    Для примера приведём образец файла 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.

    4.3. Опытному пользователю

    Ещё об оперативной памяти

    Для более эффективного использования памяти в компьютерах на базе процессоров 80386 или 80486 необходимо полное понимание механизма, позволяющего загружать драйверы и резидентные программы в расширенную память. Для этого мы вновь вернёмся к карте распределения памяти. Расскажем подробнее об использовании различных участков оперативной памяти операционной системой MS-DOS версии 5.0 при её загрузке в старшие адреса памяти указанием DOS=HIGH в файле CONFIG.SYS.

    Область от 0 до 640 килобайт

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

    Область от 640 до 1024 килобайт

    Эта область зарезервирована фирмой IBM для аппаратного обеспечения. В ней находятся:

    • память видеоадаптера (адреса от A000:0000 до BFFF:FFFF);
    • ROM для обслуживания видеоадаптеров, дисков и другой аппаратуры (адреса от C000:0000 до EFFF:FFFF);
    • системный BIOS (адреса от F000:0000 до FFFF:000F).

    Память с адресами от 640 до 1024 килобайт - это зарезервированная память, она играет ключевую роль в механизме, используемом для расположения драйверов и резидентных программ в расширенной памяти. Эта память также используется драйверами дополнительной памяти.

    Как правило, зарезервированная память задействована не полностью, в ней есть свободные области. Эти свободные области и используются при работе с расширенной или дополнительной памятью.

    Драйвер EMM386.EXE отображает свободные области на расширенную память, пользуясь виртуальным режимом работы процессоров 80386 или 80486 (.i.режим виртуального процессора 8086;). К сожалению, в этой книге нет места для детального описания виртуального режима работы. Для нас важно, что процессор, находясь в виртуальном режиме при использовании драйвера EMM386.EXE адресуется к свободным областям зарезервированной памяти. При этом процессор использует механизм адресации, соответствующий реальному режиму работы. Однако на эти свободные области зарезервированной памяти отображаются участки расширенной памяти, находящиеся выше границы 1024 килобайта.

    Если поместить в свободные участки зарезервированной памяти, отображаемые на расширенную память, драйверы или резидентные программы, физически они окажутся в расширенной памяти. Но сами они об этом не будут знать ничего, продолжая работать так, как будто они находятся в стандартной памяти ниже границы 1024 килобайта.

    Драйверы дополнительной памяти также используют свободные участки зарезервированной памяти. Они располагают там окно размером 64 килобайта, отображаемое с помощью специальной аппаратуры на дополнительную память, установленную на отдельной плате. Дополнительная память не входит в адресное пространство процессора и не может адресоваться им непосредственно ни в реальном, ни в защищенном режиме. Она отображается в окно, расположенное в зарезервированной памяти и программы адресуются к ней только через это окно.

    Разумеется, программы могут передвигать окно, адресуя через него по частям всю дополнительную память.

    Область от 1024 килобайт и выше

    Это расширенная память. Её начальный участок от 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 для решения следующих задач.

    • Отображение расширенной памяти на свободные участки зарезервированной памяти компьютера, лежащие в диапазоне адресов от 640 килобайт до 1024 килобайт. Драйвер QEMM-386 выделяет из зарезервированной памяти участки размером 4 килобайта. Расположенные рядом участки объединяются в области. Эти области впоследствии могут быть использованы для загрузки драйверов и резидентных программ.
    • Эмуляция дополнительной памяти с использованием расширенной памяти. Для эмуляции используется участок зарезервированной памяти размером 64 килобайта. Быстродействие дополнительной памяти, созданной драйвером QEMM-386, больше, чем созданной драйвером EMM386.EXE.
    • Драйвер QEMM-386 может переписать содержимое медленной памяти BIOS в область быстродействующей расширенной памяти. Драйвер выполняет отображение этого участка быстродействующей памяти в диапазон адресов BIOS. При этом значительно возрастает скорость выполнения программ, активно использующих BIOS.
    • Если в вашем компьютере установлен видеоадаптер EGA или VGA, и вы не используете графические режимы работы видеоадаптера, драйвер QEMM-386 выделит вашим программам дополнительно 96 килобайт видеопамяти.

    Мы опишем только основные возможности драйвера 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-386

    Приведём таблицу некоторых, самых важных на наш взгляд, параметров драйвера 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, могут работать без тактов ожидания. В них также имеется возможность использования теневой памяти.

    [Назад] [Содеожание] [Дальше]