Zum Inhalt springen

Windows 3.x

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Microsoft Windows 3.x)
Windows 3.x
Entwickler Microsoft
Lizenz(en) Microsoft EULA (Closed Source)
Erstveröff. 22. Mai 1990
Akt. Version 3.0 bis 3.2
Kernel PC-kompatibles DOS
Windows-Kernel
Abstammung Windows 1.02.11
↳ Windows 3.x
Chronik Windows 3.0 (1990)
Windows 3.00a (1990)
Windows 3.0 mit Multimedia Extensions 1.0 (1991)
Windows für Pen Computing 1.0 (1992)
Windows 3.1 (1992)
Windows für Workgroups 3.1 (1992)
Windows für Workgroups 3.11 (1993)
Windows 3.11 (1994)
Windows 3.2 (1994)
Sonstiges Entwicklung eingestellt
www.microsoft.com
Microsoft-Windows Version 3.0 Installationsdisketten mit Hardware-Kompatibilitätsliste

Unter der Bezeichnung Windows 3.x werden die Vorgänger der späteren Windows-Betriebssysteme des Softwareunternehmens Microsoft für die 16-Bit- und 32-Bit-x86-Architektur in den 3.x-Versionen zusammengefasst.[1] Windows war bis Version 3.x ein grafischer Aufsatz für ein PC-kompatibles DOS wie MS-DOS.

Die bekanntesten Windows-3.x-Versionen sind:

Es gab noch weitere Versionen, die jedoch keine ähnlich große Verbreitung fanden. Auf eingebetteten Systemen wie Kassensystemen oder Ticketautomaten kam Windows 3.x noch fast 20 Jahre nach seiner Markteinführung zum Einsatz, Lizenzen dafür verkaufte Microsoft noch bis Ende Oktober 2008.[1]

Windows 3.x ermöglichte den Betrieb von mehreren Windows-Anwendungen per kooperativem Multitasking in einer grafischen Oberfläche und setzte noch ein laufendes MS-DOS (oder kompatibel, also auch z. B. PC DOS oder DR DOS) voraus, auf dem es lief. In diesem Bezug war es nicht anders als die älteren Windows-Versionen bis Windows 2.x. Durch die Verwendung des Protected Mode für die Betriebsmodi Standard Mode und Enhanced Mode war Windows bereits mehr als ein grafischer Aufsatz für das Betriebssystem MS-DOS, wenn es auf einem Prozessor lief, der den Protected Mode ermöglichte. Ein großer Unterschied von DOS- zu Windows-Anwendungen ist, dass Windows-Anwendungen geräteunabhängig sind, da die Windows-API für diese als Abstraktionsschicht dient und alle Hardwarezugriffe über den Windowskernel und dessen Treiber laufen. Dies ermöglicht auch die Verwendung von virtuellem Speicher (nur Enhanced Mode), ohne dass die Windows-Anwendung extra umgeschrieben werden muss, da aus Sicht der Windows-Anwendung kein Unterschied zwischen diesem und dem normalen Speicher besteht. Alle Kernel von Windows 3.x sind nur in 16 Bit, das gilt auch für den 386er Kernel, der 32-Bit-Windows-Anwendungen im Enhanced Mode ausführen kann. 32-Bit-Kernel gab es in Windows erst ab Windows NT und Windows 95.

Windows 3.x verwendet selbst keinen Expanded Memory (EMS) mehr, es können aber DOS-Anwendungen per Bank Switching Expanded Memory zur Verfügung gestellt werden. Im Standard Mode ist dies nur möglich, wenn der EMS Speicher von einer Speichererweiterungskarte (memory expander) kommt. Als EMS-Speicher reservierter normaler Speicher oberhalb der 1-MiB-Grenze kann dafür nicht verwendet werden. Dies gilt für alle Betriebsmodi.[2] Mehr dazu, siehe weiter unten.

Mit der Windows-3.x-Reihe begann der Übergang von reinen 16-Bit-Real-Mode-Windows-Programmen zu 16-Bit- und 32-Bit-Protected-Mode-Windows-Programmen. Dazu gab es ab Windows 3.0 drei verschiedene Betriebsmodi, die abhängig von der CPU beim Start von Windows automatisch den entsprechenden Windows Kernel aufriefen.[3]

