E0000 +-------------+ + Страницы EMS
D0000 +-------------+ -- EGA/VGA ROM и контроллер диска XT
C0000 +-------------+ -¬
B0000 +-------------+ + Видеобуфер
А0000 +-------------+ -90000 +-------------+
80000 +-------------+
70000 +-------------+
60000 +-------------+
50000 +-------------+
40000 +-------------+
30000 +-------------+
20000 +-------------+
10000 +-------------+
00000 L-------------Рис. 4.7. Распределение памяти
Однако у правила, определяющего доступ к расширенной памяти в реальном режиме, есть одно исключение. С помощью одной уловки можно получить доступ к первым 64 К байт (без 16 байтов) памяти свыше 1 М байт, не переходя к защищенному режиму (рис. 4.7) Эта область называется HMA
(область высокой памяти); фирма Microsoft разработала спецификацию XMS, или спецификацию расширенной памяти, и программный драйвер, позволяющий закрепление и открепление памяти внутри HMA. Однако, чтобы этим воспользоваться, прикладная программа должна быть "осведомлена" о HMA, а таких программ немного. Единственная на сегодняшний день крупная прикладная программа, "осведомленная" о HMA, - это Windows.
Можно считать, что первый мегабайт памяти DOS состоит из 16 сегментов или блоков по 64 К байт. Первые 10 блоков резервируются для RAM, куда загружаются DOS, драйверы устройств и прикладные программы. Эти 10 сегментов адреса от 0000 до 9FFF - составляют обычную память.
Следующие два сегмента (A000 и B000) резервируются для буферов видео.
Память для адаптеров Hercules (и простых MDA) занимает 64 К байт, начиная с нижней части сегмента B000; в графических режимах может использоваться до
64 К байт. Память для плат CGA начинается в верхней половине сегмента B000
(B800); CGA требует 4 К байт или 32 К байт в зависимости от режима видео.
В текстовых режимах адаптеры EGA и VGA также используют 4 К байт сегмента
B800; в графических режимах может потребоваться до 128 К байт памяти от
A000 до BFFF.
Система Hercules (или неграфическая монохромная система) оставляет между собой и верхней границей памяти DOS промежуток в 64 К байт; для системы CGA этот промежуток составляет 96 К байт. Некоторые системы позволяют воспользоваться этой областью и добавить ее к предшествующей области DOS. Установив такую систему, после начальной загрузки можно располагать более чем 64 К байт свободной памяти.
ROM контроллера НМД и видео часто помещают в сегмент C000. В
XT-совместимых системах ПЗУ контроллера НМД помещается в С800. В системе
AT эта область свободна, потому что программы жесткого диска помещаются в
ПЗУ BIOS. ПЗУ BIOS EGA и VGA располагаются в нижней части сегмента C000, но некоторые платы VGA требуют размещения буферов RAM выше - в сегменте C000
или в другом месте.
128 К байт в сегментах D000 и E000 обычно доступны для плат расширенной памяти, плат сетевого интерфейса и т.п. (Сегмент E000 резервируется для расширений BIOS, но во многих машинах он свободен). ПЗУ BIOS
помещается в сегменте F000.
К этому делению на сегменты можно сделать два замечания. Во-первых, оно произвольно. Во-вторых, не все сегменты используются в конкретной машине.
Это позволяет аппаратным и программным средствам управления памятью последнего поколения использовать собственные хитрости.
В 640 К байт, которыми DOS ограничивает пользователя, нет ничего магического; это произвольная величина, которая в свое время показалась приемлемой.
Но индустрия PC не стояла на месте. Разработчики усложняли свои программы, а пользователи составляли все более крупноформатные таблицы и т.д.
Таким образом, к середине 80-х гг. пользователям DOS стало существенно не хватать объема используемой памяти. Вследствие этого Lotus, Intel и
Microsoft совместно разработали средство увеличения памяти PC - то, что сегодня всем известно под названием LIM/EMS (Lotus-Intel-Microsoft
Expanded Memory Specification).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.