Введение
Система переключения банков в управлении памятью DOS
В управлении памятью DOS расширенная память – это система переключения банков, предоставляющая программам DOS дополнительную память сверх предела обычной памяти (640 КиБ). Расширенная память – это общий термин для нескольких несовместимых технологических вариантов. Наиболее распространенным вариантом была спецификация расширенной памяти (EMS), разработанная совместно компаниями Lotus Software, Intel и Microsoft, поэтому эта спецификация иногда называлась "LIM EMS". LIM EMS имела несколько версий. Первой широко реализованной версией была EMS 3.2, поддерживавшая до 8 МиБ расширенной памяти и использующая части адресного пространства, обычно предназначенные для связи с периферийными устройствами (верхняя память), для отображения фрагментов расширенной памяти. EEMS, стандарт управления расширенной памятью, конкурировавший с LIM EMS 3.x, был разработан компаниями AST Research, Quadram и Ashton Tate ("AQA"); он мог отображать любую область нижнего 1 МиБ. EEMS в конечном итоге был включен в LIM EMS 4.0, поддерживавшую до 32 МиБ расширенной памяти и обеспечивавшую некоторую поддержку многозадачности DOS. Однако IBM создала свой собственный стандарт расширенной памяти под названием XMA. Использование расширенной памяти стало широко распространенным в играх и бизнес-программах, таких как Lotus 1-2-3, в конце 1980-х – середине 1990-х годов, но его применение сократилось по мере перехода пользователей из DOS в операционные системы с защищенным режимом, такие как Linux, IBM OS/2 и Microsoft Windows.
Предыстория
Процессор 8088 в IBM PC и IBM PC/XT мог адресовать один мегабайт (MiB, или 220 байтов) памяти. Он унаследовал это ограничение от 20-битной внешней адресной шины (и общей архитектуры адресации памяти) Intel 8086. Разработчики ПК выделили нижние 640 КиБ (655360 байтов) адресного пространства для оперативной памяти с произвольным доступом (RAM), называемой обычной памятью, а оставшиеся 384 КиБ пространства памяти были зарезервированы для таких целей, как системный BIOS, видеопамять и память на платах расширения. Несмотря на то, что IBM PC AT, представленный в 1984 году, использовал чип 80286, который мог адресовать до 16 МБ оперативной памяти в качестве расширенной памяти, он мог делать это только в защищенном режиме. Недостаток программного обеспечения, совместимого с защищенным режимом (в нем не могли работать стандартные приложения DOS), означал, что рынок оставался открытым для другого решения. Первая публичная версия стандарта EMS, EMS 3.0, была выпущена в 1985 году; однако EMS 3.0 практически не получила аппаратных реализаций до того, как была заменена EMS 3.2. Расширенная память не могла быть напрямую адресована приложениями; функция MVS, известная как "услуги окон", позволяла приложениям выделять перемещаемые окна в расширенной памяти в пределах их собственного адресного пространства. Также существовала функция "перемещения данных", которую можно было использовать для перемещения данных между основной памятью (центральным хранилищем) и расширенной памятью; позже была представлена "асинхронная система перемещения данных" (ADMF), которая позволяла приложениям запрашивать перемещение данных между ними в фоновом режиме, пока они выполняли другие операции. К середине 1990-х годов расширенная память перестала быть физически отдельной памятью и стала просто логическим разделением в системной памяти, обеспечиваемым прошивкой; но только с выходом z/VM 6.4 в ноябре 2016 года IBM окончательно удалила всю поддержку расширенной памяти из своих операционных систем для мэйнфреймов. Address Windowing Extensions (AWE) – концептуально аналогичная функция в Microsoft Windows, используемая для обеспечения 32-битным приложениям доступа к большему объему памяти, чем 2–4 ГБ, которые могут поместиться в 32-битном адресном пространстве. Хотя текущие версии Windows все еще поддерживают AWE, ее использование было вытеснено 64-битными приложениями, которые могут напрямую обращаться к памяти объемом более 4 ГБ. Виртуальная память создает иллюзию доступной памяти, используя, например, дисковое пространство.