И опять память на 286 (UMB, HMA)
И опять память на 286
UMB, HMA
Я долго пытался разобраться, как оно работает, но опять запутался.
1) Допустим есть 286 (suntac,vlsi) с 1 мб памяти. Стоит dos 5. В конфиге dos=high, то есть он загружает ядро в HMA. Но в вики написано:
"In DOS memory management, the high memory area (HMA) is the RAM area consisting of the first 65520 bytes above the one megabyte in an IBM AT or compatible computer"
Написано, что HMA находится за 1мб памяти, то есть уже в 2-м мегабайте. Но на компе 1 мб, как тогда загружается дос в hma?
2) Есть UMB память, обычно 64кб. В ноуте toshiba t3200, который поддерживает только ems, но не xms, есть драйвер, который преобразует его бесполезную ems в 64 кб UBM, и туда я загружал драйвера.
Я хотел провернуть то же самое на материнках suntac или vlsi, но для них не нашел UMB драйвера. Нашел только стандартный какой-то, который не работает, и еще от материнки NEAT-286, который тоже не подошел. Есть ли возможность воспользоваться как-то UMB на этих материнках?
3) Допустим, на 286 обычной получилось организовать UMB, тогда HMA тоже останется? И будет 640+UMB+HMA?
Я долго пытался разобраться, как оно работает, но опять запутался.
1) Допустим есть 286 (suntac,vlsi) с 1 мб памяти. Стоит dos 5. В конфиге dos=high, то есть он загружает ядро в HMA. Но в вики написано:
"In DOS memory management, the high memory area (HMA) is the RAM area consisting of the first 65520 bytes above the one megabyte in an IBM AT or compatible computer"
Написано, что HMA находится за 1мб памяти, то есть уже в 2-м мегабайте. Но на компе 1 мб, как тогда загружается дос в hma?
2) Есть UMB память, обычно 64кб. В ноуте toshiba t3200, который поддерживает только ems, но не xms, есть драйвер, который преобразует его бесполезную ems в 64 кб UBM, и туда я загружал драйвера.
Я хотел провернуть то же самое на материнках suntac или vlsi, но для них не нашел UMB драйвера. Нашел только стандартный какой-то, который не работает, и еще от материнки NEAT-286, который тоже не подошел. Есть ли возможность воспользоваться как-то UMB на этих материнках?
3) Допустим, на 286 обычной получилось организовать UMB, тогда HMA тоже останется? И будет 640+UMB+HMA?
Я в свое время когда настраивал 286 на NEAT чипсете, прописывал так:
DOS=HIGH,UMB
LOADHIGH = или LH = [имя драйвера]
В итоге оптимизации было примерно 620 кб свободной памяти для запуска программ.
Но драйвер был родной который шел на дискете с материнской платой...
Да, должно быть и HMA, и UMB, причем UMB может быть несколько шт...
DOS=HIGH,UMB
LOADHIGH = или LH = [имя драйвера]
В итоге оптимизации было примерно 620 кб свободной памяти для запуска программ.
Но драйвер был родной который шел на дискете с материнской платой...
Да, должно быть и HMA, и UMB, причем UMB может быть несколько шт...
- uav1606
- Advanced Member
- Сообщения: 5969
- Зарегистрирован: 16.01.2008,22:04
- Откуда: Енакиево
- Контактная информация:
-
Вклад в сообщество
Maxim-dolg, HMA - это такой "хак" - из-за особенностей адресации x86 можно на 286+ в реальном режиме получить доступ к примерно 64 КБ памяти выше первого мегабайта. Если у Вас только 1 МБ, то, возможно, 384 КБ выше стандартных 640 КБ у Вас переадресуются аппаратно как раз выше 1 МБ, отсюда и HMA.
То есть получается схема:
1. 640 КБ
2. 384 КБ - BIOS, видеопамять и т.п.
3. Ещё 384 КБ extended memory, взятых из предыдущей области (или хотя бы те 64 КБ).
Т.е. физически они находятся ниже 1 МБ, но "видятся" выше.
UMB далеко не везде на 286-х можно получить, надо перебирать разные драйверы и программы для этого...
То есть получается схема:
1. 640 КБ
2. 384 КБ - BIOS, видеопамять и т.п.
3. Ещё 384 КБ extended memory, взятых из предыдущей области (или хотя бы те 64 КБ).
Т.е. физически они находятся ниже 1 МБ, но "видятся" выше.
UMB далеко не везде на 286-х можно получить, надо перебирать разные драйверы и программы для этого...
Окей, HMA и UMB находятся в пределах 384 кб. Но тогда они должны не пересекаться и занимать разные куски памяти. Тогда вопрос, в какой зоне (блоке) какая память будет находиться:
IBM PC, PC/XT, 3270 PC and PCjr memory blocks
0-block 1st 64 KB Ordinary user memory to 64 KB (low memory area)
1-block 2nd 64 KB Ordinary user memory to 128 KB
2-block 3rd 64 KB Ordinary user memory to 192 KB
3-block 4th 64 KB Ordinary user memory to 256 KB
4-block 5th 64 KB Ordinary user memory to 320 KB
5-block 6th 64 KB Ordinary user memory to 384 KB
6-block 7th 64 KB Ordinary user memory to 448 KB
7-block 8th 64 KB Ordinary user memory to 512 KB
8-block 9th 64 KB Ordinary user memory to 576 KB
9-block 10th 64 KB Ordinary user memory to 640 KB
A-block 11th 64 KB Extended video memory (EGA)
B-block 12th 64 KB Standard video memory (MDA/CGA)
C-block 13th 64 KB ROM expansion (XT, EGA, 3270 PC)
D-block 14th 64 KB other use (PCjr cartridges, LIM EMS)
E-block 15th 64 KB other use (PCjr cartridges, LIM EMS)
F-block 16th 64 KB System ROM-BIOS and ROM-BASIC
IBM PC, PC/XT, 3270 PC and PCjr memory blocks
0-block 1st 64 KB Ordinary user memory to 64 KB (low memory area)
1-block 2nd 64 KB Ordinary user memory to 128 KB
2-block 3rd 64 KB Ordinary user memory to 192 KB
3-block 4th 64 KB Ordinary user memory to 256 KB
4-block 5th 64 KB Ordinary user memory to 320 KB
5-block 6th 64 KB Ordinary user memory to 384 KB
6-block 7th 64 KB Ordinary user memory to 448 KB
7-block 8th 64 KB Ordinary user memory to 512 KB
8-block 9th 64 KB Ordinary user memory to 576 KB
9-block 10th 64 KB Ordinary user memory to 640 KB
A-block 11th 64 KB Extended video memory (EGA)
B-block 12th 64 KB Standard video memory (MDA/CGA)
C-block 13th 64 KB ROM expansion (XT, EGA, 3270 PC)
D-block 14th 64 KB other use (PCjr cartridges, LIM EMS)
E-block 15th 64 KB other use (PCjr cartridges, LIM EMS)
F-block 16th 64 KB System ROM-BIOS and ROM-BASIC
- uav1606
- Advanced Member
- Сообщения: 5969
- Зарегистрирован: 16.01.2008,22:04
- Откуда: Енакиево
- Контактная информация:
-
Вклад в сообщество
UMB, например, может находится в блоках D и E - они обычно не заняты. Туда же обычно проецируются окна EMS. А HMA тут нет, потому что тут только первый мегабайт.
Многие материнки для 286 и выше умеют "перемещать" память из области 640 КБ - 1024 КБ выше, т.к. в этой исходной зоне она всё равно обычно недоступна и не используется.
Т.е. получается "как бы" 1408 КБ памяти, где в области 640 КБ - 1024 КБ как таковой ОЗУ нет - только расширения BIOS, видеопамять и "дыры".
Многие материнки для 286 и выше умеют "перемещать" память из области 640 КБ - 1024 КБ выше, т.к. в этой исходной зоне она всё равно обычно недоступна и не используется.
Т.е. получается "как бы" 1408 КБ памяти, где в области 640 КБ - 1024 КБ как таковой ОЗУ нет - только расширения BIOS, видеопамять и "дыры".
-
- Advanced Member
- Сообщения: 9537
- Зарегистрирован: 16.08.2007,11:42
- Откуда: СПб
-
Вклад в сообщество
Maxim-dolg а UMB и есть EMS (то есть UMB появляется при наличии EMS драйвера и не иначе)
как-то так в общем
ЗЫ Только зачем все это? если himem работает то пусть и грузит ядро в верхнюю память
как-то так в общем
читайте мануал, играйте с джамперамиeasyjohn писал(а):Попробовал еще три разных менеджера UMB - не работают на моей матери. Надо было 286 на NEAT чипсете брать, его все умеют.
Победил чере драйвер UMBEMS.SYS из комплекта pc-dos (работает в ms dos 6.22).
С помощью его мне удалось получить 64кб UMB.
Сначала грузится himem.sys, потом менеджер EMM (emm286.exe или в моем случае ht12mm.sys), после чего загружается UMBEMM.SYS и конвертирует всю EMM в UMB.
ЗЫ Только зачем все это? если himem работает то пусть и грузит ядро в верхнюю память
Xeon E5-2670v2/32 Gb, Amiga А4000Т