自動啟動服務的奧秘:Windows系統是如何加速啟動的?

在當今的數位時代,快速啟動和高效率的系統運作對於使用者來說至為重要。Windows系統能夠在短時間內啟動眾多服務,這背後隱藏著一個名為服務控制管理器(Service Control Manager,簡稱SCM)的系統過程。SCM的運作對於提升系統啟動速度至關重要,讓我們來深入探索這一過程是如何進行的。

SCM 是 Windows NT 系列操作系統下的一個特殊系統過程,它負責啟動、停止及管理 Windows 服務過程。

SCM的可執行檔位於 %SystemRoot%\System32\services.exe,它的主要任務是啟動所有被配置為自動啟動的服務。當系統啟動時,Wininit過程會早早啟動SCM,開始進行一系列的初始化工作。

在啟動過程中,SCM會首先從註冊表中讀取有關服務的信息。這涉及到兩個關鍵的註冊表項:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List - 包含服務組的名稱和啟動順序。
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - 實際的服務和設備驅動程序的數據庫。

這些信息幫助SCM確定各個服務的啟動順序以及相互依賴的關係。SCM還會檢查在啟動過程中必須啟動的設備驅動是否成功加載,並將失敗的驅動存儲於一個名為ScFailedDrivers的列表中。

在處理每一個自動啟動的服務時,SCM會同時考慮負載順序的依賴性,避免循環依賴的發生。

在所有非延遲自動啟動服務處理完成後,SCM將開始加載延遲自動啟動的服務,這是自Windows Vista以來為了加快系統啟動速度所引入的一項新功能。通常情況下,這些延遲服務會在系統啟動後約120秒進行初始化。

服務的驗證與啟動

對於每一個要啟動的服務,SCM調用ScStartService()函數來驗證其運行進程的帳戶與服務指定的相符。在這個過程中,若服務不在系統賬戶下運行,則SCM會調用LSASS函數LogonUserEx()來獲取必需的用戶登錄資訊。這些資訊存儲於HKLM\SECURITY\Policy\Secrets\註冊表項中,只有全權訪問的服務才能獲得這些“秘密”密碼。

服務過程是在創建時被置於暫停狀態,只有當管道連接建立後其執行才會恢復。

一旦服務的過程成功啟動,SCM會通過創建命名管道來建立與服務過程的通信通道。服務過程透過調用StartServiceCtrlDispatcher()函數加入此管道,而SCM隨後會向此服務發送“啟動”命令。

獨特的延遲自動啟動服務

延遲自動啟動服務的存在大大改善了系統啟動的平衡性。雖然這些服務在技術上與正常的自動啟動服務沒有太大區別,但它們被設計在系統啟動的不同階段進行初始化,以確保系統運行的平穩性。

設備驅動的啟動流程

SCM同時管理設備驅動,這類服務的類型在註冊表中標記為SERVICE_KERNEL_DRIVERSERVICE_FILE_SYSTEM_DRIVER。在這些情況下,SCM會調用ScLoadDeviceDriver()函數將相應的驅動程序加載到系統中,這通常需要引發NtLoadDriver系統調用。

SCM還能夠向GUI應用程序如Windows資源管理器發送消息,通知其有關網絡驅動字母連接的變更。

Windows系統的服務控制管理器在系統啟動過程中扮演著不可或缺的角色,它以高效的方式加載必要的服務及設備驅動,維持整體系統的快速響應和穩定運行。我們在使用這些技術時,是否有考慮到背後隱藏的運作原理和技術挑戰呢?

Trending Knowledge

藍屏之謎:終止services.exe會發生什麼驚人變化?
在現代的Windows作業系統中,Service Control Manager (SCM) 或 services.exe則是系統運行的核心組件之一。此過程負責啟動、停止及與各種Windows服務進行互動。透過這個過程,系統能夠管理所有安裝的服務並確保在開機時它們按預設順序正確啟動。 <blockquote> 若
Windows的隱秘守護者:服務控制管理器如何在背後默默運作?
當您啟動Windows系統時,許多服務在背後默默運行,它們是操作系統穩定的重要基石。這些服務的啟動和管理大多是由服務控制管理器(Service Control Manager,簡稱SCM)負責的。SCM是一個特殊的系統過程,位於Windows NT系列操作系統之下,負責啟動、停止及與Windows服務過程互動。 <blockquote> SCM的主要功能始於其主函數Svc

Responses