Macken der Abwärtskompatibilität

Kaum jemand hat vom Betriebssystem DOS-777 gehört. Und das gab es wirklich. In Wirklichkeit war es das am häufigsten verwendete MS DOS mit geringfügigen Änderungen, das auf einem einzelnen Computer und einem einzelnen Programm ausgeführt werden konnte. Dieser Klon verdankt sein Aussehen in gewisser Weise dem Problem der Abwärtskompatibilität. Aber das Wichtigste zuerst.



Ein neues und wichtiges Programm verhielt sich plötzlich völlig mysteriös. Dies machte seine Autoren so wütend, dass beschlossen wurde, MS DOS zu zerlegen, die Nuancen seiner Arbeit zu verstehen und die Gründe für seltsame Fehler zu finden. Selbst aus Leidenschaft wird es kaum jemand wagen, beispielsweise Windows-10 zu zerlegen und alle seine Funktionen zu verstehen. In den frühen 90er Jahren, als das Betriebssystem aus drei relativ kleinen Dateien bestand, dauerte die Demontage und Analyse zwei Wochen.



Es wurden viele kleine Funktionen entdeckt, die derzeit wahrscheinlich für niemanden von Interesse sind. In jenen Tagen war es nach den Ergebnissen dieser Analyse sogar möglich, die fehlenden Namen der Felder der internen MS DOS-Tabellen auszufüllen, die in einem der von Frolovs herausgegebenen Bücher der System Programmer's Library-Reihe (Dialogue MEPhI Publishing House) als „reserviert“ bezeichnet wurden.



Ich wiederhole, es ist unwahrscheinlich, dass all diese Feinheiten jetzt für irgendjemanden von Interesse sind, aber die drei gefundenen Nuancen, die auf die eine oder andere Weise mit dem Problem der Abwärtskompatibilität zusammenhängen, sind vielleicht erwähnenswert.



Nuance zuerst. Die frühesten "TSR" -Programme, zum Beispiel "SideKick", suchten die Adresse des betriebssysteminternen "Busy" -Flag direkt aus dem Kontext von Befehlen in MS DOS. In nachfolgenden Versionen änderte sich dieser Kontext, und eine dokumentierte Funktion zum Anfordern eines Flags wurde angezeigt. Einige "alte" Befehle wurden jedoch speziell in das Datensegment verschoben (sie wurden nicht gesteuert), sodass alte Programme immer noch den richtigen Kontext finden. Eine Analogie kommt mit dem Start eines neuen Schiffes in den Sinn, das nach seinem legendären Vorgänger benannt ist. Dann wird nach der Tradition eine Platte aus dem alten Gebäude herausgeschnitten und als Gedenktafel am neuen Schiff angebracht. Alle Versionen von MS DOS haben also ein kleines Stück der allerersten Version von 1981 an Bord.



Die nächste Nuance war merkwürdiger. Es stellte sich heraus, dass MS DOS vor dem Ausführen einer EXE-Datei einen bestimmten Kontext an einer bestimmten Stelle unter seinen Befehlen überprüft. Wenn es dort ist, "drückt" das Betriebssystem die benachbarten Befehle leicht und fügt die Befehle PUSH CX und POP CX hinzu.







LOOP, , - MicroSoft, , . : « MS DOS !» . , MicroSoft , , . , CX. MS DOS POP CX, , MicroSoft . ( , ) , .



, , , , , . . , , , , , . 8086 . : .. (16 20) .. (16 20). , , , ( ). . 19- ( ) 64 .







1986 32- , 30 ( 32, ). , «» .







«». , - . , , 20- , ! : .



, , , «640 » . «expanded», - 64- «» , MicroSoft MS DOS, , , 640 .





MS DOS . DOS , , , . DOS … , ? ? ? . , DOS , (.. PSP) . ( DOS) . , .







: DOS, , , .





DOS, , . , DOS , . DOS-777 , .







, , . MMX, FPU. : , , FPU. MMX, .





-, : , MMX, ( ) , , Windows. , - MMX . - MMX FPU . - - Windows , MMX, .



Somit besteht das Problem der Abwärtskompatibilität objektiv, und manchmal ist es notwendig, es zu lösen. Aber wenn in den ersten beiden Beispielen die Lösung genial und vor allem für Benutzer verborgen war, die diese Kompatibilität nicht benötigen, dann führte in den letzten beiden Beispielen ein Kompatibilitätsversuch (meiner Meinung nach weit hergeholt!) Zu anspruchsvollen Hardwarelösungen und führte zu Problemen. Darüber hinaus war die Kompatibilität schon damals viel besser und einfacher, da ein speziell entwickelter virtueller 8086-Modus



das Hauptproblem jeder Abwärtskompatibilität darin besteht, dass jedes Jahr immer weniger Benutzer sie benötigen. Und jeder muss das berücksichtigen.








All Articles