Die Win16-Architektur von Windows 3.x verwendet sowohl im Real Mode als auch im Standard Mode, sowie der Standard Mode Instanz im erweiterten Modus, segmentierten Speicher, weshalb es Segmentgrößen von 64 KiB gibt. Lediglich für Win32s-Anwendungen, die einen 386er erfordern, ist das Speichermodell flach. Um die Ein- und Ausgabe-Lasten durch den Wechsel und das Laden von anderen Segmenten gering zu halten, wurde Segment-Tuning betrieben, was bedeutet, dass Funktionen die miteinander zusammenhängen darauf optimiert wurden, in diesem einen Segment vorzukommen.[4]

Für die Reservierung von zusammenhängendendem Speicher größer als 64 KiB wurde unter 16 Bit Windows 3.x für 16 Bit Windows Programme im Real Mode auf die Segmentadresse der Wert 0x1000 hinzuaddiert und im Standard Mode der Wert 8 auf den Selector. Hierfür stand die Variable __AHINCR zur Verfügung.[5]

Dieser Modus steht nur unter Windows 3.0 zur Verfügung und ist für den 8086-Prozessor gedacht. Alle Windows-Programme arbeiten in diesem Modus im Real Mode und sind daher auf 16-Bit-Code und den Adressbereich von 1 MiB begrenzt. Auf späteren CPU-Generationen kann dieser Betriebsmodus durch das Starten von Windows 3.0 mit dem Aufruf win /r erzwungen werden. DOS-Anwendungen können im Real Mode ausschließlich nur im Vollbildmodus ausgeführt werden.

Da der Real Mode nur in Windows 3.0 zur Verfügung stand und aufgrund des knappen Speichers im konventionellen Speicherbereich nur wenige 16-Bit-Windows-Real-Mode-Programme entwickelt wurden, spielte er im weiteren Verlauf praktisch keine Rolle mehr.

Im Standard Mode läuft Windows im Protected Mode des Prozessors, was es Windows-Programmen ermöglicht, über die vom XMS-Treiber (z. B. HIMEM.SYS) verwaltete Extended Memory Specification (XMS) mehr als 1 MiB RAM zu adressieren.[6] Für den Standard Mode ist ein 80286-Prozessor oder besser erforderlich. Wie beim Real Mode können im Standard Mode nur 16-Bit-Windows-Programme ausgeführt werden. Im Standard Mode ist die Verwendung von LIM-EMS-Erweiterungsspeicher aus Extended Memory (XMS), wie für DOS-Anwendungen z. B. per EMM386.EXE, nicht möglich, es können aber EMS-Speichererweiterungskarten verwendet werden, die EMS-Speicher für DOS-Anwendungen zur Verfügung stellen können. Diese können im Standard Mode nur im Vollbildmodus ausgeführt werden, da das „DOS-Fenster“ den Virtual-8086-Modus erfordert.

Ab Windows for Workgroups ist dieser Modus nicht mehr verfügbar. Auf späteren x86-Prozessor-Generationen kann dieser Betriebsmodus durch das Starten von Windows mit dem Aufruf win /s erzwungen werden.

Erweiterter Modus (Enhanced Mode)

[Bearbeiten | Quelltext bearbeiten]

Der Erweiterter Modus (englisch Enhanced Mode) ist eine Erweiterung des Standard Mode. Für den Enhanced Mode ist ein 386er Prozessor die Mindestvoraussetzung. In diesem Modus ist die Ausführung von sowohl 16-Bit- als auch erstmals 32-Bit-Windows-Programmen möglich. Für 32-Bit-Windows-Anwendungen muss die Win32s-API nachinstalliert werden. Im Enhanced Mode kann zusätzlich zum Extended Memory (XMS) auch Speicherplatz auf der Festplatte als virtueller Speicher, einer sogenannten Swap-Datei, verwendet werden. Dies ist nur im Enhanced Mode möglich.

Im Enhanced Mode läuft eine einzige Instanz des Standard Mode von Windows in einer virtualisierten Umgebung der Virtual-8086-Mode-Einheit der CPU, die ab dem 80386 verfügbar ist. Darin werden alle Win16 und Win32s Anwendungen ausgeführt.[7][8]

Für die DOS-Anwendungen fungiert der Kernel als DPMI-Host, womit mehrere DOS-Anwendungen unter Verwendung des Virtual 8086 Mode des 80386 Prozessors in ihrer eigenen VM-Instanz parallel per präemptivem Multitasking ablaufen können. Wenn die DOS-Anwendung mit DPMI-Support programmiert wurde, kann sie auch mehr als 640 KiB konventionellen Speicher nutzen. Im Enhanced Mode können DOS-Anwendungen auch im grafischen Modus in einem Fenster ausgeführt werden, der Wechsel zum Vollbildmodus ist nicht nötig.

