Перейти к содержимому

Какой объем памяти занимает память hma

  • автор:

Распределение областей системной памяти ([5], с.39)

Логическая структура памяти PC обусловлена особенностями системы адресации процессоров семейства x86. Процессоры 8086/88, применявшиеся в первых моделях PC, имели адресуемое пространство оперативной памяти 1 Мбайт (что ограничивалось 20-разрядной адресной шиной). Эти процессоры использовали сегментную модель памяти, унаследованную и старшими моделями в реальном режиме.

Согласно этой модели, исполнительный адрес AE вычисляется как

AE = S 16 + D,

где S – содержимое сегментного регистра, а D – смещение (записанное в каком-либо регистре или непосредственно в команде), причем и S и D ограничены двумя байтами, т.е. 16-ю двоичными или 4-мя шестнадцатеричными разрядами каждое.

Такое формирование исполнительного адреса обеспечивает доступ к адресному пространству от 00000h до FFFFFh (соответствующему 20-разрядному адресу). Кроме того, при значениях S = FFFFh и D = FFFFh получаемый исполнительный адрес AE = 10FFEFh, указывает на область выше первого мегабайта памяти, однако, старшая единица такого адреса расположена в 21-м разряде, что при 20-разрядной шине адреса дает AE = 0FFEFh. Таким образом, адресное пространство как бы сворачивается в кольцо с небольшим “нахлестом”.

Начиная с процессора 80286 шина адреса была расширена до 24-х разрядов, с 386DX – до 32-х разрядов, а с Pentium II – до 36 разрядов. Но в реальном режиме, используемом DOS, формально доступен только 1 Мбайт памяти, а при эмуляции реального режима в процессоре 80286 было обнаружено, что он эмулирует 8086 с ошибкой: единица двадцать первого разряда адреса A20 (считая с нуля) попадает на шину адреса, и адрес выходит за границы первого мегабайта.

Ошибку исправлять не стали, так как она давала доступ в дополнительный сегмент (64K – 16) оперативной памяти, позволяя увеличить ее объем, доступный прикладным программам. А саму область адресов 100000h — 10EEFEh стали называть высокой областью памяти (High Memory Area – HMA) и грузить в нее небольшие резидентные программы и часть операционной системы. Но для обеспечения полной совместимости с 8086/88 в IBM PC ввели дополнительный вентиль Gate20 адресной шины A20, управляющий передачей на нее сигнала процессора. Переключение этого вентиля сперва осуществлял контроллер клавиатуры, а затем, так как этот вариант оказался слишком медленным, появились и иные варианты его реализации. Это нашло свое отражение в соответствующей опции утилиты установки параметров BIOS.

Основную часть доступного адресного пространства занимает оперативная память. Объем установленной памяти определяет тест, выполняемый сразу после включения питания – Power On Self Test (POST). Обнаружив отсутствие памяти или ошибку, тест останавливается и сообщает объем реально работающий памяти.

Распределение памяти PC, непосредственно адресуемой процессором, приведено в таблице 2 и является следующим

High Memory Area

High Memory Area, HMA — начальный участок дополнительной памяти объёмом 65520 байт (64 килобайта минус 16 байт) с адресами от 10000016 до 10FFEF16 (сразу после Upper Memory Area), доступный в реальном режиме через верхние сегменты адресного пространства. Особенность процессоров 80286 и выше и построенных на них IBM PC/AT-совместимых компьютеров.

Термин HMA был придуман Microsoft и долгое время использовался ею без расшифровки, что породило расшифровку High Memory Area — область высокой памяти. Однако позднее Microsoft документировала HMA как High Memory Arena. [источник не указан 475 дней]

Содержание

Описание

Адресация памяти в процессорах 8086 и 8088 сегментная: полный (линейный) адрес памяти задаётся 16-битным номером сегмента («параграфа») и 16-битным смещением внутри этого сегмента (оба числа, как правило, записываются в шестнадцатеричной форме) и вычисляется по формуле

(сегмент) × 16 + (смещение).

(При этом один и тот же адрес может получаться из разных пар сегмент/смещение — например, полный адрес 100016 доступен и как 0000:1000, и как 0100:0000, и как 0060:0A00).

