DOSMEM/Dosmem icon

DOSMEM/Dosmem



НазваниеDOSMEM/Dosmem
Дата конвертации28.08.2012
Размер34.62 Kb.
ТипДокументы
1. /DOSMEM/Dosmem.txt
Cофтпанорама 1991, No. 6 (20) *** REPRINTS ***  Составитель: Н.Н. БЕЗРУКОВ
**************************************************************************
                                     Данный материал опубликован в
                                     Электронном журнале АСПЕРС
                                     Перепечатывается с разрешения редакции


             КАК ИЗВЛЕЧЬ МАКСИМУМ ИЗ СИСТЕМНОЙ ПАМЯТИ DOS
                           В ВЫСШИХ АДРЕСАХ

     Чтобы добиться максимальной производительности работы  компьюте-
ра,  часто приходится совершенствовать свои знания в некоторых спеце-
фических и сложных областях,  однако немногие из них требуют знакомс-
тва   со   столь  запутанными  проблемами,  как  те,  что  связаны  с
дополнительной (expanded) и расширенной (extended) памятью.  Если ваш
компьютер  основан  на  микропроцессоре 386,  или это одна из машин с
микропроцессором 286, то эти проблемы еще более усложняются, посколь-
ку для компьютеров с микропроцессорами 286/386 существует возможность
доступа к еще одной области памяти, называемой памятью в высших адре-
сах (high memory).

                        ┌──────────────────┐  
                        │   ПЗУ BIOS и др. │  ║ 64 Кбайт
                   F000 │__________________│  
                        │                  │  
                        │ кадр страницы EMS│  ║ 64 Кбайт
                   E000 │__________________│  
                        │                  │  
                        │     память в     │  ║
                        │  высших адресах  │  ║ 96 Кбайт
                   C800 │                  │  
                        ├──────────────────┤  
                        │     ПЗУ  VGA     │  ║ 32 Кбайт
                   C000 ├──────────────────┤  
                        │                  │  
                        │      видео-      │  ║
                        │       ПЗУ        │  ║ 128 Кбайт
                        │                  │  ║
                   A000 │__________________│  
                        │                  │  
                        │       DOS        │  ║
                        │                  │  ║
                         ~~~~~~~~~~~~~~~~~~   ║
                        │~~~~~~~~~~~~~~~~~~│  ║
                        │                  │  ║
                        │                  │  ║
                        │                  │  ║
                        │                  │  ║
                        │                  │  ║
                        └──────────────────┘  

     Рис.1. Из 1 Мбайта оперативной памяти, имеющегося обычно в боль-
