Verlässt sich Windows immer noch auf MS-DOS?

71

Ich bin gerade dabei, einen OS-Kurs zu beginnen, und als Apple-Benutzer bin ich mit den grundlegenden Details des Windows-Betriebssystems nicht sehr vertraut. Ich habe mich gefragt, ob MS DOS immer noch unter Windows ausgeführt wird oder ob NUR Windows jetzt als Betriebssystem verwendet wird. Ich war ein wenig verwirrt, weil ich irgendwo gelesen habe, dass MS-DOS zum Booten verwendet wird, aber Windows alle anderen Betriebssystemfunktionen enthält und daher für alle anderen Betriebssystemvorgänge verwendet wird ...

rrazd
quelle
Das Ende dieser Diskussion sieht interessant aus.
user2284570
Nein, tut es nicht. Das letzte Consumer-Betriebssystem, das sich auf MS-DOS stützte, war Windows Me. Windows XP, Vista, 7 und höher basieren alle auf der Windows NT-Architektur.
bwDraco

Antworten:

140

Bei Microsoft Windows gibt es zwei unterschiedliche Abstammungslinien, und es hilft nichts, wenn Leute Dinge über eine Abstammungslinie schreiben, die sie über die andere gelernt haben.

  • Die DOS + Windows- Linie umfasst DOS + Windows, alle Versionen bis Version 3.11, DOS + Windows 95, DOS + Windows 98 und DOS + Windows Millennium Edition. Es hat Windows auf DOS geschichtet. Es wurden ganze Bücher über dieses Layering geschrieben, und es ist umstritten, nicht zuletzt, weil viele Leute Anfang bis Mitte der 1990er Jahre für eine Messe wollten, dass die Welt glaubt, DOS sei weg und Windows weg das Betriebssystem.

    Dies ist der DOS + Windows-Bootstrap-Prozess.

  • Die Windows NT- Linie umfasst Windows NT 3.x, Windows NT 4.0, Windows NT 5.0 ("Windows 2000"), Windows NT 5.1 ("Windows XP"), Windows NT 5.2 (einige Editionen von Windows XP und "Windows Server 2003"). ), Windows NT 6.0 ("Windows Vista") und Windows NT 6.1 ("Windows 7"). Es wird nicht über DOS gelegt, funktioniert auf völlig andere Weise als DOS und kann DOS-Anwendungen mithilfe eines virtuellen NT-DOS- Computers (NTVDM) ausführen, bei dem es sich um einen virtuellen Computer handelt , der über Windows NT und nicht über dem anderen Computer ausgeführt wird Weg drum herum.

    Dies ist der Windows NT 6.x-Bootstrap-Prozess.

Was auch nicht hilft, ist, wenn man fälschlicherweise von einer "DOS-Eingabeaufforderung" in Windows NT spricht, wie es hier sogar in Antworten vorkommt. Abgesehen von der Tatsache, dass es Befehlsinterpreter sind, die nicht Betriebssysteme auffordern , verschmilzt dies "DOS" mit "textueller Benutzerschnittstelle" und "Befehlsinterpreter", von denen keines in Wirklichkeit mit DOS synonym ist. DOS ist eine Familie von Betriebssystemen: MS-DOS, PC-DOS, DR-DOS, FreeDOS, OpenDOS usw.

Wenn unter Windows NT ein Eingabeaufforderungsfenster geöffnet ist, wird fast immer eines ausgeführt. Hierbei handelt es sich um den im CMDLieferumfang enthaltenen Standardbefehlsinterpreter von Microsoft und um ein normales Win32-Programm mit textueller Benutzeroberfläche. Es gibt weder "DOS" noch NTVDM. Es gibt nur ein Win32-Programm, das mit seinem Win32-Konsolenobjekt spricht. Und tatsächlich gibt es für viele TUI-Programme, die man unter Windows NT ausführen kann, einschließlich aller Tools in den verschiedenen Resource Kits von Microsoft, immer noch keinen Hauch von DOS im Bild, da dies alles gewöhnliche Win32-Programme sind, die Win32 Console I ausführen / O auch.

Ironischerweise gegeben , dass Windows NT 3.1 im Jahr 1993 veröffentlicht wurde, die Windows NT - Linie tatsächlich ist das nicht-basierte-upon-DOS von Windows-is-the-Betriebssystem - System , das alle Menschen in der Mitte der 1990er Jahre zu überzeugen versuchten , die Welt, die DOS + Windows 95 war.

