Ermöglichen von schnellen Starts in Windows 8

Im Zusammenhang mit grundlegender Funktionalität sollten wir zuerst über die Startzeit sprechen, denn über kein anderes Feature wird soviel diskutiert und geurteilt. Windows 8 wurde so entworfen, dass keine häufigen Starts mehr erforderlich sind, und wir arbeiten ständig daran, die zum Patchen des ausgeführten Codes erforderlichen Neustarts weiter zu verringern. Wenn der Computer jedoch gestartet werden muss, sollte dies so schnell wie möglich erfolgen. Dies ist ein wichtiges Thema, mit dem sich zahlreiche Mitarbeiter schwerpunktmäßig beschäftigen. Mit Windows 8 haben wir in diesem Bereich die größten Fortschritte seit langem gemacht, und dies ist vor allem der Zusammenarbeit über das gesamte Ökosystem hinweg zu verdanken. Der Autor dieses ersten Beitrags, dem eine Reihe von Beiträgen über grundlegende Funktionalität folgen werden, ist Gabe Aul, Leiter des Programmmanagements für Windows.
– Steven

Wenige Vorgänge unter Windows werden so genau untersucht, bewertet und analysiert wie der Startvorgang. Dies ist verständlich, da die gesamte Systemleistung häufig anhand der Startzeit beurteilt wird, und wir alle wissen, wie wichtig den Kunden ein schneller Systemstart ist. Die Daten zeigen, dass 57 % der Desktop-PC-Benutzer und 45 % der Laptopbenutzer ihre Geräte eher herunterfahren als in den Standbymodus versetzen. Insgesamt fahren also die Hälfte aller Benutzer ihre Geräte herunter, anstatt sie in den Standbymodus zu versetzen.

Kreisdiagramm der Betriebszustände für Windows 7-Laptops: Standbymodus 45 %, Ruhezustand 11 % und Herunterfahren (einschließlich Neustart) 45 %
Kreisdiagramm der Betriebszustände für Windows 7-Desktops: Standbymodus 42 %, Ruhezustand 1 % und Herunterfahren (einschließlich Neustart) 57 %

Die meisten Nutzer sagen, dass sie den Computer lieber herunterfahren, sodass er vollständig "aus" ist und keinen Strom verbraucht – um die Akkulebensdauer zu verlängern oder um Energie zu sparen. Der Ruhezustand ist in diesem Szenario ebenfalls eine gute, von vielen Benutzern geschätzte Option, da auch dort kein Strom verbraucht wird. Dieser ist jedoch eindeutig nicht für jeden optimal, da Nutzer nach dem Starten des PCs einen "reinen Tisch" erwarten und nicht möchten, dass alle Programme aus der vorherigen Sitzung weiter ausgeführt werden. Mit Standby/Fortsetzen lassen sich PCs am schnellsten ein- und ausschalten, es wird jedoch immer noch etwas Energie bzw. Akkustrom verbraucht, um die Inhalte im Arbeitsspeicher beizubehalten, selbst wenn es sich bei gut optimierten Systemen nur um sehr geringe Mengen handelt. Im Gegensatz hierzu werden Handys heute kaum noch ausgeschaltet, sondern befinden sich meistens in einer Art Standbymodus.

Die Herausforderung bestand also darin, all diese Anforderungen an moderne PCs ohne spezielle neue Hardware zu erfüllen. Unsere Ziele waren:

  • Kein Stromverbrauch im ausgeschalteten Zustand
  • Neue Sitzung nach dem Starten
  • Möglichst kurze Zeitspanne zwischen dem Drücken des Netzschalters und der Verwendung des PCs

In Windows 7 wurde der Startvorgang wesentlich verbessert, z. B. durch parallele Initialisierung der Gerätetreiber und Trigger-Start-Dienste, es war jedoch klar, dass wir kreativer und in größerem Maßstab denken mussten, um die Startzeit weiter zu verkürzen und alle Anforderungen zu erfüllen.

Unsere Lösung ist ein neuer, schnellerer Startmodus, der wie eine Mischung aus dem herkömmlichen "Kaltstart" und dem Starten aus dem Ruhezustand funktioniert.