Im Erweiterten Modus läuft als Übergeordnete Instanz der Hypervisor, der alle diese virtuellen Maschinen, also die eine Standard Mode VM-Instanz für die Win16/32s Anwendungen, als auch alle anderen VM-Instanzen für die DOS-Anwendungen, verwaltet.[9] Im Enhanced Mode sind VxD 32-Bit-Windows-Gerätetreiber möglich, obwohl Windows 3.x auch weiterhin die 16-Bit-Treiber von DOS verwenden kann.

Funktionsmatrix

[Bearbeiten | Quelltext bearbeiten]
Real Mode Standard mode Enhanced Mode
Windows-Kernel
8086-Kernel KERNEL.EXE Ja Nein Nein
286-Kernel KRNL286.EXE Nein Ja Nein
386-Kernel KRNL386.EXE Nein Ja 1 Ja
Unterstützte Prozessoren
8086/8088 und 80186 Ja Nein Nein
80286 Ja Ja Nein
80386 oder besser Ja 8 Ja 8 Ja 9
Versionen
Windows 3.0 Ja Ja Ja
Windows 3.1 Nein Ja Ja
Windows 3.11 Nein Ja Ja
Windows 3.2 Nein Ja Ja
Windows für Workgroups 3.1 Nein Ja Ja
Windows für Workgroups 3.11 Nein Nein Ja
Funktionen
Windows läuft im Protected Mode Nein Ja Ja
Virtueller Speicher mit „Swap“-Auslagerungsdatei 2 Nein Nein Ja
Multitasking präemptiv zwischen DOS-Anwendungen Nein Nein Ja
kooperativ zwischen Windows-Anwendungen 3 Ja Ja Ja
kompatibel mit Windows-1.x- und 2.x-Programmen Ja Nein Nein
VCPI-fähigen DOS-Programmen ? 4 Nein Nein
32-Bit-Windows-Anwendungen via Win32s 5 Nein Nein Ja
DPMI-Unterstützung für DOS-Programme Nein Ja Ja
DOS-Umgebungen nur eine gleichzeitig Ja Ja Nein
mehrere gleichzeitig Nein Nein Ja
DOS-Anwendungen im Fenster Nein Nein Ja
Speicher für DOS-Anwendungen Expanded Memory (EMS) per EMS-Speicherkarte Ja Ja Ja
Expanded Memory (EMS) im Extended Memory (XMS) Ja 6 Nein 7 Ja
Extended Memory (XMS) per DPMI Nein ? Ja
VxD 32-Bit-Windows-Gerätetreiber Nein Nein Ja
1) 
Windows muss dazu via win /s im Standard Mode gestartet werden.
2) 
Vom Virtuellen Speicher können auch DOS-Programme Gebrauch machen, wenn sie Extended Memory (XMS) und DPMI unterstützen.
3) 
Die Ursache, warum Windows 3.x und Win16-Programme allgemein nur kooperatives Multitasking verwenden, liegt darin begründet, dass der 8086 weder über eine Memory Protection Unit (MPU), noch über eine Memory Management Unit (MMU) verfügt. Mindestens eines von beidem ist für präemptives Multitasking aber erforderlich, wenn es performant bleiben soll.
4) 
Windows nutzt im Real Mode selbst nur Konventionellen Speicher. Ein VCPI-DOS-Treiber dürfte daher nicht stören, es ist allerdings mindestens ein 80386-Prozessor erforderlich.
5) 
Dazu muss die Win32s-Funktionsbibliothek nachträglich installiert werden.
6) 
Nur mit Unterstützung durch den Prozessor, daher ab 80286.
7) 
Im Standard Mode wird das von Windows nicht unterstützt, da dem 80286 der Virtual 8086 Mode fehlt.[10]
8) 
Obwohl man auf einem 386er Windows auch mit dem Parameter /R im Real Mode und mit dem Parameter /S im Standard Mode starten kann, wird auf einem 386er und später immer der 386 Kernel 386KRNL.EXE verwendet.[11]
9) 
Bei weniger oder gleich 2 MiB Arbeitsspeicher wird Windows trotz vorhandener 32 Bit CPU immer im Standard Modus gestartet. Falls virtueller Arbeitsspeicher definiert wurde, kann der Erweiterte Modus allerdings mit dem Parameter /3 beim Start erzwungen werden. Ist kein virtueller Arbeitsspeicher definiert, dann führt die Verwendung dieses Parameters bei zu wenig Ram zu der Fehlermeldung: „KERNEL: Heap-Initialisierung nicht möglich“ und der Startvorgang bricht ab.

