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

Данное обстоятельство учтено в спецификации XMS, и метод доступа к такому сегменту реализован в уже упомянутом драйвере HIMEM.SYS, а также в ряде других драйверов. Если этот или аналогичный драйвер к системе подключен, то можно считать, что имеется область адресного пространства микропроцессора, охватывающая диапазон адресов от 1М до 1М+64К—17, и называемая областью высокой памяти (НМА – High Memory Area). Расширенную память, попадающую в этy область, называют высокой памятью (high memory).

Высокая память может обеспечивать хранение, как данных, так и выполняемых программ, поскольку адресуется непосредственно, без переключения режимов работы микропроцессора. Однако спецификация XMS допускает использование данной памяти только единственной программой. (И это понятно – возможен единственный сегментный адрес.) Чаще всего такой программой является сама DOS, и тогда часть ее резидентного кода перемещается в высокую память, что частично освобождает стандартную память для выполняемых программ.

Обычно термины НМА и high memory считают синонимами, но тогда терминология оказывается непоследовательной. Поэтому мы не будем отождествлять эти, два понятия.

1.6 Верхняя память

Мы уже  говорили о том, что в UMA обычно остаются «дыры». Одна из 64-Кбайт «дыр» может задействоваться под окно отображаемой памяти. Но даже при этом условии в UMA можно было бы дополнительно разместить почти 100 Кбайт так нужной памяти. Оставшиеся «дыры» можно «заполнить» расширенной памятью, если обеспечить отображение их адресов на их физические адреса, превышающие 1М. Это с успехом можно сделать на компьютере с микропроцессором 80386 и выше, поскольку такие процессоры способны реализовать преобразование одних адресов (логических) в другие: адреса (физические). Описания техника аналогична эмуляции отображаемой с использованием расширенной памяти, но имеются два существенных отличия:

1)  невозможно использовать память, превышающую размеры «дыр» (то есть механизм переключения страниц не поддерживается);

2)  в заполненные памятью «дыры» можно загружать не только данные, но также драйверы и резидентные программы, что высвобождает стандартную память для других программ.

Память, заполняющая «дыры» в UMA, называется верхней (upper memory), или UMB-памятью (Upper Memory Biocks – блоки верхней памяти). Очевидно, верхняя память состоит из нескольких фрагментов, называемых регионами. Поэтому, видимо, вместо UMB  лучше было бы использовать термин «Upper Memory Reqions» (UMR).

Из-за присущей верхней памяти фрагментированности, определяющей небольшие размеры регионов, в нее не удается загрузить большие программы (как известно, программный код должен быть непрерывным). Вот почему о возможности загрузки в верхнюю память нерезидентных программ обычно не вспоминают, хотя она в принципе допустима.

Некоторые, но отнюдь не все функции управления верхней памятью зафиксированы в спецификации XMS и их реализует HIMEM.SYS. Однако всеобъемлющая поддержка верхней памяти осуществляется в DOS не этим, а другим драйвером, который еще и эмулирует отображаемую намять, а именно, драйвером EMM386.ЕХЕ. Есть много других администраторов верхней памяти различных производителей. Некоторые администраторы «умудряются» даже реализовать верхнюю память на ПК классов XT и AT, используя для ее эмуляции отображаемую память.

Разновидность компьютеров класса AT, снабженных специальными схемами управления памятью, аналогично компьютерам с МП 80386 и выше, способен производить переадресацию на логическом уровне и тем самым способен поддерживать верхнюю память.

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

Некоторые модели ПК различных классов, начиная с XT, имеют аппаратную верхнюю память, то есть оперативную память емкостью 384 Кбайт, заполняющую UMA. В этом случае регионы верхней памяти доступны изначально.