Bevor ich jedoch die Funktionsweise genauer beschreibe, ist es als Hintergrundinformation wohl hilfreich, kurz die Vorgänge beim Herunterfahren und Starten unter Windows 7 zu erläutern.

Vorgänge beim Herunterfahren:

  1. Der Benutzer initiiert das Herunterfahren, indem er entweder im Startmenü "Herunterfahren" auswählt oder auf den Netzschalter drückt. Das Herunterfahren kann auch durch eine Anwendung initiiert werden, indem diese eine API wie z. B. ExitWindowsEx() oder InitiateShutdown() aufruft.
  2. Windows sendet Meldungen an die ausgeführten Anwendungen, sodass diese Einstellungen und Daten speichern können. Von den Anwendungen kann hierfür auch etwas zusätzliche Zeit angefordert werden.
  3. Windows beendet die Benutzersitzungen jedes angemeldeten Benutzers.
  4. Windows sendet Meldungen an die Dienste, um diese über den Beginn des Herunterfahrens zu benachrichtigen. Anschließend werden die Dienste beendet. Dienste mit Abhängigkeiten werden der Reihe nach beendet, die restlichen parallel. Wenn ein Dienst nicht reagiert, wird das Beenden erzwungen.
  5. Windows sendet Meldungen an die Geräte, die diesen signalisieren, herunterzufahren.
  6. Windows beendet die Systemsitzung (auch als "session 0" bezeichnet).
  7. Windows legt alle ausstehenden Daten auf dem Systemlaufwerk ab, um eine vollständige Speicherung zu gewährleisten.
  8. Windows sendet über die ACPI-Schnittstelle ein Signal an das System, den PC auszuschalten.

Vorgänge beim Starten:

  1. Nach dem Drücken des Netzschalters initiiert die Firmware des PCs einen Selbsttest (Power-On Self Test, POST) und lädt die Firmwareeinstellungen. Dieser Pre-Boot-Vorgang endet, sobald ein gültiges Systemlaufwerk erkannt wird.
  2. Die Firmware liest den Master Boot Record (MBR) und startet dann Bootmgr.exe. Bootmgr.exe sucht und startet das Windows-Ladeprogramm (Winload.exe) auf der Windows-Startpartition.
  3. Die erforderlichen Treiber zum Starten des Windows-Kernels werden geladen und der Kernel gestartet. Die Systemregistrierungsstruktur und zusätzliche, als BOOT_START markierte Treiber werden vom Kernel in den Arbeitsspeicher geladen.
  4. Der Kernel übergibt die Steuerung an den Sitzungs-Manager-Prozess (Smss.exe), der die Systemsitzung initialisiert sowie die Geräte und Treiber lädt und startet, die nicht mit BOOT_START markiert sind.
  5. Winlogon.exe wird gestartet, der Anmeldebildschirm wird angezeigt, der Dienststeuerungs-Manager startet Dienste, und Gruppenrichtlinienskripts werden ausgeführt (falls vorhanden). Sobald sich der Benutzer anmeldet, erstellt Windows eine Sitzung für diesen Benutzer.
  6. Explorer.exe wird gestartet, und das System erstellt den Desktop Window Manager (DWM)-Prozess, der den Desktop initialisiert und anzeigt.

Wenn Sie sich für ausführlichere Details interessieren, finden Sie diese hier: https://msdn.microsoft.com/en-us/windows/hardware/gg463386

Der wichtigste Punkt hierbei ist jedoch, dass beim herkömmlichen Herunterfahren alle Benutzersitzungen und in der Kernelsitzung alle Dienste und Geräte beendet werden, um das vollständige Herunterfahren vorzubereiten.

