Войти

Показать полную графическую версию : Как максимально освободить обычную память


Страниц : [1] 2

ukio
01-04-2011, 12:25
Нужно выгрузить из обычной памяти в верхнюю максимально возможное количество файлов, чтобы было свободно как минимум 630 Кб обычной памяти.
Дайте пожалуйста пример такого config.sys, очень надо. Спасибо

Хоф
01-04-2011, 18:00
в конфиге добавить строки
DOS=HIGH,UMB
device=C:\windows\himem.sys
device=C:\windows\emm386

набрать команду mem /c /p
посмотреть в предлагаемом списке размер каждого файла - сколько он занимает памяти
выбрать самые большие по размеру файлы и в конфиге там где написана строка с его загрузкой - заменить
device
на
devicehigh

в autoexec.bat
в начале каждой строки добавить
loadhigh
или
lh - сокращенно

снова запустить
mem /c /p
и посмотреть размер освобожденной памяти
Основная память на строчке
base memory
остальные - это верхняя и расширенная память

ShaddyR
01-04-2011, 18:50
device=C:\windows\emm386 »
не нужен для озвученных операций.

Iska
01-04-2011, 23:51
ShaddyR, нужен для работы с блоками верхней памяти (devicehigh/loadhigh). Без него поддержка работы с UMB будет недоступна, а аргумент UMB будет молча проигнорирован.

Другое дело, что поддержку EMS, да и стандарта VCPI, стоит отключить:
device=C:\windows\emm386.exe noems novcpi

ShaddyR
02-04-2011, 01:15
нужен для работы с блоками верхней памяти (devicehigh/loadhigh). Без него поддержка работы с UMB будет недоступна, а аргумент UMB будет молча проигнорирован. »
вот еще один (http://forum.oszone.net/post-1632115.html#post1632115) умный :). Отставить спорить со стариками - я это все на практике изучил, каждую дискету в лицо знал! ;)

Iska
03-04-2011, 00:00
ShaddyR, к чему спорить, вот распределение памяти без emm386:
Модули, использующие адреса памяти ниже 1 МБ:

Имя Размер Обычная память Верхняя память
-------- ---------------- ---------------- ----------------
MSDOS 28 480 (28K) 28 480 (28K) 0 (0K)
HIMEM 1 120 (1K) 1 120 (1K) 0 (0K)
DISPLAY 8 304 (8K) 8 304 (8K) 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 2 944 (3K) 2 944 (3K) 0 (0K)
KEYB 6 944 (7K) 6 944 (7K) 0 (0K)
COMMAND 10 304 (10K) 10 304 (10K) 0 (0K)
Свободно 587 456 (574K) 587 456 (574K) 0 (0K)

Сведения о памяти:

Тип памяти Размер Занято Свободно
---------------- ----------- ----------- -----------
Обычная 655 360 67 904 587 456
Верхняя 0 0 0
Зарезервировано 0 0 0
Память XMS 67 107 840 ? 267 124 736
Нажмите любую клавишу . . .
---------------- ----------- ----------- -----------
Всего памяти: 67 763 200 ? 267 712 192

Ниже 1 МБ: 655 360 67 904 587 456

Всего отображаемой памяти (EMS): 67 108 864 (64M)
Свободно отображаемой памяти (EMS): 16 777 216 (16M)
Максимально допустимый размер программы: 587 440 (574K)
Наибольший свободный блок верхней памяти: 0 (0K)
Резидентная часть MS-DOS загружена в сегмент HMA.
и вот с emm386:
Модули, использующие адреса памяти ниже 1 МБ:

Имя Размер Обычная память Верхняя память
-------- ---------------- ---------------- ----------------
SYSTEM 29 040 (28K) 10 608 (10K) 18 432 (18K)
HIMEM 1 120 (1K) 1 120 (1K) 0 (0K)
EMM386 4 256 (4K) 4 256 (4K) 0 (0K)
DBLBUFF 2 976 (3K) 2 976 (3K) 0 (0K)
WIN 3 776 (4K) 3 776 (4K) 0 (0K)
vmm32 45 712 (45K) 1 888 (2K) 43 824 (43K)
COMMAND 10 304 (10K) 10 304 (10K) 0 (0K)
DISPLAY 8 304 (8K) 0 (0K) 8 304 (8K)
IFSHLP 2 864 (3K) 0 (0K) 2 864 (3K)
KEYB 6 944 (7K) 0 (0K) 6 944 (7K)
Свободно 620 208 (606K) 620 208 (606K) 0 (0K)

Сведения о памяти:

Тип памяти Размер Занято Свободно
---------------- ----------- ----------- -----------
Обычная 655 360 35 152 620 208
Верхняя 80 368 80 368 0
Зарезервировано 0 0 0
Нажмите любую клавишу . . .
Память XMS 67 027 472 ? 266 928 128
---------------- ----------- ----------- -----------
Всего памяти: 67 763 200 ? 267 548 336

Ниже 1 МБ: 735 728 115 520 620 208

Максимально допустимый размер программы: 620 192 (606K)
Наибольший свободный блок верхней памяти: 0 (0K)
Резидентная часть MS-DOS загружена в сегмент HMA.
Конфигурационные файлы для чистоты отличались только наличием:
device=c:\windows\emm386.exe noems novcpi
в «CONFIG.SYS». Приведу оба.

CONFIG.SYS
dos=high,umb
device=c:\windows\himem.sys
device=c:\windows\emm386.exe noems novcpi
devicehigh=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
Country=007,866,C:\WINDOWS\COMMAND\country.sys


AUTOEXEC.BAT
mode con codepage prepare=((866) C:\WINDOWS\COMMAND\ega3.cpi)
mode con codepage select=866
loadhigh keyb ru,,C:\WINDOWS\COMMAND\keybrd3.sys


Что я делаю не так?

Что же до «Отставить спорить со стариками» ;) — Ваши слова напомнили мне байку Ивана Рыжова (http://ru.wikipedia.org/wiki/%D0%98%D0%B2%D0%B0%D0%BD_%D0%A0%D1%8B%D0%B6%D0%BE%D0%B2). За давностью лет деталей не помню, да и в действующих лицах могу ошибаться, но суть её от этого не меняется.

Как-то, снимаясь в одной картине с Лапиковым (http://ru.wikipedia.org/wiki/%D0%98%D0%B2%D0%B0%D0%BD_%D0%9B%D0%B0%D0%BF%D0%B8%D0%BA%D0%BE%D0%B2), Рыжов, будучи по сценарию младше того, и, полагая, что тот действительно старше его, вёл себя соответственно — уступал лучшее место в автобусе, когда ездили на натурные съёмки, пропускал вперёд себя в очереди в столовую и т.п. Лапиков все эти знаки почтения, вполне довольный, принимал. И всё это продолжалось ровно до того момента, пока как-то в съёмочную группу не пришла телеграмма (то ли из ГосКино, то ли со студии — не суть важно) с поздравлениями, из которой выяснилось, что на самом-то деле старше Рыжов, а Лапиков, оказывается, моложе Рыжова на десять лет [на самом деле — на девять с половиной, а самое интересное в этом деле оказалось то, что Лапиков про сё знал, но молчал ;)].

Это я к чему веду — я ведь тоже не по картинкам ;) DOS и Windows изучал.

P.S. вот еще один умный . »
Меня ещё тогда удивило Ваше неприятие аргументов. Но там обсуждение явно запуталось в смешении HMA и UMA/UMB, а я, поспев только к шапочному разбору, не стал встревать.

Angry Demon
03-04-2011, 10:12
Iska, точно, MEM /C не обманешь. :)
А для любителей выжимать максимум можно посоветовать поискать в сети пакет QEMM от Quarterdeck.

