Из Википедии, свободной энциклопедии
Перейти к навигацииПерейти к поиску
Область верхней памяти находится между 640 КБ и 1024 КБ.

В управлении памятью DOS , то верхняя область памяти ( UMA ) относится к памяти между адресами от 640  Кбайт и 1024 Кбайт ( 0x A0000-0xFFFFF) в качестве IBM PC или совместимых. IBM зарезервировала верхние 384 КБ адресного пространства процессора 8088 1024 КБ для BIOS ROM , Video BIOS , дополнительных ROM , видео RAM, RAM на периферийных устройствах, ввода-вывода с отображением памяти и устаревшего ROM BASIC . [1]

Тем не менее, даже с видео ОЗУ, ПЗУ BIOS , то Video BIOS , то дополнительные ПЗУ и порты ввода / вывода для периферийных устройств, большая часть этого 384 Кбайт адресного пространства была неиспользованными. Поскольку ограничение памяти в 640 КБ становилось все более серьезным препятствием, были найдены методы заполнения пустых областей оперативной памятью. Эти области были названы блоками старшей памяти ( UMB ).

Использование

Следующим этапом эволюции DOS стало использование операционной системой блоков верхней памяти (UMB) и области верхней памяти (HMA). Это произошло с выпуском DR DOS 5.0 в 1990 году. [2] Встроенный диспетчер памяти DR DOS, EMM386.EXE , мог выполнять большую часть основных функций QEMM и аналогичных программ.

Преимущество DR DOS 5.0 над комбинацией более старой DOS и QEMM состояло в том, что само ядро ​​DR DOS и почти все его структуры данных могли быть загружены в верхнюю память. В результате практически вся базовая память оставалась свободной, что позволяло создавать конфигурации с свободными до 620 КБ из 640 КБ.

Конфигурация не была автоматической - бесплатные UMB нужно было идентифицировать вручную, вручную включать в строку, загружающую EMM386 из CONFIG.SYS , а затем драйверы и так далее нужно было вручную загружать в UMB из CONFIG.SYS и AUTOEXEC.BAT . Эта конфигурация была нетривиальным процессом. Поскольку она была в значительной степени автоматизирована программой установки QEMM, эта программа выжила на рынке; действительно, она хорошо работала с собственной поддержкой HMA и UMB DR DOS и стала одной из самых продаваемых утилит для ПК.

Эта функциональность была скопирована Microsoft с выпуском MS-DOS 5.0 в июне 1991 года. [2] В конце концов, еще больше структур данных DOS было перемещено из обычной памяти, что позволило оставить свободными до 631 КБ из 640 КБ. Начиная с версии 6.0 MS-DOS, Microsoft даже включила программу под названием MEMMAKER, которая использовалась для автоматической оптимизации обычной памяти путем перемещения программ TSR в верхнюю память.

В начале 1990-х годов ручная оптимизация карты памяти DOS стала высоко ценимым навыком, позволяя запускать самые большие приложения даже на самых сложных конфигурациях ПК. Методика заключалась в том, чтобы сначала создать как можно больше UMB, включая переназначение выделенных, но неиспользуемых блоков памяти, таких как область монохромного отображения на цветных машинах. Затем многие подкомпоненты DOS должны были быть загружены в эти UMB в правильной последовательности, чтобы использовать блоки памяти как можно более эффективно. Некоторые TSRПри загрузке программам требовалась дополнительная память, которая снова освобождалась после завершения загрузки. К счастью, между этими модулями было мало зависимостей, поэтому их можно было загружать практически в любой последовательности. Исключением было то, что для успешного кэширования CD-ROM большинство дисковых кэшей необходимо было загружать после любых драйверов CD-ROM, и что модули большинства сетевых стеков должны были загружаться в определенной последовательности, по существу, постепенно повышаясь по уровням системы. Модель OSI .

Базовым, но эффективным методом оптимизации обычной памяти была загрузка HIMEM.SYS как устройства с последующей загрузкой EMM386.EXE как устройства с опцией «RAM AUTO», которая позволяет получить доступ к UMA путем загрузки драйверов устройств как devicehigh. Этот метод эффективно загружает основные менеджеры памяти в обычную память, а затем все остальное в UMA. Обычные программы для перенасыщения памяти, такие как MSCDEX, также могут быть загружены в UMA аналогичным образом, тем самым освобождая большой объем обычной памяти.

Windows