С помощью сегментной адресации доступны линейные адреса от 0 (0000:0000) до 10FFEF16 (FFFF:FFFF, 1088 Кб). Однако адресная шина процессоров 808x 20-битная и может адресовать только 2 20 байт (1024 Кб или 1 Мб) памяти, то есть область с адресами от 0 до FFFFF16 (от 0000:0000 до FFFF:000F). Адреса же от 10000016 до 10FFEF16 (от FFFF:0010 до FFFF:FFFF) — 21-битные, поэтому при их использовании возникает переполнение, 21-й бит теряется и, например, адрес 10000016 (FFFF:0010) указывает туда же, куда и адрес 0 (0000:0000).

В процессорах 80286/80288 адресная шина 24-битная (возможна адресация 2 24 = 16 Мб памяти), поэтому в них переполнения не происходит.

Компьютеры IBM PC/AT построены на процессоре 80286, но из соображений совместимости с IBM PC и IBM PC/XT, построенных на процессорах 808x, в них был введён логический элемент (вентиль), отключающий 21-й адресный провод (A20) от схемы управления памятью. Этот логический элемент (Gate A20 (англ.  A20 line )) управляется через контроллер клавиатуры (микросхема Intel 8042) и по умолчанию он включён.

Позднее были разработаны программы-драйверы, так называемые A20 handler, которые динамически управляют адресацией и позволяют приложениям, работающим в реальном режиме, использовать область памяти между 1024 и 1088 Кб.

MS-DOS

Впервые HMA была использована в Windows 2.1 (которая работает поверх MS-DOS) в 1988 году и функции A20 handler там выполнял драйвер HIMEM.SYS.

В 1991 году вышла MS-DOS 5.0, умеющая загружать в HMA своё ядро, тем самым освобождая 46 Кб основной памяти для приложений. Последующие версии MS-DOS также поддерживают такую возможность. Драйвер HIMEM.SYS был включён в состав MS-DOS.

Чтобы DOS загрузила своё ядро в HMA, в файл CONFIG.SYS нужно добавить строки:

Другие приложения также могут использовать HMA с помощью функций DOS или прямо через функции HIMEM.SYS, хотя после переноса в HMA ядра DOS свободного места там почти не остаётся.

Путаница названий

Слово англ.  upper обычно переводят на русский как «верхний» («расположенный наверху» [1] ), но и слово high может переводиться как «верхний» (или «высокий» — «находящийся вверху» [2] ). С этим связано множество коллизий при переводе названий Upper Memory Area (Upper Memory Block) и High Memory Area.

В результате, в русскоязычной литературе продолжают использоваться оригинальные англоязычные написания — UMB и HMA (аббревиатура UMA практически не прижилась).

Кроме того, команды devicehigh и loadhigh , несмотря на слово high в названии, загружают программы в UMB, а не HMA. HMA DOS использует только для загрузки своего ядра (если использована команда dos=high или dos=high,umb ).

Верхняя(или высокая ) память HMA – high memory area.

Эта память занимает 64 кбайта – 16 байт и расположена за 1 Мбайт памяти DOS.

16 байт занято ПЗУ BIOS.

Фактически эта память работает в защищенном режиме.

Запуск драйверов HIMEM.SYS и EMM386.exe автоматически переводит ПК в защищенный режим.

Но так как драйвер HIMEM.SYS позволяет работать программам DOS в HMA, то это элемент работы программ DOS в защищенном режиме.

В HMA можно загружать ядро DOS или резидентные программы.

Для этого в CONFIG.SYS после HIMEM.SYS и EMM386.exe ввести строки:

DOS = UMB, HIGH

DeviceHigh = C:\ DOS \ mouse.com

Директива HIGH указывает на действие драйвера HIMEM.SYS.

Директива UMB разрешает управлять областью HMA с помощью EMM386.exe.

Распределение памяти в мультизадачных

Вычислительных системах

Методы распределения памяти

1. Без применения дисков:

* с фиксированными разделами (границами);

* с подвижными (динамическими) границами разделов;

* с перемещаемыми разделами (со сжатием свободных участков ).

2. С применением дисков:

* свопинг;

* сегментная память;

* страничная память;

* сегментно – страничная память.

Распределение памяти фиксированными разделами

В этом случае память разбивается на разделы равных или разных размеров.

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

ОС для нового процесса находит память требуемого объема.

В такой модели памяти уровень мультизадачности заранее ограничен числом разделов.

Независимо от размера программы она занимает весь раздел.

Таким образом, имеет место значительная фрагментация памяти.

