На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 3 / Использование памяти MS-DOS Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Использование памяти 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.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz