Windows и память (Protected и Real mode в старых версиях)

Поиск, обмен ссылками, вопросы по устаревшему программному обеспечению.
Zelya
Member
Сообщения: 191
Зарегистрирован: 11.01.2009,11:38
Откуда: Львов
Контактная информация:

Windows и память

Сообщение Zelya » 31.05.2011,10:59

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 по первым трем пунктам нуждаются в уточнении, а остальные мне непонятны, может, кто подскажет.
lvovpc.ho.ua - ПК-01 Львов

Аватара пользователя
Anderson1
Advanced Member
Сообщения: 3139
Зарегистрирован: 27.02.2011,18:38
Откуда: Москва

Вклад в сообщество

Сообщение Anderson1 » 31.05.2011,12:47

Самый простой вариант тоже не самый простой, ибо не надо забывать про EMS, которая тоже в реальном режиме адресуется. Впрочем в случае эмуляции с менеджером памяти режим на самом деле не реальный, но винда считает его реальным.
Вариант 4: используется HMA, т.е. первые 64KB по A20 - знаменитая ошибка 286-го процессора. Причём если там сидит himem+dos, то винда 2/286 не запускается.
Вариант 5: погдядеть ms dos shell с включённой переключалкой задач - она как винда в защищённом режиме, только без win-приложений, только DOS. Память dos-приложений подкачивается на диск во временный каталог - отдельно на каждую задачу. Т.е. не как в 386-режиме с одим свопом на всё. Касательно всяких софтин под дос-экстендеры, то скорее всего они всё повесят.

Zelya
Member
Сообщения: 191
Зарегистрирован: 11.01.2009,11:38
Откуда: Львов
Контактная информация:

Сообщение Zelya » 31.05.2011,13:16

Самый простой вариант тоже не самый простой, ибо не надо забывать про EMS
Windows 2.x либо 3.0 сам по себе EMS, вроде, не умеет. То есть поместить какой-то свой софт в UMA Windows не сможет и если кто-то его использует - Винде попарабану. Правильно?
Впрочем в случае эмуляции с менеджером памяти режим на самом деле не реальный, но винда считает его реальным.
Если есть два приложения, которые раскиданы в разные фрагменты памяти, как с ними можно работать, считая режим реальным?
Вариант 4: используется HMA
То есть, вся поддержка 286 - это дополнительные 64 КВ?
Причём если там сидит himem+dos, то винда 2/286 не запускается
Не, запускается, только кричит, что "конфигурация памяти изменена, я работаю не оптимально, переустанови меня". Интересно только, если в config.sys нигде не прописывать DEVICEHIGH - все равно ругается.
Вариант 5:
Т.е. windows 2/386 переключается в защищенный режим, используя только эмуляцию, а из памяти используется первый метр, приблизительно, как в Real mode? Если да, то разве это не тормозит работу?
Касательно всяких софтин под дос-экстендеры, то скорее всего они всё повесят.
Не понял. Выходит Windows 2/386 ни с чем не совместима?
lvovpc.ho.ua - ПК-01 Львов

Аватара пользователя
Anderson1
Advanced Member
Сообщения: 3139
Зарегистрирован: 27.02.2011,18:38
Откуда: Москва

Вклад в сообщество

Сообщение Anderson1 » 31.05.2011,23:21

По крайне мере 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 например.

Zelya
Member
Сообщения: 191
Зарегистрирован: 11.01.2009,11:38
Откуда: Львов
Контактная информация:

Сообщение Zelya » 01.06.2011,10:26

Давайте определимся с теримнами :). Я думал, что память имеет следующий вид:

0 - 640 - досутпная всем память
640 - 1024 - UMA или UMB (зарезервировання память), а EMS - стапнадрт, который позволяет "выдрать" из нее несколько десятков килобайт
1024 - 1088 - НМА - пробелма A20. Himem используя это расширяет память на 64 КВ
1088 - ... - XMS - вся остальная память

По моим понятиям, EMS никак не может быть мегабайтами. Но, судя, по Вышему логу EMS Винда 3.0 все-таки умеет, и даже видит больше 16 метров (проверить не мог, а Википедии написано - 16)
В те времена считалось, что переключить 286-й в защищённый режим это очень сложно
Вроде, не переключить в защищенный, а вернуть в реальный, но и то была не главная проблема. Где-то читал, что IMB в OS/2 1.0 пытались реализировать эмуляцию ДОС программ в расширенном режиме 286. Напомню, что в отличие от 386 у него нет аппаратной виртуальной машины. Так вот, из-за всех этих заморочек по достпупу к памяти (программа досутпается как бы в реальном режиме, но в дейстивтельности проц в защищенном) работа получилось нетерпимо медленной. Поэтому и был придуман костыль - OS/2, работая в расширенной памяти, резервировала нижние 640 КВ для ДОС программ, и когда они запускались, сбрасывала проц в реальный режим и выполняла ДОС-программу. Поэтому мне очень подозрительно, что Виндовс добилась, пусть и не лучших, но терпимых результатов в запуске Real mode программ в protected mode.
Выходит что не совместима. Из всех 2-х виндов стабильно запускается только 2.03.
Ну, моя 2/286 на 286 компе работает неплохо :)
lvovpc.ho.ua - ПК-01 Львов

Гость

Сообщение Гость » 01.06.2011,13:47