Der Hauptunterschied zu Windows 8 besteht in den folgenden Punkten: Die Benutzersitzungen werden wie in Windows 7 beendet, jedoch nicht die Kernelsitzung, die stattdessen in einen Ruhezustand versetzt wird. Im Vergleich zum vollständigen Ruhezustand, bei dem viele von Anwendungen verwendete Arbeitsspeicherseiten einbezogen werden müssen, sind die "session 0"-Ruhezustandsdaten viel weniger umfangreich und können daher sehr viel schneller auf die Festplatte geschrieben werden. Zur Erinnerung: Für den Ruhezustand werden im Prinzip der Systemstatus und der Inhalt des Arbeitsspeichers in einer Datei auf der Festplatte (hiberfil.sys) gespeichert, deren Inhalt anschließend beim Fortsetzen gelesen und im Arbeitsspeicher wiederhergestellt wird. Wenn wir diese Technik für den Start verwenden, verkürzt sich die Startzeit wesentlich, da das Lesen der Ruhezustandsdatei und das Neuinitialisieren der Treiber auf vielen Systemen deutlich rascher erfolgt (auf den meisten von uns getesteten Systemen 30 bis 70 % schneller).

Balkendiagramm der verkürzten Windows 8-Startzeit im Vergleich zu Windows 7-Kaltstartzeiten auf 30 verschiedenen PC-Konfigurationen. Die Windows 8-Startzeiten liegen alle zwischen 15 bis 33 Sekunden, Windows 7-Kaltstartzeiten hingegen zwischen 25 und 72 Sekunden.
Beispieltestergebnisse von Laborsystemen für Systemintegrationstests.
Klicken Sie hier, um eine größere Version dieses Diagramms anzuzeigen.

Der Start geht schneller, da das Fortsetzen einer in den Ruhezustand versetzten Sitzung weniger Aufwand erfordert als eine vollständige Systeminitialisierung. Zusätzlich wurde eine neue mehrphasige Fortsetzungsfunktion hinzugefügt, sodass die Kerne eines Multi-Core-Systems parallel verwendet und das Lesen der Ruhezustandsdatei sowie das Dekomprimieren des Inhalts aufgeteilt werden kann. Dies bedeutet auch ein schnelleres Fortsetzen nach dem Ruhezustand, falls Sie diesen bevorzugen.

Balkendiagramm mit dem relativen Zeitbedarf für die verschiedenen Startphasen. Beim Windows 7-Kaltstart benötigt der POST/Pre-Boot etwa 1/3 der Zeit, die Systeminitialisierung über die Hälfte und die Initialisierung der Benutzersitzung etwa 1/5 der Zeit. Beim Windows 8-Schnellstart benötigt der POST/Pre-Boot etwa 1/3 der Zeit, das Lesen der Ruhezustandsdatei und die Initialisierung der Benutzersitzung jeweils etwa 1/4, und die Treiberinitialisierung benötigt etwas weniger Zeit als das Lesen der Ruhezustandsdatei und die Initialisierung der Benutzersitzung.
Abbildung der verschiedenen Phasen beim Kalt- und Schnellstart.
Klicken Sie hier, um eine größere Version dieses Diagramms anzuzeigen.

Es sollte vielleicht kurz erwähnt werden, wie wir die Ruhezustandsdatei behandeln. Wenn Sie bis hierhin gelesen haben und anschließend den Befehl dir /s /ah hiberfile.sys ausführen, werden Sie feststellen, dass es sich um eine ziemlich große Datei handelt. Die Größe der Ruhezustandsdatei entspricht standardmäßig 75 % des physischen RAM. Bei der Datei handelt es sich im Grunde um reservierten Speicherplatz, an dem die Ruhezustandsdaten beim Wechsel in den Ruhezustand gespeichert werden. In der Regel wird viel weniger Speicherplatz tatsächlich genutzt; beim schnellen Starten sind dies normalerweise ca. 10 bis 15 % des physischen RAM. Das System behandelt die Ruhezustandsdatei auch ein wenig anders als andere Dateien auf dem Datenträger, beispielsweise wird die Datei vom Volumesnapshotdienst ignoriert (ermöglicht eine kleine Leistungsverbesserung). Sie können den Ruhezustand deaktivieren und diesen Speicherplatz freigeben, indem Sie an einer Eingabeaufforderung mit erhöhten Rechten powercfg /hibernate off eingeben. Beachten Sie hierbei jedoch, dass dadurch der Ruhezustand vollständig deaktiviert wird, einschließlich praktischer Funktionen wie dem schnellen Start und dem hybriden Standbymodus, der bei Desktopsystemen gleichzeitig Standby und Ruhezustand ermöglicht, sodass im Fall eines Stromausfalls das System weiterhin aus dem Ruhezustand wiederhergestellt werden kann. Sie können auch powercfg /hibernate /size ausführen und einen Wert zwischen 0 und 100 für den Prozentsatz des physischen RAM angeben, um die Größe der Ruhezustandsdatei zu definieren – aber Vorsicht! Bei einem zu kleinen kann der Wechsel in den Ruhezustand fehlschlagen. Im Allgemeinen empfehle ich, den Standardwert unverändert zu lassen, es sei denn, Sie verwenden ein System mit extrem wenig Speicherplatz.