Obwohl TCP/IP und damit das World Wide Web (ein Teil des Internets) unter Windows nicht zur Verfügung standen, gab es für das zu Beginn der 1990er Jahre aufstrebende weltweite Netz bereits Software von Drittanbietern, die das Protokoll für Windows 3.0 und 3.1 nachrüsteten. Mit Winsock (kurz für „Windows Sockets“) wurde ab 1991 eine dazu notwendige Schnittstelle gemeinsam von unterschiedlichen Firmen entwickelt,[12] auf deren Grundlage Programme wie Webbrowser auch unter Windows 3.x TCP/IP nutzen können.[13] So stellten viele Internetdienstanbieter (ISP, kurz für englisch Internet Service Provider) ihren Kunden die für das Internet nötigen Programme bereit, darunter neben einem damals nicht kostenlosen Browser auch die Winsock-TCP/IP-Software für Windows.[14] Von Microsoft gab es einen unter dem Codenamen „Wolverine“ entwickelten 32-Bit TCP/IP-Stack erst 1994, der nur auf Windows für Workgroups 3.11 funktioniert und Win32s erfordert, und wie letzteres nachinstalliert werden muss.[13] Erst in Windows 95 integrierte Microsoft TCP/IP als fixen Bestandteil des Betriebssystems.[15]

Mit Windows 3.0 und 3.1 gelang Microsoft der Durchbruch auf dem Markt für grafische PC-Betriebssysteme.[16][17] Die eigentliche Bedeutung steckte jedoch in der stabilen Programmierschnittstelle (englisch Application Programming Interface, kurz API), die in ihrer 16-Bit-Ausprägung auch Win16 genannt wurde. 16-Bit-Windows-Programme aus Windows 2.0 funktionierten dabei weiterhin, jedoch nur im Real Mode.

Windows 3.x bereitete den Weg hin zu Windows 9x, das als eigenständiges Betriebssystem den MS-DOS-Unterbau in das Betriebssystem integrierte und die 32-Bit-Funktionen sowohl im 32-Bit-API Win32 als auch bei Kernkomponenten wie dem Speichermanager und Multitasking erweiterte.

Beide Generationen, also Windows 3.x als auch Windows 9x (welches als Windows 4.x entwickelt wurde), waren in der Retrospektive Lückenfüller für das neu entwickelte Windows NT, das ein vollständiges 32-Bit-Betriebssystem war – auf der damaligen Hardware jedoch zu ressourcenhungrig und zu teuer. Erst mit Windows XP gelang Microsoft der vollständige Umstieg auf die mit Windows NT eingeführte neue Technik.

