Windows и память (Protected и Real mode в старых версиях)
Windows и память
Protected и Real mode в старых версиях
Хочу прояснить для себя некоторые детали для Windows 2.x и Windows 3.0.
Самый простой вариант: Windows 2.x и Windows 3.0 в Real mode - доступно 640 Kb памяти (с himem + еще несколько десятков?), мультизадачность ДОС приложений (эмуляция 8080) отсутствует.
Вариант №2 (тоже простой): Windows 3.0 в Standart режиме (для 286). Эмуляции нет, память до 16 (?) метров.
Вариант №3 (еще один простой): Windows 3.0 для 386. Эмуляция присутствует, память, хоть и адресуется как в 386, но из-за ограничения Винды - тоже до 16 (?) метров.
Вариант №4 (непонятный): Windows 2/286, эмуляция, ясен пень, отсутствует, полноправный Real mode (очень похож на Win 3.0 в таком же режиме). Но тогда какие ресурсы 286 проца использует эта версия?
Вариант №5(загадочный) Windows 2/386. Самый "темный" для меня вариант. Ясно только, что какая-никакая многозадачность для ДОС приложений поддерживается. Стало быть, проц работает в защищенном режиме. Но тогда появляются вопросы: во-первых, что с памятью? А во-вторых, что с Real mode приложениями? Они же любят завалится под protected mode. Конечно, грамотно написанное прилодение будет работать и так и так, но все же Microsoft рекомендовал запускать Win 2.x приложения под Win 3.0 только в режиме Real mode. Как же тогда Win 2/386 работает с Win 2.03 приложениями?
Вобщем, имеется 7 знаков вопроса. 3 по первым трем пунктам нуждаются в уточнении, а остальные мне непонятны, может, кто подскажет.
Хочу прояснить для себя некоторые детали для Windows 2.x и Windows 3.0.
Самый простой вариант: Windows 2.x и Windows 3.0 в Real mode - доступно 640 Kb памяти (с himem + еще несколько десятков?), мультизадачность ДОС приложений (эмуляция 8080) отсутствует.
Вариант №2 (тоже простой): Windows 3.0 в Standart режиме (для 286). Эмуляции нет, память до 16 (?) метров.
Вариант №3 (еще один простой): Windows 3.0 для 386. Эмуляция присутствует, память, хоть и адресуется как в 386, но из-за ограничения Винды - тоже до 16 (?) метров.
Вариант №4 (непонятный): Windows 2/286, эмуляция, ясен пень, отсутствует, полноправный Real mode (очень похож на Win 3.0 в таком же режиме). Но тогда какие ресурсы 286 проца использует эта версия?
Вариант №5(загадочный) Windows 2/386. Самый "темный" для меня вариант. Ясно только, что какая-никакая многозадачность для ДОС приложений поддерживается. Стало быть, проц работает в защищенном режиме. Но тогда появляются вопросы: во-первых, что с памятью? А во-вторых, что с Real mode приложениями? Они же любят завалится под protected mode. Конечно, грамотно написанное прилодение будет работать и так и так, но все же Microsoft рекомендовал запускать Win 2.x приложения под Win 3.0 только в режиме Real mode. Как же тогда Win 2/386 работает с Win 2.03 приложениями?
Вобщем, имеется 7 знаков вопроса. 3 по первым трем пунктам нуждаются в уточнении, а остальные мне непонятны, может, кто подскажет.
lvovpc.ho.ua - ПК-01 Львов
- Anderson1
- Advanced Member
- Сообщения: 3139
- Зарегистрирован: 27.02.2011,18:38
- Откуда: Москва
-
Вклад в сообщество
Самый простой вариант тоже не самый простой, ибо не надо забывать про EMS, которая тоже в реальном режиме адресуется. Впрочем в случае эмуляции с менеджером памяти режим на самом деле не реальный, но винда считает его реальным.
Вариант 4: используется HMA, т.е. первые 64KB по A20 - знаменитая ошибка 286-го процессора. Причём если там сидит himem+dos, то винда 2/286 не запускается.
Вариант 5: погдядеть ms dos shell с включённой переключалкой задач - она как винда в защищённом режиме, только без win-приложений, только DOS. Память dos-приложений подкачивается на диск во временный каталог - отдельно на каждую задачу. Т.е. не как в 386-режиме с одим свопом на всё. Касательно всяких софтин под дос-экстендеры, то скорее всего они всё повесят.
Вариант 4: используется HMA, т.е. первые 64KB по A20 - знаменитая ошибка 286-го процессора. Причём если там сидит himem+dos, то винда 2/286 не запускается.
Вариант 5: погдядеть ms dos shell с включённой переключалкой задач - она как винда в защищённом режиме, только без win-приложений, только DOS. Память dos-приложений подкачивается на диск во временный каталог - отдельно на каждую задачу. Т.е. не как в 386-режиме с одим свопом на всё. Касательно всяких софтин под дос-экстендеры, то скорее всего они всё повесят.
Windows 2.x либо 3.0 сам по себе EMS, вроде, не умеет. То есть поместить какой-то свой софт в UMA Windows не сможет и если кто-то его использует - Винде попарабану. Правильно?Самый простой вариант тоже не самый простой, ибо не надо забывать про EMS
Если есть два приложения, которые раскиданы в разные фрагменты памяти, как с ними можно работать, считая режим реальным?Впрочем в случае эмуляции с менеджером памяти режим на самом деле не реальный, но винда считает его реальным.
То есть, вся поддержка 286 - это дополнительные 64 КВ?Вариант 4: используется HMA
Не, запускается, только кричит, что "конфигурация памяти изменена, я работаю не оптимально, переустанови меня". Интересно только, если в config.sys нигде не прописывать DEVICEHIGH - все равно ругается.Причём если там сидит himem+dos, то винда 2/286 не запускается
Т.е. windows 2/386 переключается в защищенный режим, используя только эмуляцию, а из памяти используется первый метр, приблизительно, как в Real mode? Если да, то разве это не тормозит работу?Вариант 5:
Не понял. Выходит Windows 2/386 ни с чем не совместима?Касательно всяких софтин под дос-экстендеры, то скорее всего они всё повесят.
lvovpc.ho.ua - ПК-01 Львов
- Anderson1
- Advanced Member
- Сообщения: 3139
- Зарегистрирован: 27.02.2011,18:38
- Откуда: Москва
-
Вклад в сообщество
По крайне мере Win3.0a пишет в About Program Manager:
Real Mode (Large Frame EMS)
Free Memory......xxxK (yyyK in EMS)
Free Expanded Memory......32zzzKB
Т.е. все 32MB EMS видит.
Да, вся поддержка 286 это +64KB. В те времена считалось, что переключить 286-й в защищённый режим это очень сложно
devicehigh это касается запуска в UMB's - не путать с HMA, в которую DOS грузится по команде config.sys "DOS=HIGH".
Вариант 5: Где-то так.
MS и тормозит разве это не синонимы?
Выходит что не совместима. Из всех 2-х виндов стабильно запускается только 2.03. BTW, 386-расширенный режим в Win 3.0 это тоже песня, как и стандартный. Нужны весьма специфические условия, чтоб в них заработало. Тогда как 3.1 в обычных условиях запускается свободно и не ругается на всякие уже установленные защищённые режимы от emm386 например.
Real Mode (Large Frame EMS)
Free Memory......xxxK (yyyK in EMS)
Free Expanded Memory......32zzzKB
Т.е. все 32MB EMS видит.
Да, вся поддержка 286 это +64KB. В те времена считалось, что переключить 286-й в защищённый режим это очень сложно
devicehigh это касается запуска в UMB's - не путать с HMA, в которую DOS грузится по команде config.sys "DOS=HIGH".
Вариант 5: Где-то так.
MS и тормозит разве это не синонимы?
Выходит что не совместима. Из всех 2-х виндов стабильно запускается только 2.03. BTW, 386-расширенный режим в Win 3.0 это тоже песня, как и стандартный. Нужны весьма специфические условия, чтоб в них заработало. Тогда как 3.1 в обычных условиях запускается свободно и не ругается на всякие уже установленные защищённые режимы от emm386 например.
Давайте определимся с теримнами . Я думал, что память имеет следующий вид:
0 - 640 - досутпная всем память
640 - 1024 - UMA или UMB (зарезервировання память), а EMS - стапнадрт, который позволяет "выдрать" из нее несколько десятков килобайт
1024 - 1088 - НМА - пробелма A20. Himem используя это расширяет память на 64 КВ
1088 - ... - XMS - вся остальная память
По моим понятиям, EMS никак не может быть мегабайтами. Но, судя, по Вышему логу EMS Винда 3.0 все-таки умеет, и даже видит больше 16 метров (проверить не мог, а Википедии написано - 16)
0 - 640 - досутпная всем память
640 - 1024 - UMA или UMB (зарезервировання память), а EMS - стапнадрт, который позволяет "выдрать" из нее несколько десятков килобайт
1024 - 1088 - НМА - пробелма A20. Himem используя это расширяет память на 64 КВ
1088 - ... - XMS - вся остальная память
По моим понятиям, EMS никак не может быть мегабайтами. Но, судя, по Вышему логу EMS Винда 3.0 все-таки умеет, и даже видит больше 16 метров (проверить не мог, а Википедии написано - 16)
Вроде, не переключить в защищенный, а вернуть в реальный, но и то была не главная проблема. Где-то читал, что IMB в OS/2 1.0 пытались реализировать эмуляцию ДОС программ в расширенном режиме 286. Напомню, что в отличие от 386 у него нет аппаратной виртуальной машины. Так вот, из-за всех этих заморочек по достпупу к памяти (программа досутпается как бы в реальном режиме, но в дейстивтельности проц в защищенном) работа получилось нетерпимо медленной. Поэтому и был придуман костыль - OS/2, работая в расширенной памяти, резервировала нижние 640 КВ для ДОС программ, и когда они запускались, сбрасывала проц в реальный режим и выполняла ДОС-программу. Поэтому мне очень подозрительно, что Виндовс добилась, пусть и не лучших, но терпимых результатов в запуске Real mode программ в protected mode.В те времена считалось, что переключить 286-й в защищённый режим это очень сложно
Ну, моя 2/286 на 286 компе работает неплохоВыходит что не совместима. Из всех 2-х виндов стабильно запускается только 2.03.
lvovpc.ho.ua - ПК-01 Львов
EMS - это такая фиговина, что позволяет обзирать немеряны просторы XMS через 64К замочную скважину, проковырянную где-то в пределах UMA. Остальную часть UMA EMS не пользует вовсе. Одновременно EMS и XMS не живут, ибо замещают друг-друга, "вытесняя противника" с поляны боевых действий.Zelya писал(а):EMS - стапнадрт, который позволяет "выдрать" из нее несколько десятков килобайт
Причём, EMS будет работать даже если в компе физически установлено всего 640К памяти. Ибо для таких компов выпускались ISA-based карточки с 64К RAM-кешем и 1..32 метра памятью на борту.
Кстати, а что означает "стапнадрт"? Стопарь+нарды???
- Anderson1
- Advanced Member
- Сообщения: 3139
- Зарегистрирован: 27.02.2011,18:38
- Откуда: Москва
-
Вклад в сообщество
Про EMS Fe-Restorator исчерпывающе написал. Винда 3.0 видит 16 метров XMS, из-за того, что понимает стандарт XMS только версии 1.0, т.е. до 16MB. Напомню, что XMS 2.0 = 64MB, а текущий 3.0 = 4GB. К совершенно другому стандарту на совсем иной тип памяти это естественно не относится.
Касательно win vs. os/2 то не забывать, что это противостояние полуось проиграла с треском, который ещё назывался winos/2 Может в т.ч. и по этой причине?
Толку в Win2/286 никакого - DOS прекрасно сама засовывается в HMA замечательно освобождая нижнюю память. Так что поддержка HMA в Win/286 получается скорее помехой, чем помощью.
Касательно win vs. os/2 то не забывать, что это противостояние полуось проиграла с треском, который ещё назывался winos/2 Может в т.ч. и по этой причине?
Толку в Win2/286 никакого - DOS прекрасно сама засовывается в HMA замечательно освобождая нижнюю память. Так что поддержка HMA в Win/286 получается скорее помехой, чем помощью.
Fe-Restorator
Ага... то есть EMS позволяет мапить любые 64 КВ XMS в UMA. Ну, и имея свободный доступ в XMS, понятно EMS нафиг нужно. Правильно? И вдогонку вопрос, Win 2/286 умеет EMS?
Anderson1
То есть Ваша Вин 3.0 видела 32 метра, через EMS?
Ага... то есть EMS позволяет мапить любые 64 КВ XMS в UMA. Ну, и имея свободный доступ в XMS, понятно EMS нафиг нужно. Правильно? И вдогонку вопрос, Win 2/286 умеет EMS?
Anderson1
То есть Ваша Вин 3.0 видела 32 метра, через EMS?
Дмуаю, ОС/2 проиграла из-за того, что пока она разрабатывалась под все ресурсы 286 проца, был выпущен революционный 386. ОСи, ориентированный на этот проц писались быстро, и работали отлично, чего не скажешь про OS/2 1.x, которая из-за костылей для 286 страшно глючила и на 386.Касательно win vs. os/2 то не забывать, что это противостояние полуось проиграла с треском, который ещё назывался winos/2 Может в т.ч. и по этой причине?
lvovpc.ho.ua - ПК-01 Львов
Нет! При юзании EMS никаких XMS нет и в помине, просто N метров неизвестной никому памяти.Zelya писал(а):EMS позволяет мапить любые 64 КВ XMS в UMA. Ну, и имея свободный доступ в XMS, понятно EMS нафиг нужно
Исторически сперва появился EMS, ибо ни ХТ, ни 186/286 не могли адресовать более 1 мегабайта памяти. Именно поэтому в UMA просверливалось очко размером в 64К(размер сегмента) и сквозь него, как сквозь лупу, покадрово просматривались все "неизвестные процу" гигазы RAM, обычно распаяные на ISA-driven карточке, часто с дополнительным RAM-extender разъмом, величиной с ещё одну ису, под его ответную часть, впаяную в мать и посаженную напрямую на шину памяти.
Потом появился 386, защищённый режим и нативная поддержка 32 метров памяти, здесь расцвёл XMS, ибо более нет нужды в аппаратном "очке" тормознутого EMS, а программное EMS-очко в виде emm386.exe было оставлено для совместимости с "особо-умными прогами", жить не желающими без EMS.
Этого не ведаю, но, если и умеет, то скорее всего - не нативно, а через некий посторонний драйвер. Запускалась-же когда-то win2 на 286-8 с 3-мя метрами памяти... Помню сие, но не помню конфы того компа, был-ли там емс...Zelya писал(а):Win 2/286 умеет EMS
- Anderson1
- Advanced Member
- Сообщения: 3139
- Зарегистрирован: 27.02.2011,18:38
- Откуда: Москва
-
Вклад в сообщество
Да. Только что экспериментально это установил - и 2.03 и 2.10/286 отлично видят все 32MB EMS, о чём пишут а About.Zelya писал(а): И вдогонку вопрос, Win 2/286 умеет EMS?
Снова да. Однако, Win 3.0 таки держит XMS 2.0, ибо имеет в комплекте himem.sys с поддержкой этой версии XMS и рапортует о 74MB свободной памяти в 386-расширенном режиме. Но если забить первые 16MB XMS рамдиском или дисковым кешем, винда пишет о нехватке памяти. Т.о. не факт что и со всеми 32-мегами EMS оно будет работать.Zelya писал(а): Anderson1То есть Ваша Вин 3.0 видела 32 метра, через EMS?
Fe-Restorator
Anderson1
Так ведь 286-й мог адресовать до 16 метров и имел свой защищенный режим. Это тоже было XMS 1.0?Исторически сперва появился EMS, ибо ни ХТ, ни 186/286 не могли адресовать более 1 мегабайта памяти.
Anderson1
Странно. Я как не конфигурил свою Винду на 286-м с 4-мя метрами - никак их увидеть не мог....Только что экспериментально это установил - и 2.03 и 2.10/286 отлично видят все 32MB EMS
lvovpc.ho.ua - ПК-01 Львов