熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

WINDOWS啟動和關機內幕

2013-11-11 21:34:15  來源: Windows系統管理 

  WINDOWS的啟動流程

  第一NTLDR的作用過程

  .首先機器POSTBIOSMBRBOOT SECTORos的引導程序 WINDOWS的引導程序是NTLDR注意這個文件其實是個可執行文件這裡機器主要做的工作是CPU從的實模式到的保護模式啟用CPU的頁機制如果磁盤是SCSI則加載Ntbootddsys來訪問磁盤否則用INT來訪問這裡假如機器沒找到Ntldr這個文件在FAT文件系統下機器顯示BOOT: Couldnt find NTLDRP而在NTFS下顯示NTLDR is missing(這個沒有具體實驗過是書上這麼說的)

  .NTLDR裝載後就先CLS屏幕首先檢查根目錄下有沒有合法的Hiberfilsys這個文件的作用是機器休眠的時候把內存中的所有信息保存到hiberfilsys這個文件中這個文件的大小始終和系統的物理內存大小一致如果希望回收這個空間請打開控制面板下的電源管理選擇休眠選項卡去掉啟用休眠這一復選項的選中標記系統會自動消除hiberfilsys文件如果有就快速啟動到上次機器休眠的狀態

  .接著處理Bootini如果有多個的啟動項那就顯示啟動菜單(如果只有一個默認的項那就是我們立即就可以看到WINDOWS的啟動狀態條了) 處理BOOTini WINDOWS自帶的一個工具Bootcfgexe可以用這個工具修改當然也可以自己用記事本打開bootini來修改bootini的一些參數會保存在注冊表HKLM\System\CurrentControlSet\Control\SystemStartOptions下關於bootini裡面的參數大家可以去查閱資料

  .下面就是NTLDR調用執行作用是檢測的一些基本設備和配置信息   信息包括CMOS裡的時間日期信息總線類型磁盤的大小類型數目輸入設備的信息並口的信息顯卡的類型這些信息收集後保存在HKLM\HARDWARE\DESCRIPTION下面接著就版本下顯示Starting Windows進程條而在xp下是顯示WINDOWS的LOGO

  .在顯示進程條的過程中機器實際上是在加載系統相應的內核和HAL文件一般是Ntoskrnlexe 和Haldll這個文件如果這個過程中發現找不到文件則會顯示Windows could not start because the following file was missing or corrupt這個信息然後讀取注冊表SYSTEM HIVE(Windows\System\Config\System)來決定需要加載的設備驅動這些設備驅動都在SERVICE_BOOT_START ()裡面

  .然後加載Ntoskrnlexe這樣NTLDR的使命就結束了

  第二 Ntoskrnlexe的作用過程這裡主要分個階段來初始化內核最後創建the Session Manager subsystem (Smss)進程

  第三 Smss的作用過程

  .創建LPC port對象為MSDOS定義符號連接例如COMLPT假如安裝有Terminal Services則創建\Sessions目錄

  運行注冊表裡HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute定義的程序一般默認的是運行Autochk

  執行HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations表鍵中的延遲刪除改名操作

  .加載HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 初始化paging files和注冊表

  創建系統環境變量這些定義在HKLM\System\CurrentControlSet\Session Manager\Environment

  加載和初始化WIN子系統的內核模塊Winksys

   創建WIN子系統服務器進程包括Csrss 創建Winlogon進程   這裡的個進程其中一個出現異常那系統都會中斷

  第四 Winlogon Csrss過程

  加載GINA模塊默認為Msgina (\Windows\System\Msginadll)

  啟動服務進程Windows\System\Servicesexe

  啟動Lsass(the local secyrity authentication subsystem)進程

  .Gina開始處理交互式登陸登陸驗證成功後Gina就運行HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\UserinitUserinitexe執行的順序為首先處理HKCU\Software\Policies\Microsoft\Windows\System\Scripts 和HKLM\Software\Policies\Microsoft\Windows\System\Scripts這裡的腳本然後處理組策略(假如有的話運行\Windows\System\Proquotaexe)最後運行HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell裡的SHELL(如果不存在就運行HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell裡的一般這裡默認的是EXPLORERexe)注意這裡也是最容易讓惡意軟件利用的地方

  .最後就是啟動其他的啟動程序服務

  WINDOWS的關機流程

  正常關機都是調用ExitWindowsEx這個函數Csrss收到這個消息後先給Winlogon所屬的窗口發關機消息等Winlogon處理完後Csrss然後給每個有關機級別的進程發關機消息(種消息WM_QUERYENDSESSION/WM_ENDSESSION)這裡的等待時間在HKCU\Control Panel\Desktop\HungAppTimeout這裡設置默認是 milliseconds如果在這個時間范圍內有線程沒處理完那就會彈出個窗口讓用戶來結束當然也可以設置讓系統自動結束只要設置HKCU\Control Panel\Desktop\AutoEndTasks 為 就可以了對於控制台應用程序則Csrss發這個CTRL_LOGOFF_EVENT事件(服務進程是發CTRL_SHUTDOWN_ EVENT這個事件)同樣的流程有個等待時間設置在HKCU\Control Panel\Desktop\WaitToKillAppTimeout (默認為 milliseconds)接著同樣的處理系統進程處理完後Winlogon就調用NtShutdownSystem這個函數在調用NtSetSystemPowerState來處理驅動和其他的一些子系統這樣整個關機過程就完成了


From:http://tw.wingwit.com/Article/os/xtgl/201311/8718.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.