Кафедра МОП ЭВМ Драйвер управления расширенной памятью HIMEM,SYS, страница 5

Отображаемую память, удовлетворяющую спецификации LIM EMS, точнее следовало бы назвать EMS памятью. Однако другие спецификации, основанные на отображении страниц, не получили сколько-нибудь широкого распространения, поэтому использование термина «отображаемая память» можно считать вполне приемлемым.

1.4 Расширенная память

Вам уже известно, что ПК с микропроцессорами не ниже 80286, т.е. компьютеры, начиная с класса AT, могут адресовать память емкостью существенно превышающей 640 Кбайт, и зачастую комплектуются памятью значительного объема (расширенной памятью). Раньше вся расширенная память ПК класса AT могла задействоваться только для создания в ней виртуальных дисков, а в компьютерах на базе микропроцессоров 80386 и выше - еще и  для эмуляции отображаемой памяти. Позже расширенная память стала использоваться некоторыми программными продуктами, но каждым из них – своим, уникальным способом.

Для более полного использования расширенной памяти в 1988г. фирмой Microsoft совместно с фирмами Lotus, Intel и АST предложена спецификация расширенной памяти (XMS – eXteiided Memory Specification). Эта спецификация определяла правила доступа как к самой расширенной памяти, так и к дополнительной памяти двух других типов (см. ниже), за счет нее создаваемой. Программный драйвер, реализующий спецификацию XMS, позволяет пересылать данные из стандартной памяти в расширенную и обратно. {Размещение выполняемых программ в расширенной памяти спецификацией не предусматривается..) Такой драйвер называется администратором расширенной памяти (ХММ – еХtended Memory Menager). Одним из наиболее известных ХММ является драйвер Н1МЕМ.SYS, входящий в комплект поставки DOS, начиная с версии 4.0. Способ использования дополнительной памяти, принятый в XMS, отличается как от EMS, так и от подхода воплощенного в концепции виртуального диска.

Технически доступ к расширенной памяти осуществляется путем переключения микропроцессора из реального в защищенный режим работы, где вся память ПК может адресоваться без каких-либо трудностей. Как уже отмечалось, переход в защищенный режим, и особенно возврат из него выполняются не просто. Реализованный в ХМS - драйвере способ трудоемок и не отличается высокой надежностью, что является причиной запрета на загрузку выполняемых программ в расширенную память.

Аналогично отображаемой памяти, выделение памяти осуществляется блоками (ЕМВ – Extended Memory Block) и по специальному запросу от программ (автоматически расширенная память программам не предоставляется). Программа, запросившая блок расширенной памяти, получает в свое распоряжение обработчик и пользуется им при доступе к блоку памяти.

Расширенную память, управление которой согласуется со спецификацией XMS, правильнее было бы называть XMS – памятью, поскольку сама расширенная память может использоваться и по другим правилам. Однако, отчасти отдавая дань традиции, будем использовать термин «расширенная память», подразумевая XMS-память. Тем не менее, при необходимости будут делаться соответствующие оговорки, в частности, будем употреблять термин расширенная базовая память в противовес собственно XMS-памяти.

1.5 Высокая память

Высокая память поддерживается благодаря использованию различий микропроцессора 80286 (и выше), с одной стороны, и процессора 8088/86, с другой стороны, при работе в реальном режиме. В  микропроцессоре 8088/86, имеющем 20-разрядную адресную шину, адресация 64-Кбайт сегмента, начинающегося с последнего параграфа UMA, невозможна, так как старший (двадцать первый) разряд адреса отбрасывается. При проектировании же прибора 80286 (имеет 24-разрядную адресную шину) была допущена ошибка, в результате которой адресация в данной ситуации производилась к первым 64 Кбайт расширенной памяти, то есть к памяти, находящейся за 1-Мбайт границей (точнее – к первые (64 Кбайт—16 байт), поскольку первый параграф остается в UMA). Для устранения описанного несоответствия в ПК класса не ниже AT устанавливается специальный узел (адаптер), управляющий адресной линией А20, которые нумеруются с нуля. Этот узел, тем не менее, можно заблокировать, и доступ к сегменту, лежащему выше UMA, будет разрешен.