Beim schnellen Startmodus von Windows 8 sollte zudem beachtet werden, dass trotz einer fehlenden "Plug & Play"-Enumeration aller Treiber diese dennoch in diesem Modus initialisiert werden. Diejenigen von Ihnen, die einen Kaltstart durchführen möchten, um die Treiber und Geräte neu zu initialisieren, werden sich freuen zu hören, dass dies im neuen Modus weiterhin möglich ist, auch wenn der Vorgang nicht mit dem Kaltstart identisch ist.

Der neue schnelle Startmodus bringt auf praktisch allen Systemen Vorteile – ganz gleich, ob es sich um Systeme mit herkömmlicher Festplatte oder einem Festkörperlaufwerk (Solid State Drive, SSD) handelt, bei einem SSD ist die Leistung jedoch einfach fantastisch. Davon können Sie sich im folgenden Video selbst überzeugen:

HTML5-Video wird in Ihrem Browser nicht unterstützt.

Laden Sie dieses Video herunter, und spielen Sie es in einem geeigneten Media-Player ab:
MP4 in hoher Qualität | MP4 in niedriger Qualität

Was Sie in dem Video bemerkt haben werden, ist, wie schnell der Übergang von POST zu Windows erfolgt. Bei Systemen mit Unified Extensible Firmware Interface (UEFI) ist die Pre-Boot-Dauer im Vergleich zu Systemen mit herkömmlichen BIOS in der Regel besonders kurz. Das liegt nicht daran, dass UEFI schneller ist, sondern daran, dass die Entwickler von UEFI die Chance auf einen Neuanfang zur Implementierungsoptimierung hatten, während beim BIOS auf eine veraltete Struktur aufgebaut werden muss. Die gute Nachricht lautet, dass die meisten Motherboard-Hersteller begonnen haben, UEFI zu verwenden. Bei neuen Systemen kommen Sie also immer häufiger in den Genuss eines schnellen Starts.

Selbstverständlich werden Sie Ihren Computer manchmal auch vollständig herunterfahren, beispielsweise, wenn Sie das Gehäuse öffnen, um Hardware hinzuzufügen oder zu wechseln. Die Benutzeroberfläche verfügt über eine Option, die die Rückkehr zum Verhalten von Windows 7 beim Herunterfahren bzw. zum Kaltstart ermöglicht. Da dies jedoch wohl nicht häufig der Fall sein wird, können Sie auch den neuen Schalter /full für "shutdown.exe" nutzen. Führen Sie an einer Eingabeaufforderung folgenden Befehl aus: shutdown /s /full / t 0, um das System sofort vollständig herunterzufahren. Wenn Sie auf der Benutzeroberfläche "Neu starten" auswählen, wird das System ebenfalls vollständig heruntergefahren. Anschließend erfolgt ein Kaltstart.

Der Startvorgang gehört größtenteils zu den Aufgaben unserer Kernel Platform-Gruppe, jedoch haben bei Windows 8 auch einige andere Teams ihren Beitrag zu den Änderungen am Betriebssystem geleistet, die diesen neuen Modus sowie weitere spannenden Neuerungen am Startvorgang, auf die wir bald zu sprechen kommen werden, unterstützen. Intern sind wir mit der Startleistung von Windows 8 sehr zufrieden und freuen uns darauf, dass Sie diese bald selbst erleben und uns Feedback geben können, was Sie darüber denken.

Gabe Aul