
- •1. Управление памятью
- •1.1 Типы памяти
- •1.2 Стандартная память
- •Р ис. 2. Цепочка блоков памяти
- •1.3 Отображаемая память
- •1.4 Расширенная память
- •1.5 Высокая память
- •1.6 Верхняя память
- •2. Использование средств управления памятью
- •2.1. Общие положения
- •2.2. Драйвер himem.Sys: управление расширенной и высокой памятью
- •3. Использование драйвера himem.Sys для программирования.
- •3.1. Проверка подключения драйвера
- •3.2. Получение адреса управляющей программы
- •3.3. Описание функции драйвера h1mem.Sys
- •Локальное открывание линии а20
- •Локальное закрывание линии а20
- •Освободить область umb
- •3.4. Коды ошибок
- •3.5. Ограничения при использовании области нмa
- •4. Примеры использования драйвера himem.Sys.
Министерство образования Российской Федерации
Комсомольский – на – Амуре государственный технический
университет
Факультет Компьютерных Технологий
Кафедра МОП ЭВМ
Драйвер управления расширенной памятью HIMEM.SYS.
Комсомольск – на – Амуре
2001
Содержание:
стр.
1.Управление памятью 3
1.1 Типы памяти 3
1.2 Стандартная память 5
1.3 Отображаемая память 6
1.4 расширенная память 8
1.5 Высокая память 9
1.6 Верхняя память 9
2. Использование средств управления памятью 10
2.1 Общие положения 11
2.2 Драйвер HIMEM.SYS: управление расширенной и высокой памятью 13
3. Использование драйвера HIMEM.SYS для программирования. 16
3.1 Проверка подключения драйвера 16
3.2 Получение адреса управляющей программы 16
3.3 Описание функции драйвера H1MEM.SYS 17
3.4. Коды ошибок 22
4. Примеры использования драйвера HIMEM.SYS. 23
1. Управление памятью
Когда говорят «память», то в большинстве случаев имеют в виду оперативную память, то есть память, напрямую связанную с микропроцессором и предназначенную для хранения выполняемых программ, а также данных, непосредственно участвующих в операциях. В данном случае будем следовать именно такой интерпретации термина «память».
Под управлением памятью понимают обеспечение доступа к ней, ее учет и распределение между программами, функция управления памятью возлагается на операционную систему. Что касается DOS, то в нее непосредственно встроена только минимальная порция средств по управлению памятью. Другие же средства реализованы как внешние драйверы, и поэтому пользователь должен подключать их к системе явно. DOS также поддерживает ряд команд, имеющих непосредственное отношение к управлению памятью. Как ни печально это констатировать, средства DOS по управлению памятью все еще остаются «темной лошадкой» для многих пользователей ПК.
Одновременно с описанием памяти сделаем попытку навести порядок в терминологии области управления памятью. Дело в том. что даже оригинальная (англоязычная) терминология часто ведет к путанице. Еще большая путаница вносится при неквалифицированном, прямом и бездумном переводе на русский язык оригинальных терминов. С любым из таких переводов еще можно было бы смириться, если бы он был единственным. Но одинаково широко распространенные сейчас трактовки несовместимы между собой настолько, что для понимания того, о чем идет речь, требуется дополнительное указание оригинальных терминов. Возникает закономерный вопрос: зачем же тогда нужны переводы?
Справедливости ради следует отметить, что трудность перевода оригинальных терминов определяется использованием в них, причем в разных смыслах, таких слов, которые при переводе на русский язык становятся синонимами. Так, прилагательное extanded и expanded переводятся как «расширенный», но обозначают разные типы памяти. Аналогично, слова high (высокий, высший, верхний) и upper (верхний, высший) при переводе на русский язык практически неразличимы. В этом и кроется основная причина русскоязычной путаницы
1.1 Типы памяти
В
ажной
характеристикой процессора (в частности,
микропроцессора) является обслуживаемое
им адресное пространство. Адресное
пространство — это совокупность тех
ячеек памяти (обычно — байтов), которые
он в состоянии адресовать. Размер
адресного пространства, то есть суммарная
емкость этих, не обязательно реально
существующих, ячеек, составляет 2n,
где n - разрядность адресной шины
микропроцессора. Оборудование ПК в
Рис.1 Логическая структура адресного пространства.
принципе может уменьшать размер адресного пространства, если память подключена к системной шине с недостаточным количеством адресных линий.
Очевидно, размер адресного пространства ограничивает емкость памяти, которой может комплектоваться машина. Так, если он составляет 16 Мбайт, то бессмысленно оборудовать ПК памятью большей емкости, – к излишку доступ организовать будет невозможно, если не прибегать к специальным аппаратно-программным ухищрениям.
Адресное пространство IBM-совместимых ПК логически делится на три области (рис. 1).
область стандартной памяти (СМА – Conventional Memory Area);
область верхней памяти (UMA — Upper Memory Area);
область расширенной памяти (ХМА — eXtended Memory Area).
СМА имеет диапазон адресов от 0 до 640К – 1 (где К=1024). В ней логически размещается стандартная память (conventional memory). Очевидно, размер стандартной памяти не может превышать 640 Кбайт (сейчас он, как правило, равен этой величине), что для ряда приложений, однако, явно недостаточно. Стандартная память имеется в ПК всегда. Её часто называют обычной памятью или памятью DOS. Термин же «основная память», который иногда используется, здесь неприемлем, поскольку под основной памятью понимают совсем другое — либо просто оперативную память, либо совокупность оперативной и постоянной памяти.
UMA находится в диапазоне адресов от 640Кдо 1М – 1 (где М=1024К), ее размер равен 384 Кбайт. В этой области логически содержатся видеопамять и постоянная память с BIOS, а также могут размещаться дополнительные модули постоянной и оперативной памяти, конструктивно находящиеся в адаптерах ПУ. В настоящее время реально используется лишь небольшая часть UMA. Ниже мы рассмотрим, в каких целях и как могут задействоваться свободные фрагменты данной области, UMA по-другому называют резервной (точнее было бы говорить, зарезервированной) памятью или областью старших адресов DOS.
ХМА располагается в интервале адресов от 1М до UB—1, где UB — количество ячеек (битов) в адресном пространстве микропроцессора (или самого IIK). Для процессоров 8088/86 UB равно 1М (поэтому ХМА ими не поддерживается), для изделий 80286 и 80386SX оно составляет 16М, а для процессоров 80386DX и выше - 4Г (где Г:=1024M). Если адресное пространство допускает ХМА, то в нем логически может содержаться расширенная память (extended memory). Её емкость обычно составляет несколько Мбайт, хотя стандартная комплектация ПК класса AT, поставляемых в Россию, включает всего 384 Кбайт такой памяти. Итого получается, что размер всей памяти равен 1 Мбайт (сюда не входят модули памяти из UMA).
Сама DOS, без дополнительных драйверов-«примочек», способна адресовать только 1 Мбайт адресное пространство. Это, скорее, недостаток не самой DOS, а того микропроцессора (8088/86), для которого она была первоначально разработана. Более современные микропроцессоры при работе в среде DOS вынуждены имитировать (эмулировать) процессор 8088/86 со всеми присущими ему ограничениями. Вы, видимо, знаете, что такой режим работы называется реальным. В другой же, защищенный, режим, где используются все возможности современных микропроцессоров (особенно возможность адресации всей имеющейся памяти), переключиться не просто, но гораздо сложнее вернуться из него в реальный режим без потери данных. Правда, некоторые программные продукты, а отчасти и сама DOS с подключенными внешними драйверами, «умудряются» эту процедуру проделывать.
Теперь становится понятным, почему повышенный интерес вызывают свободные фрагменты UMA, которые можно адресовать непосредственно.
В среде тех операционных систем, которые используют защищенный режим работы микропроцессора (DOS + Windows, Windows NT, OS/2, UNIX и дp.), расширенная память доступна наравне со стандартной. При этом между двумя областями однородной памяти по-прежнему остается UMA. Данное обстоятельство не позволяет избежать фрагментации оперативной памяти, которая не сулит ничего хорошего. Если бы фирма IBM, разрабатывая архитектуру своего первого ПК, учла в ней возможности расширения адресного пространства, то обязательно разместила бы UMA не над, а под СМА, и никаких проблем бы не возникало, Вот яркий пример того, какие последствия может повлечь за собой реализация плохо продуманных основополагающих концепций. Теперь же что-либо делать уже поздно, так как изменение архитектуры ПК воспрепятствует совместимости со всеми вытекающими из этого последствиями.
Всю память, не являющуюся стандартной, объединим в категорию дополнительной памяти. К ней, в частности, относится уже упомянутая расширенная память. Другие разновидности дополнительной памяти, а именно, отображаемая, высокая и верхняя память, определяются и описываются ниже.