Zelya писал(а):EMS - стапнадрт, который позволяет "выдрать" из нее несколько десятков килобайт
EMS - это такая фиговина, что позволяет обзирать немеряны просторы XMS через 64К замочную скважину, проковырянную где-то в пределах UMA. Остальную часть UMA EMS не пользует вовсе. Одновременно EMS и XMS не живут, ибо замещают друг-друга, "вытесняя противника" с поляны боевых действий.
Причём, EMS будет работать даже если в компе физически установлено всего 640К памяти. Ибо для таких компов выпускались ISA-based карточки с 64К RAM-кешем и 1..32 метра памятью на борту.
Кстати, а что означает "стапнадрт"? ;) Стопарь+нарды??? :biggrin:

Аватара пользователя
Anderson1
Advanced Member
Сообщения: 3139
Зарегистрирован: 27.02.2011,18:38
Откуда: Москва

Вклад в сообщество

Сообщение Anderson1 » 01.06.2011,16:55

Про 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 получается скорее помехой, чем помощью.

Zelya
Member
Сообщения: 191
Зарегистрирован: 11.01.2009,11:38
Откуда: Львов
Контактная информация:

Сообщение Zelya » 01.06.2011,17:02

Fe-Restorator
Ага... то есть EMS позволяет мапить любые 64 КВ XMS в UMA. Ну, и имея свободный доступ в XMS, понятно EMS нафиг нужно. Правильно? И вдогонку вопрос, Win 2/286 умеет EMS?

Anderson1
То есть Ваша Вин 3.0 видела 32 метра, через EMS?
Касательно win vs. os/2 то не забывать, что это противостояние полуось проиграла с треском, который ещё назывался winos/2 :) Может в т.ч. и по этой причине?
Дмуаю, ОС/2 проиграла из-за того, что пока она разрабатывалась под все ресурсы 286 проца, был выпущен революционный 386. ОСи, ориентированный на этот проц писались быстро, и работали отлично, чего не скажешь про OS/2 1.x, которая из-за костылей для 286 страшно глючила и на 386.
lvovpc.ho.ua - ПК-01 Львов

Гость

Сообщение Гость » 01.06.2011,18:20

Zelya писал(а):EMS позволяет мапить любые 64 КВ XMS в UMA. Ну, и имея свободный доступ в XMS, понятно EMS нафиг нужно
Нет! При юзании EMS никаких XMS нет и в помине, просто N метров неизвестной никому памяти.
Исторически сперва появился EMS, ибо ни ХТ, ни 186/286 не могли адресовать более 1 мегабайта памяти. Именно поэтому в UMA просверливалось очко размером в 64К(размер сегмента) и сквозь него, как сквозь лупу, покадрово просматривались все "неизвестные процу" гигазы RAM, обычно распаяные на ISA-driven карточке, часто с дополнительным RAM-extender разъмом, величиной с ещё одну ису, под его ответную часть, впаяную в мать и посаженную напрямую на шину памяти.
Потом появился 386, защищённый режим и нативная поддержка 32 метров памяти, здесь расцвёл XMS, ибо более нет нужды в аппаратном "очке" тормознутого EMS, а программное EMS-очко в виде emm386.exe было оставлено для совместимости с "особо-умными прогами", жить не желающими без EMS.
Zelya писал(а):Win 2/286 умеет EMS
Этого не ведаю, но, если и умеет, то скорее всего - не нативно, а через некий посторонний драйвер. Запускалась-же когда-то win2 на 286-8 с 3-мя метрами памяти... Помню сие, но не помню конфы того компа, был-ли там емс...

Аватара пользователя
Anderson1
Advanced Member
Сообщения: 3139
Зарегистрирован: 27.02.2011,18:38
Откуда: Москва

Вклад в сообщество

Сообщение Anderson1 » 01.06.2011,22:26

Zelya писал(а): И вдогонку вопрос, Win 2/286 умеет EMS?
Да. Только что экспериментально это установил - и 2.03 и 2.10/286 отлично видят все 32MB EMS, о чём пишут а About.
Zelya писал(а): Anderson1То есть Ваша Вин 3.0 видела 32 метра, через EMS?
Снова да. Однако, Win 3.0 таки держит XMS 2.0, ибо имеет в комплекте himem.sys с поддержкой этой версии XMS и рапортует о 74MB свободной памяти в 386-расширенном режиме. Но если забить первые 16MB XMS рамдиском или дисковым кешем, винда пишет о нехватке памяти. Т.о. не факт что и со всеми 32-мегами EMS оно будет работать.

Zelya
Member
Сообщения: 191
Зарегистрирован: 11.01.2009,11:38
Откуда: Львов
Контактная информация:

Сообщение Zelya » 02.06.2011,09:18

Fe-Restorator
Исторически сперва появился EMS, ибо ни ХТ, ни 186/286 не могли адресовать более 1 мегабайта памяти.
Так ведь 286-й мог адресовать до 16 метров и имел свой защищенный режим. Это тоже было XMS 1.0?

Anderson1
Только что экспериментально это установил - и 2.03 и 2.10/286 отлично видят все 32MB EMS
Странно. Я как не конфигурил свою Винду на 286-м с 4-мя метрами - никак их увидеть не мог....
lvovpc.ho.ua - ПК-01 Львов

Ответить