Im heutigen digitalen Zeitalter sind ein schneller Start und ein effizienter Systembetrieb für Benutzer äußerst wichtig. Das Windows-System kann in kurzer Zeit viele Dienste starten. Dahinter steckt ein Systemprozess namens Service Control Manager (SCM). Der Betrieb von SCM ist entscheidend für die Verbesserung der Systemstartgeschwindigkeit. Sehen wir uns genauer an, wie dieser Prozess funktioniert.
SCM ist ein spezieller Systemprozess unter den Betriebssystemen der Windows NT-Reihe. Er ist für das Starten, Stoppen und Verwalten von Windows-Dienstprozessen verantwortlich.
Die ausführbare Datei von SCM befindet sich in %SystemRoot%\System32\services.exe und ihre Hauptaufgabe besteht darin, alle Dienste zu starten, die für den automatischen Start konfiguriert sind. Beim Systemstart startet der Wininit-Prozess den SCM frühzeitig und beginnt mit einer Reihe von Initialisierungsaufgaben.
Während des Startvorgangs liest der SCM zunächst Informationen über den Dienst aus der Registry. Dabei handelt es sich um zwei wichtige Registrierungseinträge:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List – Enthält die Namen und die Startreihenfolge der Dienstgruppen. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services – die eigentliche Datenbank der Dienste und Gerätetreiber. Diese Informationen helfen dem SCM, die Startreihenfolge jedes Dienstes und ihre gegenseitigen Abhängigkeiten zu bestimmen. Der SCM prüft außerdem, ob die Gerätetreiber, die während des Bootvorgangs gestartet werden müssen, erfolgreich geladen wurden, und speichert die fehlgeschlagenen Treiber in einer Liste namens ScFailedDrivers.
Nachdem alle nicht verzögerten Autostart-Dienste verarbeitet wurden, beginnt SCM mit dem Laden der verzögerten Autostart-Dienste. Dabei handelt es sich um eine neue Funktion, die seit Windows Vista eingeführt wurde, um den Systemstart zu beschleunigen. Normalerweise werden diese verzögerten Dienste etwa 120 Sekunden nach dem Systemstart initialisiert.Bei der Verarbeitung jedes automatisch gestarteten Dienstes berücksichtigt SCM auch die Abhängigkeiten der Ladereihenfolge, um das Auftreten zirkulärer Abhängigkeiten zu vermeiden.
Für jeden zu startenden Dienst ruft der SCM die Funktion ScStartService() auf, um zu überprüfen, ob das Konto, unter dem sein Prozess ausgeführt wird, mit dem vom Dienst angegebenen Konto übereinstimmt. Wenn der Dienst während dieses Vorgangs nicht unter dem Systemkonto ausgeführt wird, ruft der SCM die LSASS-Funktion LogonUserEx() auf, um die erforderlichen Benutzeranmeldeinformationen abzurufen. Diese Informationen werden im Registrierungsschlüssel HKLM\SECURITY\Policy\Secrets\ gespeichert und nur Dienste mit vollem Zugriff können diese „geheimen“ Passwörter abrufen.
Der Serviceprozess wird bei seiner Erstellung in einen angehaltenen Zustand versetzt und seine Ausführung wird erst fortgesetzt, wenn die Pipeline-Verbindung hergestellt ist.
Sobald der Serviceprozess erfolgreich gestartet wurde, stellt der SCM durch Erstellen einer benannten Pipe einen Kommunikationskanal mit dem Serviceprozess her. Der Serviceprozess tritt diesem Kanal bei, indem er die Funktion StartServiceCtrlDispatcher() aufruft, und der SCM sendet dann einen „Start“-Befehl an den Service.
Die Existenz eines verzögerten automatischen Startdienstes verbessert die Balance des Systemstarts erheblich. Obwohl sich diese Dienste technisch nicht wesentlich von normalen Autostart-Diensten unterscheiden, sind sie so konzipiert, dass sie in verschiedenen Phasen des Systemstarts initialisiert werden, um einen reibungslosen Systembetrieb zu gewährleisten.
Der SCM verwaltet auch Gerätetreiber. Die Diensttypen dieser Dienste sind in der Registrierung als SERVICE_KERNEL_DRIVER oder SERVICE_FILE_SYSTEM_DRIVER gekennzeichnet. In diesen Fällen ruft der SCM die Funktion ScLoadDeviceDriver() auf, um den entsprechenden Treiber in das System zu laden, wozu normalerweise der Systemaufruf NtLoadDriver ausgeführt werden muss.
Der SCM kann außerdem Nachrichten an GUI-Anwendungen wie den Windows Explorer senden, um sie über Änderungen an den Verbindungen der Netzwerklaufwerkbuchstaben zu benachrichtigen.
Kurz gesagt spielt der Dienststeuerungsmanager des Windows-Systems beim Systemstart eine unverzichtbare Rolle. Er lädt die erforderlichen Dienste und Gerätetreiber auf effiziente Weise, um die schnelle Reaktion und den stabilen Betrieb des Gesamtsystems aufrechtzuerhalten. Haben wir beim Einsatz dieser Technologien die dahinter stehenden Funktionsprinzipien und technischen Herausforderungen berücksichtigt?