Windows 3.x/9x und Windows NT haben ein ähnliches und in großen Teilen identisches API. Unter Windows 3.x konnte eine abgespeckte Variante der Win32-API nachinstalliert werden, Win32s, während Win16-Applikationen auch unter Windows-NT-Versionen weiterhin lauffähig waren. Erst in 64-Bit-x86-Versionen von Windows, also ab Windows XP x64 Edition (2005) bzw. Windows Vista x64 (2007), steht das Win16-API nicht mehr zur Verfügung.

  • Charles Petzold: Programming Windows 3.0 Microsoft Press, 1990, ISBN 1-55615-264-7
  • Charles Petzold: Programming Windows 3.1, 3rd Edition Microsoft Press, 1992, ISBN 1-55615-395-3
  • Matt Pietrek: Windows Internals: The Implementation of the Windows Operating Environment Addison-Wesley Publishing Company, 1993, ISBN 0-201-62217-3
  • Andrew Schulman, David Maxey, Matt Pietrek: Undocumented Windows: A Programmer's Guide to Reserved Microsoft Windows Api Functions Addison-Wesley Publishing Company, 1992, ISBN 0-201-60834-0

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. a b Manfred Bremmer: Windows 3.x – Microsoft stampft bestes Windows-Release ein. In: Computerwoche. IDG, 6. November 2008, abgerufen am 22. Mai 2018.
  2. Microsoft Product Support Services Application Note (Text File WW0335.txt) WW0335: Memory Management with Windows
  3. Raymond Chen: For the Nitpickers: Enhanced-mode Windows 3.0 didn’t exactly run a copy of standard-mode Windows inside the virtual machine. In: The Old New Thing (Blog). 8. Februar 2013, abgerufen am 23. November 2021 (englisch).
  4. https://devblogs.microsoft.com/oldnewthing/20131008-00/?p=3003 I wrote FAT on an airplane, for heaven’s sake, Raymond Chen
  5. https://devblogs.microsoft.com/oldnewthing/20171113-00/?p=97386 On memory allocations larger than 64KB on 16-bit Windows von Raymond Chen (englisch)
  6. Microsoft Product Support Services Application Note (Text File WW0335.txt) WW0335: Memory Management with Windows
  7. https://devblogs.microsoft.com/oldnewthing/20100517-00/?p=14013 If Windows 3.11 required a 32-bit processor, why was it called a 16-bit operating system?
  8. https://devblogs.microsoft.com/oldnewthing/20130208-00/?p=5303 For the Nitpickers: Enhanced-mode Windows 3.0 didn’t exactly run a copy of standard-mode Windows inside the virtual machine ab dem 7. Absatz
  9. https://devblogs.microsoft.com/oldnewthing/20100517-00/?p=14013 If Windows 3.11 required a 32-bit processor, why was it called a 16-bit operating system?
  10. Microsoft Dokument WW0335.TXT Abschnitt „Standard Mode and Expanded Memory“
  11. https://devblogs.microsoft.com/oldnewthing/20130208-00/?p=5303 For the Nitpickers: Enhanced-mode Windows 3.0 didn’t exactly run a copy of standard-mode Windows inside the virtual machine 9. Absatz
  12. Andrew Mulholland, Teijo Hakala: Programming Multiplayer Games. Wordware Publishing, Inc., 2004, ISBN 1-55622-076-6, 4 Introduction to TCP/IP, S. 113, History of WinSock (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “The Windows sockets API was born October 10, 1991, at Interop ’91 in San Jose, California. A committee was established to design a specification for a sockets library for the Windows operating system from a proposal by Martin Hall of JSB Corporation. There have been over 40 companies involved in the design of WinSock. WinSock is not the property of Microsoft, although it is an important part of Windows nowadays. It was developed by independent sources who were interested in taking part of this project. On January 20, 1993, the specification for WinSock 1.1 was published. This version had support for TCP/IP only.”
  13. a b Christopher Tse: TCP/IP vs. Windows for Workgroup Wolverine. In: The Moment: Columbia’s Science and Engineering Newspaper, Back Issue 1 March 1995. 1. März 1995, abgerufen am 27. September 2025 (englisch): „Peter Tattam’s Trumpet Winsock is the current standard for TCP/IP management under the Microsoft Windows environment. Most of the Winsock.dll (Windows Socket Driver) Internet applications are developed and tested with this program. The current version of Trumpet Winsock 2.0 Release B is very stable and reliable. There was not any real competition for Trumpet Winsock until Microsoft unveiled the final release of Wolverine, a 32 bit TCP/IP stack for Windows for Workgroup (WFW) 3.11. The seamless integration between Wolverine and Windows quickly establishes a wide install base for the software giant’s new entry to the Internet software market. As of press time, both Trumpet Winsock and Wolverine are free and available for download from almost every network-related FTP site. Trumpet Winsock has the advantage of being a ‘well-known’ TCP manager.“
  14. Detlef Borchers: Wie vor 30 Jahren das World Wide Web entstand. In: Heise online. 8. Dezember 2020. Abgerufen am 26. September 2025.; Zitat: „Der Trend wurde noch ausgeprägter, als O’Reilly gemeinsam mit dem Unternehmen Spry begann, sein Angebot ‚Internet in a Box‘ zu verkaufen. Diese Ibox für Windows enthielt zum stattlichen Preis von gut 100 US-Dollar auf fünf 3,5-Zoll-Disketten eine Version des Mosaic-Browsers, einen TCP/IP-Stack für Windows, den man damals benötigte, um Windows 3.1 ans Internet zu bekommen, sowie ein Nutzerkonto für InterServ, dem Provider-Angebot von Spry.“.
  15. Kevin R. Fall, W. Richard Stevens: TCP/IP Illustrated, Volume 1: The Protocols. 2. Auflage. Pearson Education, Inc., 2012, ISBN 978-0-321-33631-6, 1.7 Implementations and Software Distributions, S. 25, Figure 1-7 (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “Winsock (1992): TCP/IP from Third Parties → Windows for Workgroups 3.11 (1994): Initial Version of TCP/IP Supplied by Microsoft (Wolverine) as Add-on → Windows 95 (1995): Initial Integrated Version of TCP/IP Supplied by Microsoft”
  16. Detlef Borchers: 30 Jahre Windows: Der lange Weg zum Durchbruch. In: Heise online. 20. November 2015. Abgerufen am 30. Juli 2022.
  17. Peter Stelzel-Morawietz: 35 Jahre Windows: von Version 1.0 zu 10. In: PC-Welt. 24. November 2020, abgerufen am 30. Juli 2022.