Оригиналът е на Raymond Chen Даниел Десподов преди 8 секунди

...
Оригиналът е на Raymond Chen Даниел Десподов преди 8 секунди
Коментари Харесай

Ето как популярността на DOS/4GW помогна на игрите в средата на ОС Windows 98

Оригиналът е на Raymond Chen

Даниел Десподов преди 8 секунди 1 Сподели

Най-четени

IT НовиниДаниел Десподов - 11:20 | 29.08.2023

Нашата галактика може да е квантов компютър

IT НовиниЕмил Василев - 20:34 | 28.08.2023

Учени са разгадали по какъв начин да създават тетратенит – метеоритен метал, който може да размени редките метали и да промени света на технологиите

ТелефониДаниел Десподов - 10:00 | 29.08.2023

Минг-Чи Куо: тази седмица Apple стартира всеобщите продажби на iPhone 15 Pro, с което ще изпревари Samsung

Даниел Десподовhttps://www.kaldata.com/Новинар. Увличам се от модерни технологии, осведомителна сигурност, спорт, просвета и изкуствен интелект.

В началото на 90-те години на предишния век най-популярният екстендер за DOS беше DOS/4GW. По време на създаването на Windows 95 прекарвах доста време в работа по съвместимостта на игрите с MS-DOS, тъй че виждах доста банери на екстендери за DOS и най-често това беше DOS/4GW.

Може да се запитате: „ Как тези игри въобще вървяха на Windows 95, в случай че бяха с екстендер за DOS? Дали екстендерът нямаше безрезултатно да се опита да премине в предпазен режим, тъй като Windows към този момент работеше в предпазен режим? “.

Уловката се състои в това, че тези разширители (extenders) в действителност бяха две свързани между тях стратегии. Едната се използваше като сървър в предпазен режим, а другата беше потребителска библиотека в предпазен режим.

В началото съществуваше Virtual Control Programme Interface (VCPI), който се поддържаше от мениджъри на паметта като EMM386. Тези мениджъри на разширената памет съвсем не използваха предпазения режим: единственото нещо, за което се грижеха, беше достъпът до паметта над ограничаването от 1 МВ, с цел да могат да основават таблици на страниците, с цел да картографират разширената памет в рамката на страницата на разширената памет, само че не правиха никаква друга виртуализация. MS-DOS работеше във виртуална машина с цялостен достъп до хардуера, а интерфейсът VCPI позволяваше на приложението MS-DOS да каже: „ Сега би трябвало да получа цялостен надзор над системата„, при което VCPI отговаряше: „ Разбира се, няма проблем!„.

Интерфейсът VCPI бързо загуби своята известност, защото нито една операционна система в предпазен режим (като Windows 3.0 в режим Advanced Mode) не би разрешила на някоя стратегия да получи цялостен надзор над системата. По създание тя би спряла остарялата операционна система, с цел да разреши на стратегия от MS-DOS да поеме контрола в качеството си на нова обособена платформа. Windows 3.0 вкара нов интерфейс, наименуван DOS Protected Mode Interface (DPMI), който позволяваше на MS-DOS стратегиите да изискват осъществяване на своя код в предпазен режим, само че единствено в потребителския режим на операционната система. Драйверът за достъп до DPMI продължи да управлява режима на ядрото.

И по този начин, дано се върнем към DOS/4GW. При пускане екстендерът DOS/4GW търси работещ DPMI сървър. Ако не го открие, той се конфигурира като DPMI-сървър. Но в случай че DPMI-сървърът към този момент бе стартиран, той позволяваше на този DPMI-сървър да си остане стартиран.

Играта споделяше единствено с тази част на библиотеката, която се отнася до DPMI клиента, употребен за преход към 32-битов режим, за разпределението на паметта и за осъществяването на всички 32-битови задания, които бяха нужни на съответната 32-битова игра.

С други думи, получаваше се следната блок скица:

И двата DPMI сървъра, Windows и DOS/4GW, осъществят DPMI интерфейса, тъй че DPMI клиентът на DOS/4GW употребява общоприетите DPMI извиквания за връзка с двата сървъра.

Това беше отлично за съвместимостта на приложенията, защото в случай че имаше проблем с връзката на DOS/4GW клиентът с DOS/4GW сървъра, всичко, което трябваше да създадем, беше да го отстраним еднократно и за всички игри едновременно. От друга страна, в случай че казусът не можеше да бъде отхвърлен, той щеше да срине доста игри.

Голям риск, огромна облага.

Като по знамение множеството игри просто работеха, макар че работеха под неверния DPMI сървър, за който бяха в началото създадени. От време на време имаше проблеми с обособените игри. Най-често срещани бяха проблемите с игри, които одобряваха, че цялата памет е физическа, и игри, които одобряваха, че флагът за спиране не е виртуализиран, само че в по-голямата си част всичко работеше задоволително добре, тъй че останалите проблеми можеха да се решат като характерни за приложението неточности.

Източник: kaldata.com


СПОДЕЛИ СТАТИЯТА


КОМЕНТАРИ
НАПИШИ КОМЕНТАР