шинстве вычислительных систем, 640 Кбайт зарезервированы  для  DOS  и
работающих  под ее управлением прикладных программ, а 384 Кбайт оста-
ются недоступными для операционной системы.
Память в высших адресах - это область объемом 384 Кбайт, распо- ложенная между границами 640 Кбайт и 1 Mбайт, зарезервированная для системного пользования - для видеопамяти, BIOS и проч. Такие програм- мы, как QEMM (производства Quarterdeck) и 386max (производства Qualitas) управляют этой областью зарезервированной памяти таким об- разом, что вы можете поместить туда резидентные программы, тем самым освобождая больше обычной памяти под прикладные программы (см. рис. 1). Последние версии этих программ, QRAM (Quarterdeck) и Move'em (Qualitas), также дают возможность некоторым компьютерам с микропро- цессорами 286 получить доступ к этой зарезервированной памяти. Эта статья посвящена подробному рассмотрению того, что представляет собой область памяти DOS в высших адресах и как можно ей воспользоваться, чтобы сделать систему максимально эффективной. Традиция запутывания терминологии Традиционная терминология, используемая для ссылок на память персонального компьютера, весьма запутанна. Расширенная память - это нечто совершенно другое, чем дополнительная память. Ни один из этих двух типов памяти не имеет никакого отношения к памяти в высших адре- сах, если не считать того, что дополнительная память использует об- ласть памяти в высших адресах для собственной индексации. Хотя эта терминология краткая и вполне отвечает действительности, прозрачной ее назвать нельзя. Более того, память в высших адресах между 640 Кбайт и 1 Mбайтом не единственная; существует другая память в высших адресах. Это об- ласть памяти объемом 64 Кбайт (точнее, 64 Кбайт минус 16 байтов), к которой DOS может получить доступ на большинстве компьютеров с мик- ропроцессорами 386/286, когда они работают в режиме реальной адреса- ции. Вторая область памяти в высших адресах расположена непосредст- венно над границей 1MB, и осуществить доступ и управление этой об- ластью памяти можно, используя драйвер HIMEM.SYS (Microsoft). Чтобы объяснить, как разобраться со всеми этими участками памяти, начнем с пояснения терминологии. Стандартная память Большинство читателей в основном знакомы с семейством централь- ных процессоров Intel 8086/8088. PC и PC-XT используют процессор 8088, 8-битовый вариант 16-битового 8086. Для удобства в дальнейшем будем ссылаться только на 8086, поскольку между ними нет принципиаль- ных различий. В процессоре 8086 16 ножек (pin) посылают сигналы, со- ответствующие 16 битам текущих данных, которыми процессор обменивает- ся с системным ОЗУ. Однако данные не имеют никакого смысла сами по себе, если нет возможности следить за тем, что они собой представля- ют. Системная шина должна знать, куда направляются конкретные данные или откуда они поступили. Для выполнения этой задачи процессор ис- пользует еще 20 из своих ножек для создания уникальных адресов памя- ти. Это дает возможность процессору семейства 8086/8088 адресовать 2 в степени 20 уникальных байтов - 1 Mбайт памяти. В оригинальной архитектуре персонального компьютера 640 Кбайт из этого 1 Mбайт было зарезервировано под DOS и прикладные программы, работающие под ее управлением, а область с 640 Кбайт по 1 Mбайт была зарезервирована для системного пользования. Большая часть 640 Кбайт обычной памяти действительно используется почти постоянно, но верно и то, что существуют участки зарезервированной системной памяти, кото- рые система не использует и которые могут быть сделаны доступными для других целей. QEMM и 386max управляют именно этой доступной частью участка памяти, расположенного между 640 Кбайт и 1Mбайт, и именно об этой части памяти следует рассказать подробнее. Удобно и общепринято делить 1 Mбайт памяти на 16 последователь- ных участков по 64 Кбайт каждый. Эти участки, иногда называемые стра- ницами, помечаются шестнадцатеричными целыми числами от 0 до F, т.е., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. (Есть старая програм- мистская шутка, что считать в шестнадцатеричной системе легко, если отрезать большие пальцы). Итак, DOS получает области 0 - 9 (10 участ- ков по 64 Кбайт, всего 640 Кбайт), а система получает остальное: участки A, B, C, D, E, F. Иногда участки по 64 Кбайт разбиваются далее каждый на 16 облас- тей по 4 Кбайт. Области, разумеется, также помечаются шестнадцатерич- ными числами. Например, область А разбивается на дополнительные об- ласти от 0 до F: A0, A1, ... , AF. Как QEMM, так и 386max используют эти шестнадцатеричные адреса. Для завершения картины обе программы добавляют еще два числа, так что 386max ссылается на объединенную об- ласть А6 - А7 следующим образом: A600h - A800h. Последний вариант QEMM (версия 3.0) также принял этот синтаксис, тогда как предыдущие версии обозначили бы ту же самую область как A600h - A7FFh. Мы будем в дальнейшем придерживаться синтаксиса 386max, поскольку он применим теперь и к текущей версии QEMM. Расширенная память Расширенная память, дополнительная память и HI-MEM (Microsoft) - это все средства получить больше памяти, чем стандартный 1MB. Плата микропроцессора 80286 имеет на четыре адресных линии больше, чем 8086 /8088, что позволяет адресоваться к количеству адресов, большему в 16 раз (2 в степени 4). Адреса памяти выше предела 1MB называются расши- ренной памятью. Когда микропроцессор 286 работает как 8088 (т.е., в режиме реальной адресации), он не может получить доступ к этой памя- ти. Чтобы использовать расширенную память, он должен работать в режи- ме виртуальной (защищенной) адресации. Поскольку микропроцессор 286 был спроектирован до того, как Intel стало известно, каким успехом оказался 8088, его разработчики не предусмотрели простого способа переключаться обратно в режим ре- альной адресации из режима витруальной адресации (защиты). Чтобы осу- ществить это обратное переключение, используются разные хитрости, и в масштабе процессора оказывается, что они требуют значительного време- ни на выполнение, таким образом понижая производительность и угрожая потерей прерываний. В силу этих причин до последнего времени не было возможности осуществлять выполнение программы из расширенной памяти. В основном эта память использовалась под буферы ввода-вывода и печа- ти. Программа улучшения возможностей DOS, такая, как Release 3 в составе Lotus 1-2-3, работает, запуская на выполнение программу в расширенной памяти и переключаясь обратно в режим реальной адресации только тогда, когда вызывается сервисная программа DOS. Это возможно для прикладных программ, которые получают в свое распоряжение все ре- сурсы машины, но плохо работает для резидентных программ. На компьютере с микропроцессором 286 можно получить до 15MB рас- ширенной памяти (весь объем памяти - 16MB). Микропроцессор 386 физи- чески способен адресовать 4 гигабайта памяти, т.к. он имеет 32 адрес- ные линии (2 в степени 32 байтов). Большинство из машин семейства 386, тем не менее, устанавливают искусственное ограничение на объем памяти в 15MB, из-за используемых соединительных шин и BIOS. OS/2 использует расширенную память. Однако, поскольку OS/2 рабо- тает в режиме виртуальной адресации (защиты), термин "расширенная па- мять" становится излишним. Под управлением OS/2 все эти определения памяти не используются, есть только одна память - любой ее участок может быть использован. HIMEM Microsoft не был первооткрывателем HIMEM, как обычно считается. HIMEM использовалась ранее DESQview (Quarterdeck), хотя стала широко доступна только с версией Microsoft Windows 2.10. HIMEM использует всего лишь 64 Кбайт из доступной расширенной памяти - точнее говоря, первые 64 Кбайт (минус 16 байтов) расширенной памяти, памяти непос- редственно над 1 Mбайт. Важной для HIMEM особенностью является то, что эти 64 Кбайт доступны из режима реальной адресации и могут быть использованы без средств расширения DOS. Одно из возможных применений HIMEM - позволить DOS разместить там часть себя, таким образом осво- бождая дополнительно часть памяти ниже 640 Кбайт для пользовательских программ. HIMEM в действительности основана на ошибке, на разнице между микропроцессорами 80286 и 8088 в случае, когда 286 работает, как 8088. Кроме того, что процессор разбивает память на страницы - 16 взаимно не пересекающихся участков по 64 Кбайт,- процессор также представляет память в виде пересекающихся участков по 64 Кбайт, назы- ваемых сегментами, которые начинаются с каждых 16 байтов. Предполо- жим, что процессор пытается получить доступ к одному из сегментов, который начинается очень близко к верхней границе 1MB. 8086 при этом совершит циклический переход к памяти в низших адресах, как показано на рис. 2. ┌──────────────────┐  │ Область памяти │ ║ │ в высших адресах │ ║ ├──────────────────┤ ║ │ │ ║ │ │ ║ │ │ ║ │ │ ║ │ │ Обычное │ │ адресное │ │ пространство │ │ в реальном │ │ режиме │ │ ║ │ │ ║ │ │ ║ │ │ ║ │__________________│ ║ │ │ ║ │ │ ║ │ │ ║ ~~~~~~~~~~~~~~~~~~ ║ │~~~~~~~~~~~~~~~~~~│ ║ │ │ ║ │ │ ║ │ │ ║ │ │ ║ │ │ ║ └──────────────────┘  Рис.2. Реально существует две области памяти в высших адресах. Вторая из этих областей имеет объем 64 Кбайт и расположена непосредс- твенно за 1-Мбайтной границей. DOS может получать доступ к этой об- ласти при работе в реальном режиме на большинстве из систем, оснащен- ных процессорами 286 и 386. В случае процессора 80286, однако, адрес, который будет получен в результате операции, находится в действительности непосредственно над границей 1 Мбайт. Это дает возможность в режиме реальной адреса- ции адресовать первые 64 Кбайт (минус 16 байтов) расширенной памяти. Этот участок памяти меньше 64 Кбайт на 16 байтов потому, что послед- ний сегмент начинается на 16 байтов ниже границы 1 Mбайт. Чтобы лик- видировать разногласия в случае, когда микропроцессор 286 работает как микропрочессор 8086, IBM встроила в шину специальные средства, которые заставляют память в режиме реального вроемени переходить цик- лически на низшие адреса, как это происходит в 8086/8088. Драйвер HIMEM занимается как раз тем, что выборочно отменяет действие этой поправки, чтобы программы, написанные особым образом с целью исполь- зования этой области, могли поместить там информацию. Это то, что де- лают Microsoft Windows, DESQview, Ventura Publisher и Carousel. Дополнительная память Дополнительная память (expanded memory), часто называемая EMS (Expanded Memory Specification) или LIM (согласно разработчикам, Lotus, Intel и Microsoft), представляет собой схему коммутации бан- ков, которая позволяет процессору получить доступ к большому объему памяти посредством окна размером 64 Кбайт. (Коммутация банков - спо- соб управления памятью, когда физическая память разбита на несколько сегментов (банков) длиной, равной размеру адресного пространства про- цессора. В каждый момент процессор работает с одним банком). Платы EMS занимают по одной области размером 64 Кбайт адресного пространст- ва выше границы 640 Кбайт. При рассмотрении будем ссылаться на об- ласть, расположенную в адресах D000h - E000h, поскольку она принята по умолчанию для большинства плат. К этой области обращаются, как к рамке страницы. Память EMS логически подразделяется на участки разме- ром по 16 Кбайт, называемые страницами. Эти страницы отличаются от страниц размером 64 Кбайт в адресном пространстве процессора 8086, хотя, так же как и страницы по 64 Кбайт, они не пересекаются. Платы дополнительной памяти имеют специ- альное аппаратное обеспечение, которое может переключаться на те че- тыре из этих страниц, к которым осуществляется доступ, когда процес- сор посылает команду чтения или записи, обращенную к памяти с адреса- ми в рамке страницы. Передвигая это окно посредством программных ко- манд, процессор может получить доступ к такому количеству памяти, ко- торое имеется физически на плате, хотя в каждый момент доступен лишь небольшой участок. Спецификация LIM 4.0 и ранние EEMS расширяли поня- тие, делая возможным передвигать не только рамку страницы, но (при соответствующем аппаратном обеспечении) также и другие области адрес- ного пространства 8086. При соответствующем аппаратном обеспечении этот способ подкачки может быть использован для многозадачного режима DESQview и Windows. Дополнительная память особенно полезна потому, что, в отличие от расширенной памяти и HIMEM, она использует только адреса ниже границы 1MB; следовательно, она может использоваться на машинах с процессора- ми 8086/8088. Теперь к этой путанице карт и разной памяти присоединился мик- ропроцессор 386, который обладает свими собственными средствами рабо- ты с памятью. Микропроцессор 386 поддерживает справочную таблицу, которая позволяет различать физическую и логическую память; он может определить, какая физическая память соответствует данной логической памяти. Примером может служить дублирование ПЗУ. Видео-ПЗУ на многих адаптерах работает значительно медленнее, чем ОЗУ компьютера с про- цессором 386. Можно программно скопировать ПЗУ в ОЗУ, затем привести в соответствие справочные таблицы таким образом, чтобы обращения к адресам, которые логически принадлежат ПЗУ, в действительности пере- давались копии, расположенной в значительно более быстродействующем ОЗУ. Информация, которая, как будут считать программы, размещается в нормальных адресах ПЗУ (логических адресах), будет в действительности размещена в различных физических адресах ОЗУ. Спецификация LIM 4.0 является стандартной спецификацией органи- зации дополнительной памяти. Для доступа к защищенной памяти сущест- вуют две спецификации: XMS (Extended Memory Specification), специфи- кация Microsoft, и VCPI (Virtual Control Program Interface). VCPI дает возможность программе запрашивать защищенные ресурсы у программы управления памятью в режиме виртуальной адресации (защиты), такой, как 386max или QEMM. Программы, работающие в режиме виртуальной адре- сации (защиты), например, Mathematica и Interleaf, могут работать в среде этих программ управления памятью только потому, что они поддер- живают VCPI. Память в высших адресах DOS Остановившись коротко на этих вопросах, можем теперь перейти к рассмотрению того, что собственно является предметом данной статьи: использованию памяти в высших адресах DOS. Область памяти в адресах от A000h до FFFFh была зарезервирована IBM для системного аппаратного обеспечения. На многих машинах, однако, используется не вся эта об- ласть. Например, если на вашей машине стоит обычная системная BIOS, в случае неграфической монохромной системы может использоваться всего лишь 36 Кбайт из зарезервированных 384 Кбайт, тогда как в случае IBM OS/2, видео адаптера 8514/А и платы сети, возможно, из них будет ис- пользоваться свыше 300 Кбайт. Все, что не используется - это адресное пространство, которое "пропадает зря", и куда программы управления памятью компьютера 386 могут поместить действительно используемую па- мять. Рассмотрим позднее особые случаи использования, теперь же оста- новимся на том, что ваша собственная система оставляет без внимания. Вы, наверное, считаете, что хитроумная программа управления па- мятью - QEMM или 386max - способна автоматически обнаружить все выде- ленные и невыделенные участки памяти. Они действительно постараются это сделать, но с нестандартным аппаратным обеспечением связано слиш- ком много параметров, а практически все компьютеры имеют какие-нибудь нестандартные аппаратные средства, так что вся работа не может быть проделана без вашей помощи. Итак, возьмите лист бумаги и карандаш, и пометьте три колонки: "Используется", "Точно свободно" и "Возможно свободно". Затем выдели- те шесть строк для областей от A до F. Теперь мы можем постараться вычислить, какое адресное пространство можно передать программам. Ес- ли бумага и карандаш вас не устраивают, воспользуйтесь вашей излюб- ленной электронной таблицей. Размещение памяти в высших адресах DOS Области A и B зарезервированы для видеопамяти, но в большинстве случаев по крайней мере часть их не используется. Оригинальный монох- ромный адаптер берет из них 4 Кбайт, чтобы разместить 4000 байтов, необходимых для описания текстового экрана (25 строк на 80 столбцов, по 2 атрибута). Эта память начинается с адреса B000h и продолжается почти до адреса B100h. К сожалению, в зависимости от конкретной BIOS вашего компьютера, код простой команды, например, CLS, может занять большую, чем 4 Кбайт, область памяти из отрезка B000h - B100h. AMI BIOS (Northgate) задействует только эти 4 Кбайт, но встроенный AT эф- фективно использует память от B000h до B200h, а некоторые машины Compaq используют память от B000h до B400h. Следовательно, если у вас монохромный адаптер, вам следует проэкспериментировать. ┌──────────────────┐ │ │ │ Бит │ │ интенсивности │ ├──────────────────┤ │ │ │ Бит синего цвета│ ╔════│ │ ║ ├──────────────────┤ ║ │ │ ║ │ Бит зеленого │ ║ │ цвета │ ║ ├──────────────────┤ ║ │ │ B000 ┌──────────────────┐ ║ │ Бит красного │ │ ПЗУ VGA │<══╝ │ цвета │ A000 └──────────────────┘ └──────────────────┘ 64 Кбайта адресного 256 Кбайт платы пространства цент- памяти EGA/VGA рального процессора Рис.3. Используя схему коммутации (bankswitching), платы EGA и VGA, имеющие собственную память, могут работать, используя 64-Кбайт- ное адресное пространство области А. CGA использует 16 Кбайт, от B800h до BC00h. Хотя это оставляет отрезок BC00h - C000h при наличии CGA в принципе свободным, вы можете пользоваться им только на свой риск, поскольку некоторое программное обеспечение предполагает, что эта неиспользуемая видеопамять доступ- на. Такие программы прекрасным образом испортят все, что ваша прог- рамма управления памятью поместит в эту область. Hercules в графичес- ком режиме задействует всю область B. EGA и VGA используют область B800h - C000h в текстовом режиме и тех графических режимах, которые подражают CGA, а также всю область А для графики с высокой разрешаю- щей способностью. Вас может удивить тот факт, что платы с 256 Кбайт (EGA) или даже 512 Кбайт (некоторые VGA) способны ограничиться ис- пользованием адресного пространства области А - т.е., всего 64 Кбайт. Платы используют схему коммутации банков (bankswitching), подобную той, что применяется в программном обеспечении EMS для дополнительной памяти. Вся эта память представляет собой ПЗУ, аппаратным путем под- соединенное к видео-выводу, и таким образом недоступна через карты памяти, как показано на рис. 3. Рис. 4 отражает общую ситуацию для областей A и B. C000 ┌──────────────────┐ C000 ┌──────────────────┐ │██████████████████│ │ │ │██████████████████│ │ │ │██████████████████│ │ │ B100 │▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀│ │__________________│ B000 │▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄│ B000 │██████████████████│ │██████████████████│ │██████████████████│ │██████████████████│ │██████████████████│ │██████████████████│ │██████████████████│ А000 └──────────────────┘ А000 └──────────────────┘ Монохромный IBM Hercules C000 ┌──────────────────┐ C000 ┌──────────────────┐ │ │ │ │ В800 │ │ В800 │ │ │██████████████████│ │██████████████████│ │██████████████████│ │██████████████████│ B000 │▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀│ B000 │██████████████████│ │██████████████████│ │ │ │██████████████████│ │ │ │██████████████████│ │ │ └──────────────────┘ А000 └──────────────────┘ CGA EGA или VGA Рис.4. Области А и В могут размещаться рядом с видео-памятью. Многие видео-платы не используют область оперативной памяти, отведен- ную для них, полностью, несмотря на это видео-память не может исполь- зоваться для других целей. Другой стандартной областью является область F. В ней располага- ется системная оперативная память. Тем не менее, не все системы пол- ностью занимают весь отведенный участок размером 64 Кбайт, и не все из этих 64 Кбайт нужны после загрузки. Например, в системах с послед- ними версиями AMI BIOS память от F000h до F800h используется програм- мой установки и диагностики, которая может быть вызвана во время заг- рузки. Поскольку этот участок не используется после загрузки, можно позволить программе управления памятью разместить там что-нибудь дру- гое. На оригинальном IBM AT память с адресами F600h - FC00h использу- ется под ПЗУ для BASIC, значит, она может быть использована другим образом, если вы готовы пожертвовать BASICA или намерены вместо этого пользоваться GW BASIC. Если вы по натуре авантюрист, можете проэкспе- риментировать, используя на вашей машине часть этого адресного прост- ранства. Для безопасности скопируйте жесткий диск, прежде чем начнете эксперименты и, разумеется, подготовьте загрузочную дискету. Если окажется, что память, которую вы попытались задействовать другим об- разом, принадлежит системному ПЗУ и используется, почти наверняка во время загрузки программы управления памятью произойдет крах системы. На AT область E недоступна, поскольку она аппаратно привязана к пустому гнезду ПЗУ. Для версий QEMM и 386max, настроенных на 386, это не имеет значения, но важно для новых программ, настроенных на 286. Для PS/2 стандартом является 128 Кбайт системного ПЗУ, которое зани- мает адресные области E и F. На большинстве других машин область E совершенно свободна. Но, только для того, чтобы вы не знали наверня- ка, некоторые VGA располагают свое ПЗУ по адресу E000h. Более того, некоторые компьютеры Zenith размещают ОЗУ с C000h по C800h и с E000h по E800h. Это требует ключа в командной строке программ управления памятью, который сообщит им, что в этих областях находится ОЗУ. Области C и D запутаны больше всего. В системах EGA и VGA видео ПЗУ обычно находится на дне области C; при наличии плат IBM для мно- гих разновидностей EGA видео ПЗУ располагается с C000h по C400h, но в некоторых других VGA используется область с C000h по C800h. VGA Video7, Paradise и Compaq используюи ПЗУ в адресах C000h - C600h. Но платы Video7 и Paradise кроме того используют ПЗУ в области C600h - C800h. Более ранние версии QEMM и 386max по умолчанию используют эти области, так что при переключении на определенные видео режимы прои- зойдет крах системы. В результате возникновения этой проблемы техни- ческой поддержки последние версии программ управления памятью не ста- нут использовать память с C600h по C800h в случае, если они обнаружат ПЗУ в адресах C000h - C600h. Если у вас Compaq VGA, проверьте, ис- пользует ли ваша программа управления памятью эту область и, если не использует, дайте команду USE C600-C800 (386max) или команду I=C600-C800 (QEMM). Платы сети или SCSI/ESDI ПЗУ обычно размещаются где-нибудь в другом месте в пределах областей C и D. Проиллюстрируем, как все это работает, на примере конкретной системы. Система включает Video7 VRAM, которая целиком занимает об- ласть памяти А, область B800h - C000h для видео оперативной памяти и область C000h - C800h для видео ПЗУ и специального ОЗУ. Установлена также монохромная плата памяти, использующая память в адресах с B000h по B100h. По умолчанию обе программы управления памятью будут избе- гать всей области B000h - B800h, если обнаружат монохромную плату, значит, нам придется указать им явным образом, чтобы они использовали эту память. В системе имеется также SCSI ПЗУ, которое может быть помещено в разные участки, манипулируя его ключами DIP. Установим его в область C800h - CC00h, чтобы не разбивать на фрагменты оперативную память в высших одресах. В высших адресах DOS больше не размещается ничего, кроме системного ПЗУ. Поскольку последнее имеет тип AMI, можно осво- бодить область с F000h по F800h. С учетом вышесказанного, командная строка QEMM выглядит так: DEVICE=C:\QEMM.SYS RAM ROM I=B100-B7FF I=F000-F7FF FRAME=CC00 Ключевые слова RAM (ОЗУ) и ROM (ПЗУ) указывают QEMM постараться наилучшим образом заполнить пустое адресное пространство логическим ОЗУ и перенести все ПЗУ в быструю память. Две команды I указывают па- мять, которую следует использовать. Команда FRAME касается особеннос- ти Ventura, которая будет описана позднее. Для 386max команды выгля- дят так: DEVICE=C:\386MAX.SYS USE=B100-B800 USE=F000-F800 FRAME=CC00 Ключевые слова RAM и ROM при обращении к 386max не нужны, по- сокльку они подразумеваются по умолчанию. Для старых версий QEMM не- обходимо добавить EXCLUDE=C600-C7FF а для старых версий 386max добавить RAM=C600-C800 Известные проблемы Существуют некоторые особенности, о которых следует знать. Aristocad производит несколько программ, которые обеспечивают большую виртуальную страницу в Ventura Publisher, Microsoft Windows или Excel (SoftKicker, SoftKicker Plus и ExcelMore). Все они используют EGA и VGA в особом режиме, при котором осуществляется доступ ко всей облас- ти A000h - C000h, включая участок B000h - B800h, который обычно сво- боден для систем, использующих только EGA/VGA. Таким образом, вы те- ряете 32 Кбайт места для резидентных программ и должны удостоверить- ся, что ваша программа управления памятью не пытается их задейство- вать. В продукте Ventura 2.0 Professional Edition есть недочет, кото- рый служит причиной выдачи частых сообщений об ошибке в том случае, когда рамка страницы дополнительной памяти начинается выше E000h. По умолчанию программы управления памятью расположат рамку страницы как можно выше. Поэтому, если область F000h - F800h может быть использо- вана, и в вашей системе имеется Professional Edition, необходимо раз- местить рамку страницы как можно ниже. Это поможет избежать конфликта и, кроме того, предотвратит разбиение на фрагменты памяти в высших адресах. Именно для этого служит команда FRAME=CC00 в примерах. Наконец, существует общая проблема (не связанная с этими двумя программами управления памятью), которая касается области памяти в высших адресах DOS и 16-битовых плат VGA. Спецификация шины ISA зас- тавляет шину управлять каждым участком ОЗУ размером 128 Кбайт либо целиком в режиме 8 бит, либо целиком в режиме 16 бит. Следовательно, все области A и B должны быть одного типа, C и D по возможности раз- ного типа, E и F одинакового типа. Video 7 делает платы VGA с ОЗУ и ПЗУ, пригодные для 16-битовых операций; Paradise включает 16-битовое ПЗУ. При инициализации плат происходит поиск 8-битовой памяти, а затем переключение на необходи- мый режим. Таким образом, в системе, которую мы выбрали для примера, VRAM обнаруживает 8-битовый монохромный адаптер в адресах B000h - B100h и переключает все свое видео-ОЗУ на 8-битовый режим; обнаружи- вает ПЗУ адаптера SCSI в адресах C800h - CC00h и переключает ПЗУ на 8 -битовый режим. Замедление ПЗУ не играет роли, поскольку программа управления памятью 386 помещает его в 32-битовое ОЗУ. Это возможно, поскольку перемещение происходит на логическом уровне, а спецификация шины за- ботится только о физическом уровне. Однако, замедление видео-операций в результате 8-битового режима неприятно и может повлечь за собой другие проблемы. Следует принимать во внимание то, что некоторые платы - особенно определенные адаптеры сети - инициализируют свое встроенное ОЗУ только после того, как заг- рузится система. Таким образом, может возникнуть проблема, если это новое ОЗУ 8-битовое, а расположено в области, которую видео-плата привела в 16-битовый режим. Решение не особенно приятно: вам придется использовать ключи DIP для переключения видео-плат в 8-битовый режим. Как только вы разберетесь, какие области памяти могут быть ис- пользованы для резидентных программ, следующей задачей будет их раз- мещение. Вы должны будете побеспокоиться о том, сколько памяти нужно каждой резидентной программе, когда она уже загружена, а также о том, что она, возможно, потребует дополнительной памяти во время загрузки. Например, SideKick Plus занимает всего лишь 70 Кбайт, когда загружен, но требует более 200 Кбайт во время загрузки. Это делает данную прог- рамму непригодной для загрузки в память в высших адресах. Возможно, перспектива расчета всех комбинаций вас напугает - к счастью, как QEMM, так и 386max могут вам помочь. Недавно к их возможностям приба- вились режимы, автоматизирующие такие операции. Установка этих программ оптимальным образом может потребовать значительных усилий, но помните, что вам понадобится сделать это только один раз, зато в результате вы можете получить десятки кило- байтов драгоценного места в оперативной памяти. Через несколько лет, когда большинство из нас будет работать в OS/2, мы будем оглядываться назад и смеяться над тем, что десятки килобайт ОЗУ быль столь ценны, но пока мы ограничены 640 Кбайт, это так. Следующим шагом для вас будет решиться воспользоваться програм- мами, которые позволят получить доступ к памяти DOS в высших адресах. Помните, что кроме управления памятью в высших адресах программы, предлагаемые Quarterdeck и Qualitas, также управляют расширенной па- мятью и имитируют дополнительную память, позволяя вам конфигурировать вашу систему таким образом, чтобы она работала с максимальной произ- водительностью. Мы надеемся, что объяснение нескольких частей голово- ломки памяти, которое мы дали, и подробное рассмотрение высших адре- сов памяти DOS поможет вам в этом оптимизационном процессе. Вам остается только заняться этим.




Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©podelise.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы

Разработка сайта — Веб студия Адаманов