Верхняя область памяти
В управлении памятью DOS верхняя область памяти ( UMA ) — это память между адресами 640 КБ и 1024 КБ ( 0x A0000–0xFFFFF) в IBM PC или совместимом с ним. IBM зарезервировала самые верхние 384 КБ из 8088 1024 КБ адресного пространства процессора для 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. Только DOS Protected Mode Interface Поддерживался API (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 КБ). ) нетронутый.
См. также
[ редактировать ]- Управление памятью DOS
- Обычная память
- Расширенная память (XMS)
- Расширенная память (EMS)
- Область большой памяти (HMA)
- Глобальная спецификация импорта EMM (GEMMIS)
- ВЫСОКАЯ НАГРУЗКА
- линия А20
Ссылки
[ редактировать ]- ^ «Карта памяти (x86) — OSDev Wiki» . wiki.osdev.org . Проверено 20 декабря 2020 г.
- ^ Перейти обратно: а б Драйфус, Майк, изд. (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 страницы) - ^ «UMBPCI V3.89 — аппаратный UMB-драйвер журнала c't для DOS и Win95/98» . Архивировано из оригинала 30 декабря 2019 г. Проверено 7 февраля 2020 г.
- ^ Аткинсон, Сай (2001). «Что такое высокая память, почему меня это волнует и как я могу ее использовать?» . Сан-Хосе, Калифорния, США. Архивировано из оригинала 05 октября 2018 г. Проверено 7 февраля 2020 г.