Und achtzehn Jahre später versuchen wir immer noch, einigen Leuten mitzuteilen, dass Windows NT nicht wie DOS funktioniert und dies auch nie getan hat . ☺

Weitere Lektüre

  • Jonathan de Boyne Pollard (2006). Eine Buchliste für Betriebssystem-Kernel-Entwickler und Entwickler von Gerätetreibern . Häufig gestellte Fragen.
  • Mark E. Russinovich, David A. Solomon und Alex Ionescu (2009). Windows Internals (5. Ausgabe) . Microsoft Press. ISBN 9780735625303.
  • Walter Oney (1996). Systemprogrammierung für Windows 95 . Microsoft Press. ISBN 1 55615 949 8.
  • Matt Pietrek (November 1995). Geheimnisse der Windows 95-Systemprogrammierung . IDG Bücher. ISBN 1-56884-318-6.
  • Andrew Schulman (1994). Nicht autorisiertes Windows 95 . IDG Bücher weltweit. ISBN 9781568841694.
  • Matt Pietrek (1993). Windows-Interna: Die Implementierung der Windows-Betriebsumgebung . Addison-Wesley. ISBN 9780201622171.
  • Andrew Schulman, David Maxey und Matt Pietrek (1992). Undokumentiertes Windows: Ein Programmierhandbuch für reservierte Microsoft Windows-API-Funktionen . Addison-Wesley. ISBN 9780201608342.
JdeBP
quelle
11
Es wird nur besser. Ich unterrichte immer noch Leute, dass Sie Alt-Tab zwischen Anwendungen können. . .
Surfasb
2
Stimmt es nicht, dass für Windows 95+ DOS eher als Bootloader als als Betriebssystemschicht verwendet wird? dh Windows 95+ ruft DOS-Dienste nur während des Startvorgangs auf.
Winston Ewert
3
@ Winston Ewert, meines Wissens vertrauten Windows-Programme immer noch auf dos INT 21h in Windows 95. Zum Beispiel INT 21h-Funktion 55h für die Initialisierung und INT 21h-Funktion 4Ch für die Beendigung. Ich kann nicht für 98 und ME antworten. Aber 95 taten es.
Artifex
6
Sie können jedoch die reservierten DOS-Gerätenamen in Windows 7 unter explorer.exe immer noch nicht verwenden!
LawrenceC
5
Menschen! Sie wissen, wie diese Seite funktioniert. Wenn Sie Fragen zum DOS-Modus, zu den Bedeutungen der Optionen von msdos.sys und dazu haben möchten, warum in Win32 nicht mehrere Namen als Dateinamen verwendet werden können, verwenden Sie den Hyperlink Frage stellen oben auf dieser Seite . Starten Sie im Übrigen durch die Fragen von Leuten zu lesen , die bereits haben .
JdeBP
23

Außerdem war Windows 95 nicht nur eine grafische Benutzeroberfläche unter DOS. Lesen Sie hier mehr:

http://blogs.msdn.com/b/oldnewthing/archive/2007/12/24/6849530.aspx

Strabbi
quelle
1
Ich erinnere mich daran, das ganze VxD-Interface und den VMM-Switcher. Es war eine interessante Möglichkeit, auf einem Betriebssystem etwas voranzukommen und trotzdem eine Menge Abwärtskompatibilität zu haben.
Rich Homolka
Windows 95 wurde jedoch mit MS-DOS 7 ausgeliefert, und man konnte nur den DOS-Teil verwenden, um eine reine DOS-Bootdiskette zu erstellen und etwas zu haben, das sich wie eine leicht kaputte Edition von MS-DOS 6 anfühlte (aber auch mit ein paar neuen zusätzlichen Eigenschaften).
Randolf Richardson
4
Dies ist die richtigste Antwort: Windows hat sich seit Windows 95 nicht mehr auf DOS verlassen. Genau genommen benötigte Windows 3.11 nach der Übernahme der 32-Bit-Treiber kein DOS mehr. Aber 3.11 brachte keinen Bootloader mit; Also brauchte es DOS, um zum Ausgangspunkt zu gelangen.
Ian Boyd
1
Das Blog ist eine ziemlich gute Lektüre, danke für den Link
crasic
20

Nein. Alle Windows-Versionen vor denen mit dem "NT-Kernel" waren eher eine GUI über DOS. Mit NT, das mit der Einführung von Windows XP besonders verbreitet wurde (und Windows Vista und Windows 7 verwenden ebenfalls den NT-Kernel), wurde die Notwendigkeit, DOS als zugrunde liegendes Betriebssystem zu verwenden, beseitigt .

