Организация памяти в компьютерах типа ibm pc, страница 9

Области C и D запутаны больше всего.  В системах, имеющих EGA- и VGA-адаптеры, видео-ПЗУ обычно находится на дне области C. Остаток региона С, не используемый для размещения видеоПЗУ (адреса выше C800), а также вся область D применяются для размещения драйверов и прочего программного обеспечения, обеспечивающего поддержку всевозможного специфического оборудования –  сетевых карт,  адаптеров SCSI и т.д.

Наконец, регион E в случае наличия в системе диспетчера дополнительной (EMS) памяти используется как EMS-фрейм.

Подытоживая все эти сведения, можно заметить, что в среднестатистической системе гарантированно занятыми являются только регионы А (видеопамять графического режима для адаптеров EGA, VGA и выше) и F (системная BIOS), кроме того, почти всегда (при наличии цветного адаптера) занята область размером 16 Кб, лежащая в адресах B800 – BC00 (видеопамять текстового режима), и область размером в 32 Кб в начале региона С в адресах C000 – C800 (видеоПЗУ). Занятость же прочих регионов  верхней памяти в общем случае не определена. Таким образом, стандартно занято 64 Кб + 64 Кб + 16 Кб + 32 Кб = 176 Кб верхней памяти. Прочие 208 Кб, вообще говоря, могут быть свободны и использованы для хранения программ, которые обычно располагаются в основной памяти. Реально, во многих случаях занятым оказывается еще и регион E, содержащий EMS-фрейм, а вторая половина региона C и регион D, напротив, чаще всего свободны. В силу данного обстоятельства в верхней памяти обычно остаются неиспользованными как минимум 96 Кб.

Разумеется, хранение в верхней памяти прикладных программ, работающих в адресном пространстве 640 Кб, было бы сопряжено со слишком большими трудностями, однако, если речь идет о драйверах, которые не должны постоянно выгружаться и загружаться в память, а должны находиться в ней резидентно, то использование верхней памяти в данном случае имеет большие преимущества. Поэтому была изобретена технология, позволяющая переносить драйверы, расположенные в обычной памяти, в свободные блоки верхней памяти, освобождая таким образом основное ОЗУ. Блоки верхней памяти, используемые подобным образом, получили название Upper Memory Blocks – UMB. Организацией блоков UMB и переносом в них драйверов из нижней памяти занимаются все те же менеджеры памяти, о которых уже шла речь выше – QEMM, EMM386, 386MAX и т.д.