2010-02-07 5 views
2

Обычная память под DOS (кулак 640kB) содержит операционную систему, драйверы и, возможно, одну исполняющую программу. Как складывается эта память, чтобы избежать конфликта между этими программами? Например, является частью зарезервированного адресного пространства?DOS условное расположение памяти

ответ

4

DOS загружает программу в память, используя информацию в EXE header переместить ссылки на память, чтобы быть правильным по отношению к блоку памяти, присвоенный DOS, когда EXE загружается ,

Сказав это, ничто не мешает вашей программе вмешиваться в ОС, драйверы устройств и т. Д. Вы можете читать и записывать любую ячейку памяти. Эта методика обычно использовалась, например, по TSR programs (переписывая interrupt vector table), чтобы подключить клавиатуру, таймер, мышь или подобное, а затем прекратить работу, оставаясь в памяти.

1

См. Здесь подробный вид расположения памяти DOS here.

+0

Я не думаю, что эта статья отвечает на вопрос о конфликте в адресном пространстве реального режима. – abc

1

Это идет в более подробно

http://www.frontiernet.net/~fys/rombios.htm

+0

Хорошая карта, но меня интересует 653 056 байт с адреса 0x900. Как компилятор гарантирует, что моя программа (работающая в реальном режиме) не будет конфликтовать с драйвером? – abc

+1

DOS сама загружает вашу программу в нижнюю часть свободной памяти, и у вас есть остальная свободная память для использования для себя (поскольку DOS не многозадачность). Драйверы, TSR и т. Д. Будут выделяться памятью, которая либо поднимет «нижнюю часть памяти», на которую загружена ваша программа, либо вырезается в верхнюю часть памяти (обычно это делают расширения BIOS). Если вы используете компилятор C, он будет запрашивать DOS для свободной памяти, если вы делаете это на ассемблере, второе 16-битное слово удерживает сегмент зарезервированной памяти над вашей программой. http: //docs.huihoo. com/help-pc/table-Program_Segment_Prefix.html –

+0

+ голосовать. Этот комментарий и ответ Эрика Дж. Являются тем, что я искал. Благодарю. – abc

Смежные вопросы