Dit artikel legt het verschil uit tussen autoexec.bat en winstart.bat binnen de architectuur van oudere Windows-versies (zoals Windows 3.1 en 95).
Het opstartproces verloopt in vijf fasen:
- MS-DOS start op.
- autoexec.bat wordt uitgevoerd voor globale initialisaties en TSR's.
- De Virtual Machine Manager (VMM) wordt geïnitialiseerd.
- winstart.bat wordt door de VMM uitgevoerd binnen de 'System VM'.
- De Windows GUI-kernel start, waardoor de grafische interface verschijnt.
Het hoofddoel van winstart.bat is het laden van TSR's die uitsluitend voor Windows-applicaties bedoeld zijn. Hierdoor blijft conventioneel geheugen vrij voor MS-DOS-programma's en worden drivers alleen geladen in de virtuele machine waar ze nodig zijn, in plaats van systeembreed.
Het weinig bekende winstart.bat batchbestand
In Windows 95 kon je een winstart.bat-bestand maken in je Windows-map. Tijdens het opstarten initialiseert de virtual machine manager (VMM) en creëert deze de zogenaamde "Systeem virtuele machine" (de "System VM"). Dit is de virtuele machine waarin alle Windows-programma's draaien. Voordat de user-mode kernel in die virtuele machine wordt gestart, voert de VMM het winstart.bat-batchbestand uit, mits dit bestaat.
Het opstartproces in stappen
Het proces verloopt als volgt:
- MS-DOS start op: De computer start op in MS-DOS en toont de opdrachtprompt. In dit stadium zijn er diverse elementen aanwezig op lage adressen, zoals de interrupt vector table en het BIOS-data-area.
- Uitvoering van autoexec.bat:
command.com voert autoexec.bat uit, wat bijvoorbeeld kan worden gebruikt om TSR's (Terminate and Stay Resident-programma's) te installeren.
- Initialisatie van Windows: Windows start op en initialiseert de virtual machine manager. Het systeem draait nu in protected mode met een virtuele machine die in v86 mode werkt. Deze virtuele machine is geïnitialiseerd met alles wat op dat moment in real mode draaide voordat de VMM het beheer overnam.¹
- Uitvoering van winstart.bat: Op dit punt voert de VMM het bestand
winstart.bat uit binnen de virtuele machine. Hier kan eventueel een extra TSR worden geïnstalleerd. De VMM neemt hierbij de verantwoordelijkheid voor het bestandssysteem over en schakelt het real-mode bestandssysteem van MS-DOS uit.
- Starten van de Windows GUI: Vervolgens wordt de user-mode kernel gestart die verantwoordelijk is voor Windows-applicaties. Deze kernel schakelt de virtuele machine over naar protected mode en start datgene wat de meeste mensen beschouwen als "Windows".
De interactie met de opdrachtprompt
Wanneer je vanuit de Windows GUI besluit een opdrachtprompt te openen, wordt er een tweede virtuele machine aangemaakt.
Het is belangrijk om op te merken dat de virtuele machine die command.com draait, een kopie is van het systeem zoals dat was op het moment dat Windows startte.² Dit betekent dat deze machine wel de TSR's bevat die via autoexec.bat zijn geladen, maar niet de TSR's die via winstart.bat zijn geladen. Als je vervolgens een TSR installeert in deze specifieke opdrachtprompt-virtuele machine, is deze alleen binnen die machine zichtbaar.
Het doel van winstart.bat
Het beoogde doel van het winstart.bat-batchbestand is om TSR's te kunnen installeren die uitsluitend gelden voor Windows-programma's.
Een voorbeeld hiervan is het installeren van netwerkdrivers ter ondersteuning van Windows-programma's. Men zou voor deze optie kunnen kiezen in plaats van een globale installatie als:
- Netwerken niet nodig zijn voor MS-DOS-programma's, waardoor conventioneel geheugen vrijblijft voor die programma's.
- De drivers niet ondersteunen om in meerdere virtuele machines tegelijk te draaien; in dat geval worden ze geladen in de System VM en worden ze opgeofferd voor de MS-DOS-programma's.
Historische context
Hoewel velen dit zien als een functie van Windows 95, is het in werkelijkheid al een functie van Windows 3.1 (en mogelijk zelfs Windows 3.0). Het staat gedocumenteerd in de Windows 3.1 Resource Kit op pagina 263.
In die documentatie wordt een tabel getoond met drie manieren om TSR's te laden en hoe deze zichtbaar zijn in de verschillende virtuele machines (waarbij "virtuele machine" in deze context verwijst naar niet-Windows virtuele machines):
| Waar TSR wordt geladen | Zichtbaar in Windows? | Zichtbaar in virtuele machines? |
| Vanuit MS-DOS | Ja | Ja, alle virtuele machines |
| Vanuit WINSTART.BAT | Ja | Nee |
| In een enkele virtuele machine | Nee | Alleen die specifieke virtuele machine |
***
¹ Denk hier eens over na: we startten een besturingssysteem op en startten vervolgens een ander besturingssysteem eromheen, zodat het oorspronkelijke besturingssysteem nu draaide in een virtuele machine die werd beheerd door het tweede besturingssysteem. Het is alsof je je huis uitloopt, de straat op loopt en halverwege het blok beseft dat je eigenlijk in een filmset loopt.
² Het is niet letterlijk een kopie van het systeem op het moment dat Windows startte. In plaats daarvan is het een kopie van de System VM, maar alleen van de delen die bestonden op het moment dat Windows startte. De werking hiervan is te complex om in een voetnoot uit te leggen.
Het weinig bekende winstart.bat batchbestand
In Windows 95 kon je een winstart.bat-bestand maken in je Windows-map. Tijdens het opstarten initialiseert de virtual machine manager (VMM) en creëert deze de zogenaamde "Systeem virtuele machine" (de "System VM"). Dit is de virtuele machine waarin alle Windows-programma's draaien. Voordat de user-mode kernel in die virtuele machine wordt gestart, voert de VMM het winstart.bat-batchbestand uit, mits dit bestaat.
Het opstartproces in stappen
Het proces verloopt als volgt:
- MS-DOS start op: De computer start op in MS-DOS en toont de opdrachtprompt. In dit stadium zijn er diverse elementen aanwezig op lage adressen, zoals de interrupt vector table en het BIOS-data-area.
- Uitvoering van autoexec.bat:
command.com voert autoexec.bat uit, wat bijvoorbeeld kan worden gebruikt om TSR's (Terminate and Stay Resident-programma's) te installeren.
- Initialisatie van Windows: Windows start op en initialiseert de virtual machine manager. Het systeem draait nu in protected mode met een virtuele machine die in v86 mode werkt. Deze virtuele machine is geïnitialiseerd met alles wat op dat moment in real mode draaide voordat de VMM het beheer overnam.¹
- Uitvoering van winstart.bat: Op dit punt voert de VMM het bestand
winstart.bat uit binnen de virtuele machine. Hier kan eventueel een extra TSR worden geïnstalleerd. De VMM neemt hierbij de verantwoordelijkheid voor het bestandssysteem over en schakelt het real-mode bestandssysteem van MS-DOS uit.
- Starten van de Windows GUI: Vervolgens wordt de user-mode kernel gestart die verantwoordelijk is voor Windows-applicaties. Deze kernel schakelt de virtuele machine over naar protected mode en start datgene wat de meeste mensen beschouwen als "Windows".
De interactie met de opdrachtprompt
Wanneer je vanuit de Windows GUI besluit een opdrachtprompt te openen, wordt er een tweede virtuele machine aangemaakt.
Het is belangrijk om op te merken dat de virtuele machine die command.com draait, een kopie is van het systeem zoals dat was op het moment dat Windows startte.² Dit betekent dat deze machine wel de TSR's bevat die via autoexec.bat zijn geladen, maar niet de TSR's die via winstart.bat zijn geladen. Als je vervolgens een TSR installeert in deze specifieke opdrachtprompt-virtuele machine, is deze alleen binnen die machine zichtbaar.
Het doel van winstart.bat
Het beoogde doel van het winstart.bat-batchbestand is om TSR's te kunnen installeren die uitsluitend gelden voor Windows-programma's.
Een voorbeeld hiervan is het installeren van netwerkdrivers ter ondersteuning van Windows-programma's. Men zou voor deze optie kunnen kiezen in plaats van een globale installatie als:
- Netwerken niet nodig zijn voor MS-DOS-programma's, waardoor conventioneel geheugen vrijblijft voor die programma's.
- De drivers niet ondersteunen om in meerdere virtuele machines tegelijk te draaien; in dat geval worden ze geladen in de System VM en worden ze opgeofferd voor de MS-DOS-programma's.
Historische context
Hoewel velen dit zien als een functie van Windows 95, is het in werkelijkheid al een functie van Windows 3.1 (en mogelijk zelfs Windows 3.0). Het staat gedocumenteerd in de Windows 3.1 Resource Kit op pagina 263.
In die documentatie wordt een tabel getoond met drie manieren om TSR's te laden en hoe deze zichtbaar zijn in de verschillende virtuele machines (waarbij "virtuele machine" in deze context verwijst naar niet-Windows virtuele machines):
| Waar TSR wordt geladen | Zichtbaar in Windows? | Zichtbaar in virtuele machines? |
| Vanuit MS-DOS | Ja | Ja, alle virtuele machines |
| Vanuit WINSTART.BAT | Ja | Nee |
| In een enkele virtuele machine | Nee | Alleen die specifieke virtuele machine |
***
¹ Denk hier eens over na: we startten een besturingssysteem op en startten vervolgens een ander besturingssysteem eromheen, zodat het oorspronkelijke besturingssysteem nu draaide in een virtuele machine die werd beheerd door het tweede besturingssysteem. Het is alsof je je huis uitloopt, de straat op loopt en halverwege het blok beseft dat je eigenlijk in een filmset loopt.
² Het is niet letterlijk een kopie van het systeem op het moment dat Windows startte. In plaats daarvan is het een kopie van de System VM, maar alleen van de delen die bestonden op het moment dat Windows startte. De werking hiervan is te complex om in een voetnoot uit te leggen.