Цитата ShaddyR:
т.е. himem ничего не меняет в отсутствие emm'а, я верно понял основную идею?»
|
Меняет. Драйвер HIMEM.SYS используется для организации доступа DOS к расширенной памяти (XMS). При наличии в CONFIG.SYS директивы:
Код:
DOS=HIGH
Драйвер позволяет резидентным модулям ядра DOS загружать себя в область высокой памяти (HMA — первые (64 Кб-16 байт) сверх 1-го Мб оперативной памяти), т.е. — фактически освободить в основной памяти до 64 Кб для загружаемых не оверлейных программ (размер ядра, конечно, меньше; потому не строго 64 Кб, а только —
до 64 Кб).
Цитата ShaddyR:
теперь вопрос знатокам ДОСа: как при этом в примере №2 оказалось на 60 кил свободнее первого примера? »
|
Там же ясно написано во втором листинге, что ядро DOS загружено в область высокой памяти:
Код:
MS-DOS is resident in the high memory area.
Но какое это отношение имеет к EMM386.EXE?
Я же выше писал про другое, про то, что речь идёт не о HMA, а об UMB, что позволяет сделать только EMM386.EXE (разумеется, при загруженном драйвере HIMEM.SYS). Использование параметра NOEMS дополнительно позволяет использовать для организации UMB 64 Кб памяти в UMA (которое, в противном случае, было бы использовано под окно доступа к эмулируемой дополнительной памяти (EMS)).
читать дальше »
Насколько я понимаю, Ваши примеры основаны именно на DOS?! Мне же было бы гораздо интереснее рассмотреть отличия DOS под Windows от чистой DOS, ибо некоторые моменты там отличаются. Например, у меня нет информации, почему под Windows при отсутствующих в CONFIG.SYS директиве DOS=HIGH и драйверах HIMEM.SYS/EMM386.EXE, они, тем не менее, используются, равно как и задействуется эмуляция отображаемой памяти — судя по тому же «mem /c /p»:
читать дальше »
Код:
Модули, использующие адреса памяти ниже 1 МБ:
Имя Размер Обычная память Верхняя память
-------- ---------------- ---------------- ----------------
MSDOS 18 272 (18K) 18 272 (18K) 0 (0K)
DISPLAY 18 064 (18K) 18 064 (18K) 0 (0K)
HIMEM 1 120 (1K) 1 120 (1K) 0 (0K)
DBLBUFF 2 976 (3K) 2 976 (3K) 0 (0K)
IFSHLP 2 864 (3K) 2 864 (3K) 0 (0K)
WIN 3 776 (4K) 3 776 (4K) 0 (0K)
vmm32 3 392 (3K) 3 392 (3K) 0 (0K)
KEYB 6 944 (7K) 6 944 (7K) 0 (0K)
COMMAND 7 408 (7K) 7 408 (7K) 0 (0K)
Свободно 590 352 (577K) 590 352 (577K) 0 (0K)
Сведения о памяти:
Тип памяти Размер Занято Свободно
---------------- ----------- ----------- -----------
Обычная 655 360 65 008 590 352
Верхняя 0 0 0
Зарезервировано 0 0 0
Память XMS 67 107 840 ? 267 120 640
Нажмите любую клавишу . . .
---------------- ----------- ----------- -----------
Всего памяти: 67 763 200 ? 267 710 992
Ниже 1 МБ: 655 360 65 008 590 352
Всего отображаемой памяти (EMS): 67 108 864 (64M)
Свободно отображаемой памяти (EMS): 16 777 216 (16M)
Максимально допустимый размер программы: 590 336 (577K)
Наибольший свободный блок верхней памяти: 0 (0K)
Резидентная часть MS-DOS загружена в сегмент HMA.
Вот что интересно было бы узнать, хотя, увы, ныне сие уже давно, давно не актуально.
2Игорь Лейко: у Вас, должно быть, отключены скрипты, ибо сие не ссылки, а обычные спойлеры, внутри которых листинги «mem /c /p» (к сожалению, не в тэге «code»). Включите скрипты для домена oszone.net.