Iska
03-04-2011, 18:15
Iska, точно, MEM /C не обманешь. »
Не факт. Нужно услышать аргументы другой стороны.

ShaddyR
04-04-2011, 01:53
Нужно услышать аргументы другой стороны »
угу.
>
вот распределение памяти »
т.е. himem ничего не меняет в отсутствие emm'а, я верно понял основную идею? Тогда какой в нем прок? Видимо, никакого? Тогда вот тебе два примера,
№1
Modules using memory below 1 MB:

Name Total Conventional Upper Memory
-------- ---------------- ---------------- ----------------
MSDOS 76 752 (75K) 76 752 (75K) 0 (0K)
DISPLAY 18 064 (18K) 18 064 (18K) 0 (0K)
COMMAND 10 240 (10K) 10 240 (10K) 0 (0K)
VC 12 800 (13K) 12 800 (13K) 0 (0K)
QCDROM 2 592 (3K) 2 592 (3K) 0 (0K)
SHSUCDX 8 304 (8K) 8 304 (8K) 0 (0K)
COMMAND 7 168 (7K) 7 168 (7K) 0 (0K)
Free 519 264 (507K) 519 264 (507K) 0 (0K)

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 655 360 136 096 519 264
Upper 0 0 0
Reserved 0 0 0
Extended (XMS) 67 043 328 67 043 328 0
---------------- ----------- ----------- -----------
Total memory 67 698 688 67 179 424 519 264

Total under 1 MB 655 360 136 096 519 264

Largest executable program size 519 200 (507K)
Largest free upper memory block 0 (0K)


№2
Modules using memory below 1 MB:

Name Total Conventional Upper Memory
-------- ---------------- ---------------- ----------------
MSDOS 18 624 (18K) 18 624 (18K) 0 (0K)
HIMEM 1 120 (1K) 1 120 (1K) 0 (0K)
RAMDRIVE 1 456 (1K) 1 456 (1K) 0 (0K)
DISPLAY 18 064 (18K) 18 064 (18K) 0 (0K)
COMMAND 7 296 (7K) 7 296 (7K) 0 (0K)
QCDROM 2 608 (3K) 2 608 (3K) 0 (0K)
VC 12 832 (13K) 12 832 (13K) 0 (0K)
SHSUCDX 8 304 (8K) 8 304 (8K) 0 (0K)
COMMAND 7 200 (7K) 7 200 (7K) 0 (0K)
Free 577 680 (564K) 577 680 (564K) 0 (0K)

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 655 360 77 680 577 680
Upper 0 0 0
Reserved 0 0 0
Extended (XMS) 535 756 800 4 292 608 531 464 192
---------------- ----------- ----------- -----------
Total memory 536 412 160 4 370 288 532 041 872