32-Bit-Versionen von Windows verfügen weiterhin über eine DOS-Eingabeaufforderung, die über command.comden Startdialog ausgeführt werden kann. Außerdem können die meisten alten DOS-Programme ausgeführt werden. Alle Windows-Versionen verfügen über eine Eingabeaufforderung, mit der Batchdateien und DOS-ähnliche Befehle ausgeführt werden können (normalerweise native Windows-Anwendungen, die für die Interaktion mit der DOS-Konsole konzipiert sind). 64-Bit-Windows kann keine DOS-Anwendungen ausführen, da 16-Bit-Prozesse nicht unterstützt werden.

Am besten sehen Sie die Eingabeaufforderung als eine spezielle Anwendung an, mit der DOS-Programme ausgeführt und / oder Windows-Programme über die Befehlszeile gestartet werden können.

Hinweis: Die Terminologie "DOS-Eingabeaufforderung" wurde häufig verwendet, um die "Eingabeaufforderung" vor der Einführung des NT-Kernels zu beschreiben. Obwohl viele Leute heute noch den Begriff "DOS-Eingabeaufforderung" verwenden (weil sie damit viele der gleichen Befehle ausführen, die ursprünglich als "DOS-Befehle" bezeichnet wurden, die normalerweise in einer DOS-Umgebung verfügbar sind), wird der Begriff "Befehl" verwendet prompt "ist in NT-Varianten von Windows technisch korrekt.

Randolf Richardson
quelle
13
Ältere (alte, 16-Bit-) DOS-Anwendungen werden in NTVDM ausgeführt, das im Subsystem für Eingabeaufforderungen emuliert wird. NTVDM ist auf 64-Bit-Windows-Systemen nicht verfügbar. Sie benötigen daher einen Emulator eines Drittanbieters, um 16-Bit-DOS-Apps wie DOSBox oder VirtualBox auszuführen.
afrazier
11
Der Grund, warum NTVDM unter 64-Bit-Windows nicht verfügbar ist, ist, dass es sich lediglich um einen Thin Wrapper handelt, der die CPU vor dem Ausführen des Codes in den 16-Bit-Modus versetzt. Im 64-Bit-Modus kann die CPU nur vorübergehend in den 32-Bit-Modus wechseln, um 32-Bit-Code auszuführen. Ohne einen Kaltstart kann kein 16-Bit-Code ausgeführt werden.
Hallo71
2
Hinweis an alle: Kommentare wurden von diesem Beitrag entfernt. An die Beteiligten: Bitte bleiben Sie höflich und denken Sie daran, dass ausführliche Diskussionen nach Möglichkeit zum Chatten verschoben werden sollten - übermäßige Kommentare zu einem Beitrag werden für andere Besucher sehr laut.
DMA57361
Da die Leute weiterhin heftig über diesen Beitrag streiten, sperren wir ihn vorerst. Kommentare wurden wieder entfernt.
nhinkle
@ Hallo71 falsch. In Linux zum Beispiel kann es. Und Sie können 16-Bit-DOS- und Win 3.1-Apps unter 64-Bit-Linux ausführen.
Anixx
5

Mehr als eine Antwort auf Randolf, aber er ist nicht der einzige, der wiederholt Kommandozeilenschnittstellen und DOS verwirrt .

Beachten Sie, dass viele der [DOS] - und [MS-DOS] -Tags denselben Fehler aufweisen: MS-DOS hatte anfangs nur einen Textmodus, eine Befehlszeilenschnittstelle mit dem Namen command.com+ norton commander für viele von uns und ein eigenes Textmodusfenster mit Frames , mit ansi.sys gezeichnet, aber nicht nur per Tastatur, sondern auch per Maus steuerbar, sondern auch einfacher mit den Pfeiltasten und Hotkeys.

Dann wurde Windows auf DOS (2.0, 3.0, 3.1, 3.11) aufgebaut, wobei ein Symbol für DOS-Box in Windows als Name für die Befehlsoberfläche in Windows wieder erschien.

Aber in Windows-NT und Windows-95 oder -98 wurde MS-DOS aufgegeben, aber es gab noch einen Befehlsinterpreter cmd.exe(cmd32.exe) mit derselben oder nahezu derselben Syntax und denselben Schlüsselwörtern. Dies war jedoch ein Programm, das in Windows ausgeführt wurde, wie andere textartige Befehlsinterpreter wie BASIC, irb (Ruby), scala-repl, psql (Postgresql), sqlplus (Orakel), bc, R, Rhino usw. und so weiter, läuft auf mehreren Plattformen.

