Верхняя память - UMA
Верхняя память имеет области различного назначения, которые могут быть заполнены буферной памятью адаптеров, постоянной памятью или оставаться незаполненными. Раньше эти "дыры" не использовали из-за сложности "фигурного выпиливания" адресуемого пространства. С появлением механизма страничной переадресации (у процессоров 386 и выше) их стали по возможности заполнять "островками" оперативной памяти, названными блоками верхней памяти UMB (Upper Memory Block). Эти области доступны DOS для размещения резидентных программ и драйверов через драйвер EMM386, который отображает в них доступную дополнительную память.
Стандартное распределение верхней памяти выглядит следующим образом (рис. 2).
- A0000h-BFFFFh - Video RAM, 128 Кбайт - видеопамять (обычно используется не полностью).
- C0000h-DFFFFh - Adapter ROM, Adapter RAM, 128 Кбайт - резерв для адаптеров, использующих собственные модули ROM BIOS или (и) специальное ОЗУ, разделяемое с системной шиной.
- E0000h-EFFFFh - свободная область, 64 Кбайт, иногда занятая под System BIOS.
- F0000h-FFFFFh - System BIOS, 64 Кбайт - системная BIOS.
- FD000h-FDFFFh - ESCD (Extended System Configuration Data) - область энергонезависимой памяти, используемая для конфигурирования устройств Plug and Play.
Рис. 2. Распределение верхней памяти (UMA)
В области UMA практически всегда присутствует графический адаптер. Также распространенным потребителем UMA являются расширения ROM BIOS, расположенные на платах дисковых контроллеров и микросхемы удаленной загрузки (Boot ROM) на платах адаптеров ЛВС. Обычно они занимают область C8000h - CBFFFh/C9FFFh/C8FFFh (для дисковых контроллеров), но могут и перемещаться при конфигурировании адаптеров.
Размер области, занимаемой системной ROM BIOS, колеблется от 8 Кбайт у PC/XT до 128 Кбайт, однако разумное значение - 64 Кбайт. Большая область использовалась "на радостях" от появления микросхем ROM и флэш-памяти объемом 1 Мбит (128К x 8), но при этом размер доступной UMA сократился. Тогда стали микросхемы того же (и большего) объема отображать только на область F0000h-FFFFFh (64 Кбайт), а иногда и меньшую. Это оказалось возможным, поскольку не все содержимое микросхемы ROM BIOS должно быть доступно одновременно. Таким способом удалось примирить интересы пользователей UMB с необходимостью расширения объема BIOS, связанной с усложнением технических средств.