Растущая популярность Windows 3.0 сделала необходимость в области верхней памяти менее актуальной, поскольку на приложения Windows не влияли напрямую ограничения базовой памяти DOS, но программы DOS, работающие под Windows (при этом сама Windows выступала в качестве диспетчера многозадачности), по-прежнему оставались такими же. сдерживается. С выходом Windows 95, это стало еще менее актуальным, поскольку эта версия Windows предоставляет большую часть функций драйверов устройств DOS для приложений DOS, работающих под Windows, таких как поддержка компакт-дисков, сети и звука; карта памяти окон DOS Windows 95 была автоматически оптимизирована. Однако не все программы DOS могли выполняться в этой среде. В частности, программы, которые пытались напрямую переключиться из реального режима в защищенный, не работали, поскольку это было запрещено в виртуальном режиме 8086, в котором он работал. Этот момент теперь решается с помощью технологий виртуализации x86, таких как Intel VT-x (Vanderpool ) и AMD-V (Pacifica). Кроме того, программы, которые пытались сделать переключение с помощью виртуального программного интерфейса управления(VCPI) API (который был введен, чтобы позволить программам DOS, которым требовался защищенный режим, входить в него из виртуального режима 8086, установленного диспетчером памяти, как описано выше), не работал в Windows 95. Только интерфейс защищенного режима DOS ( DPMI) API для перехода в защищенный режим.

Реализация

Виртуальный режим 8086

Блоки верхней памяти могут быть созданы путем отображения расширенной памяти в область верхней памяти при работе в виртуальном режиме 8086 . Это похоже на то, как расширенная память может быть эмулирована с использованием расширенной памяти, поэтому этот метод предоставления блоков старшей памяти обычно предоставляется диспетчером расширенной памяти (например, EMM386 ). Интерфейс прикладного программирования для управления старшими блоками памяти указан в Спецификации расширенной памяти .

Shadow RAM

Во многих системах, в том числе и в современных, возможно использование памяти, зарезервированной для дублирования ПЗУ карты расширения, в качестве верхней памяти. Многие наборы микросхем резервируют для этой цели до 384 КБ ОЗУ, и поскольку эта оперативная память обычно не используется, ее можно использовать в качестве верхней памяти реального режима с помощью специального драйвера устройства, такого как UMBPCI. [3]

IBM XT

На компьютерах IBM XT можно было добавить больше памяти к материнской плате и использовать специальный PROM декодера адресов, чтобы он отображался в верхней области памяти. [4] Как и в случае с верхним запоминающим устройством на основе 386, описанным выше, дополнительная RAM может использоваться для загрузки файлов TSR или как RAM-диск .

AllCard , надстройка блока управления памятью для XT-класса компьютеров, позволили нормальной памяти для отображения в диапазоне адресов 0xA0000-EFFFF, давая до 952 Кбайт для программ DOS. Такие программы, как Lotus 1-2-3 , которые обращались к видеопамяти напрямую, требовали исправления для обработки такой схемы памяти. Таким образом, барьер в 640 КБ был устранен за счет совместимости программного обеспечения. Такое использование области верхней памяти отличается от использования блоков верхней памяти, которые использовались для освобождения обычной памяти путем перемещения драйверов устройств и TSR в верхние 384 КБ из 1  МБ. адресное пространство, но оставил без изменений объем адресуемой памяти (640 КБ).

См. Также

  • Управление памятью DOS
  • Обычная память
  • Расширенная память (XMS)
  • Расширенная память (EMS)
  • Область высокой памяти (HMA)
  • Глобальная спецификация импорта EMM (GEMMIS)
  • НАГРУЗКА ВЫСОКАЯ

Ссылки

  1. ^ «Карта памяти (x86) - OSDev Wiki» . wiki.osdev.org . Проверено 20 декабря 2020 .
  2. ^ a b Dryfoos, Майк, изд. (1991-09-18) [1991-07-19]. «Посмертный отчет о разработке MS-DOS 5.0» (PDF) (по почте как судебный документ). Microsoft . п. 10. MS-PCA1179169 (MS-PCA1179159-MS-PCA1179191). MS7020988 (MS7020978-MS7021010). Депо. Бывший. 1109. Приходит против Доклада истца Microsoft 3473. CA.No.2: 96CV645B Доклада истца 477. Архивировано (PDF) из оригинала 2 апреля 2019 года . Проверено 22 июля 2019 . […] Одним из наиболее важных стимулов для добавления функций было давление со стороны конкурентов со стороны DRDOS 5.0 , о котором мы впервые узнали весной 1990 года. Набор функций DRDOS побудил нас добавить UMB поддержка, подкачка задач и отменить удаление. […] Значительная часть внимания руководства группы была переключена на новые функции, такие как программное обеспечение для передачи файлов, восстановление удаления и сетевая установка […] В конце июля 1990 года эта ситуация достигла критической точки, и под руководством Брэдса команда команды руководство провело серию напряженных встреч, чтобы составить график и процесс закрытия проекта […] (1 + 32 страницы)
  3. ^ "UMBPCI V3.89 - аппаратный UMB-драйвер журнала c't для DOS и Win95 / 98" . Архивировано 30 декабря 2019 года . Проверено 7 февраля 2020 .
  4. Перейти ↑ Atkinson, Cy (2001). «Что такое высокая память, почему меня это волнует и как я могу ее использовать?» . Сан-Хосе, Калифорния, США. Архивировано 05 октября 2018 года . Проверено 7 февраля 2020 .