Total under 1 MB 655 360 77 680 577 680

Largest executable program size 577 648 (564K)
Largest free upper memory block 0 (0K)
MS-DOS is resident in the high memory area.


Первый отличается от второго закомментированной в конфиге строкой запуска himem.sys. В результате чего, кроме, собсно, отсутствия в памяти самого драйвера himem туда же, матюкнувшись, не загрузился драйвер ramdrive. А теперь вопрос знатокам ДОСа: как при этом в примере №2 оказалось на 60 кил свободнее первого примера?

Игорь Лейко
04-04-2011, 02:35
А теперь вопрос знатокам ДОСа: как при этом в примере №2 оказалось на 60 кил свободнее первого примера? »
Ссылки абсолютно одинаковые. Можно их дать непосредственно на примеры?
И намек: DOS=HIGH что-нибудь говорит?

Iska
04-04-2011, 03:53
т.е. himem ничего не меняет в отсутствие emm'а, я верно понял основную идею?»
Меняет. Драйвер HIMEM.SYS используется для организации доступа DOS к расширенной памяти (XMS). При наличии в CONFIG.SYS директивы:
DOS=HIGH
Драйвер позволяет резидентным модулям ядра DOS загружать себя в область высокой памяти (HMA — первые (64 Кб-16 байт) сверх 1-го Мб оперативной памяти), т.е. — фактически освободить в основной памяти до 64 Кб для загружаемых не оверлейных программ (размер ядра, конечно, меньше; потому не строго 64 Кб, а только — до 64 Кб).

теперь вопрос знатокам ДОСа: как при этом в примере №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.

Игорь Лейко
04-04-2011, 04:04
Например, у меня нет информации, почему под Windows при отсутствующих в CONFIG.SYS директиве DOS=HIGH и драйверах HIMEM.SYS/EMM386.EXE, они, тем не менее, используются, равно как и задействуется эмуляция отображаемой памяти »
Цитата из документации с диска Windows 95 (файл config.txt):

AUTO|NOAUTO
Этот параметр определяет, будет ли MS-DOS автоматически загружать драйверы Himem.sys, Ifshlp.sys, Dblbuff.sys и Setver.exe в случае, если ссылки на них отсутствуют в файле Config.sys. По умолчанию используется значение AUTO, т.е. драйверы загружаются в память автоматически. Значению AUTO соответствуют команды BUFFERSHIGH, FILESHIGH, FCBSHIGH, LASTDRIVEHIGH и STACKSHIGH, которые используются вне зависимости от того, какая форма команд присутствует в файле (с приставкой -HIGH или без нее). Выбор значения NOAUTO означает необходимость явной загрузки всех перечисленных драйверов и самостоятельного добавления к нужным командам приставки -HIGH.
Поднимать документацию Win98 неохота. ;)
За совет спасибо, но я тут слишком редко бываю, чтобы разбираться, что здесь как работает.

Iska
04-04-2011, 07:37
Игорь Лейко, благодарствую, стало яснее! Увы, подзабыл. В том числе и про появившийся под Windows суффикс HIGH.

P.S. Под Windows 98 описание в «config.txt» аналогичное.

yurfed
04-04-2011, 09:21
device=C:\windows\himem.sys
device=C:\windows\emm386 NOEMS
В своё время, в таком варианте добивался 632 КБ :)

El Scorpio
04-04-2011, 09:38
device=C:\windows\emm386 NOEMS
В своё время, в таком варианте добивался 632 КБ »
Но можно словить глюк с какой-нибудь старой программой, которая "расширенную" (EMS) память использует

yurfed
04-04-2011, 09:44
Но можно словить глюк с какой-нибудь старой программой »Можно, но очень редко.
DOS 6.22 пользовал до 97 года. Пару раз сталкивался с данной траблой.

ukio
04-04-2011, 11:38
А может кто-нибудь дать ссылку на QEMM386. Не могу найти этот драйвер: находятся или кряки или за смс. Очень надо.

yurfed
04-04-2011, 11:48
А может кто-нибудь дать ссылку на QEMM386 »Поищу. Если остался, дам весь QEMM

DedAlex
04-04-2011, 11:57
ukio, тут (http://scorpius12.narod.ru/downloads/SysDInno.rar), там образ дискеты, но ее можно распаковать.

ShaddyR
04-04-2011, 12:47
Iska, разобрался - говорили, похоже, о разных вещах. Emm\Qemm практически не использовал - периодически сталкиваясь со сбоями программ при ней, предпочитал обойтись без - благо дело, задействование HMA практически убирало необходимость использование оных драйверов.

Iska,Кстати, ты и сам запутался в определениях:
emm386 »
нужен для работы с блоками верхней памяти (devicehigh/loadhigh). »
не HMA, а UMB, потому я так и среагировал :)




© OSzone.net 2001-2012