stringtranslate.com

Верхняя область памяти

Верхняя область памяти расположена между 640 КБ и 1024 КБ.

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

Однако даже при наличии видеоОЗУ, ROM 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 во время загрузки требовалась дополнительная память, которая снова освобождалась после завершения загрузки. К счастью, среди этих модулей было мало зависимостей, поэтому их можно было загружать практически в любой последовательности. Исключением было то, что для успешного кэширования компакт-дисков большинство дисковых кэшей должно было загружаться после любых драйверов компакт-дисков, а также то, что модули большинства сетевых стеков должны были загружаться в определенной последовательности, по сути, постепенно продвигаясь вверх по уровням Модель OSI .

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

Окна

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

Выполнение

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

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

Теневая оперативная память

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

IBM ХТ

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

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

Смотрите также

Рекомендации

  1. ^ "Карта памяти (x86) - OSDev Wiki" . wiki.osdev.org . Проверено 20 декабря 2020 г.
  2. ^ ab Dryfoos, Майк, изд. (18 сентября 1991 г.) [19 июля 1991 г.]. «Отчет о результатах разработки MS-DOS 5.0» (PDF) (почта как судебный документ). Майкрософт . п. 10. MS-PCA1179169 (MS-PCA1179159-MS-PCA1179191). MS7020988 (MS7020978-MS7021010). Депо. Бывший. 1109. Прилагается к Microsoft Доказательство истца 3473. CA.No.2:96CV645B Доказательство истца 477. Архивировано (PDF) из оригинала 02 апреля 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. ^ Аткинсон, Сай (2001). «Что такое высокая память, почему она меня волнует и как я могу ее использовать?». Сан-Хосе, Калифорния, США. Архивировано из оригинала 05 октября 2018 г. Проверено 7 февраля 2020 г.