Das Aufrufen dieses MS-DOS-Stils ist irreführend, da DOS oder MS-DOS nicht die ersten sind, die darauf gekommen sind. Es ist viel älter.

Sogar unter Windows war es nicht beschränkt, DOS-Befehle auszuführen - eine übliche Praxis beim Schreiben von Stapeldateien bestand darin, einige Parameter anzugeben, bevor ein Windows-Programm gestartet wurde. Zum Beispiel CLASSPATH, JAVA_HOME, Java-Parameter wie -Xmx und so weiter für ein Java-Programm.

Viele Leute denken, Befehlszeilenschnittstellen seien ein Relikt früherer Zeiten - sie kennen die Leistung der Verarbeitung von Tausenden von Dateien mit wenigen Tastendrücken nicht. Sie wissen auch nichts über wsh und monad. Für Profis ist ein Befehlsinterpreter unter Windows fast so nützlich wie unter Unix oder Linux. Es ist nicht so bekannt, aber für viele Administratoren von wesentlicher Bedeutung.

Es gibt sogar einen Port der Gnu-Toolchain, mit einer sh.exe und sed, awk, bc, tail, rev, cat und all dem als native Win32-Apps.

Vielleicht können Sie alte DOS-Programme unter cmd.exe ausführen, aber Sie können nicht Windows - Programme im DOS - Modus ausgeführt werden , so bleiben die Leute nicht sagen, dass cmd.exe ist DOS - es ist nicht. Und es ist nicht DOS-artig . Was du meinst, ist ein interactive command-line program, ein command-line interface.

  • DOS-Eingabeaufforderung
  • DOS-Batchdateien
  • DOS-ähnliche Befehle
  • DOS-Konsole
  • DOS-Anwendungen

ist fast immer eine irreführende Terminologie . Es mag für einen Amateur geeignet sein, aber wenn Sie möchten, dass Ihr Publikum versteht, wovon Sie sprechen, sollten Sie sich fragen: Ist es auf ein spezielles Betriebssystem, auf DOS beschränkt? Wird der CLI-Stil am besten als "DOS-Stil" bezeichnet? Ist das historisch korrekt? Kennt Ihr Publikum DOS überhaupt? Ist es hilfreich für das Verständnis? Laufen diese Programme wirklich unter DOS?

Sie brauchen den richtigen Ausdruck, scharf wie das Messer eines Chirurgen, um komplizierte Dinge zu erklären. Falsche Ausdrücke provozieren falsche Eindrücke im Gehirn Ihres Publikums. Schlampige Ausdrücke sind schlimmer als nichts. Vermeide sie. Verwenden Sie CLIdiese Option, wenn die Befehlszeilenschnittstelle für die Eingabe zu lang ist.

Korrigieren Sie irreführende Tags auf SU, SE und anderen Seiten.

Benutzer unbekannt
quelle
Gut gesagt. Es gibt viele schlechte Begriffe.
Milind R
In Win95 und Win98 gab es keine cmd.exe.
Anixx
2

In der Windows NT-Familie (NT, 2000, XP, 2003, Vista, 2008, 7) ist es DOS-unabhängig. Es gibt nur DOS-Emulatoren für die Abwärtskompatibilität.

Es gibt jedoch noch einige Einschränkungen, die sich aus der Kompatibilität mit DOS in frühen NT-Tagen ergeben. Beispielsweise können Sie keine Datei oder kein Verzeichnis mit dem Namen "CON" oder "PRN" erstellen, da dies reservierte Namen für Geräte unter DOS sind.

Michał Šrajer
quelle
1

Eigentlich benutzt Windows jetzt kein DOS mehr. Eingabeaufforderung zu DOS (oder Cmd) wird über Windows XP, Vista oder Seven emuliert. Windows startet von seinen eigenen Ressourcen.

Diogo
quelle
9
-1: Falsch. Ist es nicht to DOS (or cmd). Es gibt einen Befehlsinterpreter, cmd.exe, aber das ist nicht DOS. DOS hatte auch einen Befehlsinterpreter, command.com, der in Syntax, Schlüsselwörtern und Verwendung sehr ähnlich ist, aber die Befehlsschnittstelle ist nur ein Teil von DOS; es ist nicht DOS.
Benutzer unbekannt
Ja Der consoleTyp im PE-Header ist Teil des Win32 / Win64-Subsystems. Es ist überhaupt nicht 16-Bit.
user2284570