|
|
|
|
Использование памяти MS-DOS
К этому моменту мы установили, что по текущему стандарту фактически MS-DOS имеет 640 Кбайт памяти для использования ею самой и прикладными
программами пользователя. В типовой системе MS-DOS эта память будет распределяться так, как показано на Рис. 3-2. Рассматривая Рис.3-2, можно
заметить, что большинство приведенных адресов указано приблизительно и зависит от версии MS-DOS, физической конфигурации системы и опций, указываемых
пользователями в файлах конфигурации системы CONFIG.SYS и AUTOEXEC.BAT. Кроме того, размеры сегментов, указанные на Рис. 3-2, показаны не в масштабе,
а в соответствии с данной относительной позицией различных компонентов.
На Рис.3-2 есть несколько областей, которые требуют пояснения. Заметим, что первая область COMMAND.COM появляется на схеме памяти дважды.
Загружены две копии COMMAND.COM? Нет, просто COMMAND.COM загружается в две отдельные области. Область, размещенная выше драйверов устройств,
сохраняется в памяти постоянно и называется резидентной частью. Эта часть отвечает за корректность завершения программ обработки и любые ошибки программы
пользователя, которые возникают в результате завершения работы программы. Этот раздел является "порождающей программой" любой выполняемой программы
пользователя. Другой раздел COMMAND.COM, размещенный в верхней части схемы памяти, является частью, которая обеспечивает интерфейс пользователя с
MS-DOS. Эта часть называется нерезидентной, потому что она представлена только тогда, когда не выполняются программы пользователя, или когда программа
пользователя пытается загрузить другую программу.
Адрес Использование памяти
А0000 .-----------------------------------------
или вершина облас-| COMMAND.COM | ^ ^
ти пользователя |-----------------------| | |
| | | |
| Нерезидентная область |Используется |
| программы | программами |
| | | |
|-----------------------| | |
| Резидентные программы | V |
|--------------------------------- |
| COMMAND.COM | Область
|-----------------------| пользователя
| Драйверы устройств | (максимум
|-----------------------| 640 кбайт)
| Буферы MS-DOS | |
10000 - 14000 |-----------------------| |
| | |
| Ядро MS-DOS | |
| | |
08000 - 0A000 |-----------------------| |
| Интерфейс BIOS | |
00040 |-----------------------| |
| Векторы прерываний | V
00000 -----------------------------------------
Рис.3-2. Использование памяти пользователя MS/PC-DOS
|
Нерезидентная часть обрабатывает внутренние команды MS-DOS (DIR, COPY, SET и др.) и содержит загрузчик программ. Он используется для загрузки
программ либо при обращении к COMMAND.COM (в ответ на внешние команды) или по запросу программы пользователя. Позднее в этой главе будет показано, как
одна программа может использовать эту возможность для загрузки других программ или перекрытия программ.
Раздел Рис.3-2, помеченный как "Резидентные программы", содержит резидентные программы, завершаемые и оставляемые в памяти (TSR), такие как,
например, программа "Borland's Sidekick". Размещение памяти, показанное на Рис.3-2, применяется для TSR, загружаемых из файла AUTOEXEC.BAT, или
непосредственно при инициализации системы. В главе 4 программы TSR рассматриваются более подробно.
Раздел "Драйверы устройств" относится к устанавливаемым драйверам устройств, т.е. к тем драйверам, которые указываются с помощью команды DEVICE = в
файле CONFIG.SYS. Устанавливаемые драйверы устройств являются предметом рассмотрения главы 6. Драйверы устройств, назначаемые по умолчанию и применяемые
в системе, приведены в разделе "Интерфейс BIOS", где они используются во время загрузки или инициализации системы MS-DOS.
"Ядро MS-DOS" - это раздел MS-DOS, который обрабатывает различные функции MS-DOS, такие, например, как функция прерывания 21h. Этот раздел
является "мостом" между программами пользователя или COMMAND.COM и различными драйверами устройств, а также аппаратными средствами.
Раздел "Векторы прерываний" содержит описание 256 векторов прерываний системы.
Оставшаяся область - это "Нерезидентная область программы" (TPA). (Название TPA восходит ко временам операционной системы CP/M - прародительнице
MS-DOS). Эта область, куда загружаются программы пользователя, и которой мы и будем заниматься далее.
В некотором смысле Рис.3-2 не совсем точно отражает действительную ситуацию. Не все элементы, показанные на нем, имеют свой собственный блок памяти,
и, наоборот, имеются элементы, которые не показаны на Рис.3-2, но имеют свои отдельные блоки памяти. Рассмотрим сначала более подробно, каким методом
пользуется MS-DOS для организации своих собственных областей TPA.
|
|