Распределение памяти динамическими разделами

В такой памяти ОС выделяет процессу столько памяти, сколько ему требуется из имеющейся свободной.

Первая ОС с подвижными границами IBM 360 / 370.

Перемещаемые разделы

При освобождении памяти процессом появляются свободные участки памяти.

Для их ликвидации ОС выполняет перемещение разделов.

В результате все свободные фрагменты памяти объединяются в одну непрерывную область.

Распределение памяти с применением дисковой памяти

При нехватке объема ОЗУ для организации мультипрограммного режима используется дисковая память.

В этом случае в ОЗУ хранятся только активные задачи и некоторая часть неактивных.

При нехватке места в ОЗУ часть задач по некоторому правилу возвращается на диск.

Такая операция называется свопингом.

Развитием идеи свопинга является сегментно — страничная организация памяти.

Эти модели виртуальной памяти.

Они являются основными в многозадачных режимах современных вычислительных системах.

Виртуальная память

Виртуальная память – этоматематическая память, объем которой определяется адресными полями команд программы.

Используется для многозадачного (защищенного) режима работы процессора.

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

С помощью виртуальной памяти решается задачи:

1. Адресация большого объема памяти, превышающего объем физической памяти.

2. Контроль доступа к памяти программ (сегментам) по привилегиям (каждый сегмент имеет DPL).

3. Защита программ пользователя и ОС друг от друга.

Каждое приложение работает в собственном адресном пространстве.

Это позволяет приложению не влиять на другие.

Совпадение виртуальных адресов переменных и команд не приводит к конфликтам.

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

Параллельное выполнение задач.

Основные модели виртуальной памяти

Современный процессор Pentium поддерживаетследующиемодели виртуальной памяти:

■ сегментная модель;

■ страничная модель;

■ сегментно – страничная модель.

Для организации эффективной и надежной работы в мультипрограммном режиме необходимо иметь аппаратные средства поддержки:

Дата добавления: 2018-08-06 ; просмотров: 419 ; Мы поможем в написании вашей работы!

What is High Memory Area (HMA)? (Explained)

High Memory Area, or HMA, refers to the initial 64 KB or 65,520 bytes of the extended memory from the 1024 KB to 1088 KB of the memory space that can be accessed by the operating system.

KEY TAKEAWAYS

  • High Memory Area is the initial designated space on the memory.
  • The design of the HMA allows addressing it in the real mode and does not need swapping to protected mode.
  • In this space, portions of the operating system, device drivers and TSRs can be loaded depending on the software used.
  • This specific memory area typically ranges between 640 KB and 1024 KB.
  • In hex, this particular region is denoted as A0000 through 100000.

Understanding High Memory Area (HMA)

What is High Memory Area (HMA)

High Memory Area is the specific region in the memory of a computer that usually ranges between 640 KB and 1024 KB. It is represented as A0000 through 100000 in hex.

The High Memory Area is typically used to move programs from traditional memory into it. This helps the computer to have more traditional memory available for its operational needs.

  • It should be independent of its position and use only relative references for compilation so that it can work at the particular addresses in the High Memory Area. This particular requirement will allow sharing only one or, at the most, two pieces of codes in the HMA.
  • It should also be specifically designed so that it can offset relocatable paragraph boundaries where all of the addresses in the memory are fixed up while they are loaded.

However, before the data or the code in the High Memory Area is addressed by the Central Processing Unit (CPU), the driver relevant to each needs to confirm that the matching HMA is recorded in it.

This means that addressing HMA or any such requests made, will need to be channeled through a leftover stub outside the High Memory Area in the computer memory.

This will typically result in invoking the handler so that the gate is enabled temporarily.

Considering the Microsoft products, the High Memory Area feature was used for the first time in the Windows/286 2.1 in 1988. It introduced a specific device driver, called the HIMEM.SYS, to manage this area.

Over time, in the later versions, such as 5.0 of DR-DOS in 1990 and of MS-DOS in 1991, HMA also allowed loading a part of the operating system into it as well. This helped in freeing as much as up to 46 KB of space in the traditional memory.

  • Different device drivers
  • Terminate and Stay Resident (TSR) programs

In this specific area, typically device driver buffer spaces are also allocated along with the shared system memory.

Conclusion

So, after going through this article, you are now well aware of what High Memory Area in the memory of your computer system actually means and what specific types of uses you can put it to.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *