明輝手游網(wǎng):m.79things.com

本站App下載  |  

首頁(yè) > 電腦資訊 > 電腦知識(shí)

WINDOWS打開及關(guān)機(jī)內(nèi)幕

作者:佚名   來(lái)源:本站   時(shí)間:2018-06-24  點(diǎn)擊:104次

  WINDOWS的啟動(dòng)流程

  第一:NTLDR的作用過(guò)程

  1.首先機(jī)器POST----BIOS----MBR----BOOT SECTOR----os的引導(dǎo)程序 WINDOWS的引導(dǎo)程序是NTLDR注意這個(gè)文件其實(shí)是個(gè)可執(zhí)行文件,這里機(jī)器主要做的工作是:CPU從16的實(shí)模式到32的保護(hù)模式,啟用CPU的頁(yè)機(jī)制,如果磁盤是SCSI,則加載Ntbootdd.sys來(lái)訪問(wèn)磁盤,否則用INT13來(lái)訪問(wèn)。這里假如機(jī)器沒(méi)找到Ntldr這個(gè)文件,在FAT文件系統(tǒng)下,機(jī)器顯示"BOOT: Couldn't find NTLDRP",而在NTFS下顯示"NTLDR is missing"(這個(gè)沒(méi)有具體實(shí)驗(yàn)過(guò),是書上這么說(shuō)的)

  2.NTLDR裝載后就先CLS屏幕,首先檢查根目錄下有沒(méi)有合法的Hiberfil.sys,這個(gè)文件的作用是機(jī)器休眠的時(shí)候把內(nèi)存中的所有信息保存到hiberfil.sys這個(gè)文件中,這個(gè)文件的大小始終和系統(tǒng)的物理內(nèi)存大小一致。如果希望回收這個(gè)空間,請(qǐng)打開“控制面板”下的“電源管理”,選擇“休眠”選項(xiàng)卡,去掉“啟用休眠”這一復(fù)選項(xiàng)的選中標(biāo)記,系統(tǒng)會(huì)自動(dòng)消除hiberfil.sys文件。如果有就快速啟動(dòng)到上次機(jī)器休眠的狀態(tài)。

  3.接著處理Boot.ini,如果有多個(gè)的啟動(dòng)項(xiàng),那就顯示啟動(dòng)菜單(如果只有一個(gè)默認(rèn)的項(xiàng),那就是我們立即就可以看到WINDOWS的啟動(dòng)狀態(tài)條了) 處理BOOT.ini WINDOWS自帶的一個(gè)工具Bootcfg.exe,可以用這個(gè)工具修改,當(dāng)然也可以自己用記事本打開boot.ini來(lái)修改,boot.ini的一些參數(shù)會(huì)保存在注冊(cè)表HKLM\System\CurrentControlSet\Control\SystemStartOptions下。關(guān)于boot.ini里面的參數(shù)大家可以去查閱資料。

  4.下面就是NTLDR調(diào)用執(zhí)行Ntdetect.com,作用是檢測(cè)的一些基本設(shè)備和配置信息   信息包括:CMOS里的時(shí)間日期信息,總線類型,磁盤的大小,類型,數(shù)目,輸入設(shè)備的信息,并口的信息,顯卡的類型,這些信息收集后保存在HKLM\HARDWARE\DESCRIPTION下面。接著就2000版本下顯示“Starting Windows”進(jìn)程條,而在xp,2003下是顯示W(wǎng)INDOWS的LOGO

  5.在顯示進(jìn)程條的過(guò)程中,機(jī)器實(shí)際上是在加載系統(tǒng)相應(yīng)的內(nèi)核和HAL文件,一般是Ntoskrnl.exe 和Hal.dll這2個(gè)文件,如果這個(gè)過(guò)程中發(fā)現(xiàn)找不到文件,則會(huì)顯示"Windows could not start because the following file was missing or corrupt"這個(gè)信息。然后讀取注冊(cè)表SYSTEM HIVE(Windows\System32\Config\System),來(lái)決定需要加載的設(shè)備驅(qū)動(dòng),這些設(shè)備驅(qū)動(dòng)都在SERVICE_BOOT_START (0)里面

  6.然后加載Ntoskrnl.exe,這樣NTLDR的使命就結(jié)束了。

  第二 Ntoskrnl.exe的作用過(guò)程這里主要分2個(gè)階段來(lái)初始化內(nèi)核,最后創(chuàng)建the Session Manager subsystem (Smss)進(jìn)程。

  第三 Smss的作用過(guò)程

  1.創(chuàng)建LPC port對(duì)象,為MSDOS定義符號(hào)連接,例如COM1、LPT1,假如安裝有Terminal Services,則創(chuàng)建\Sessions目錄

  2.運(yùn)行注冊(cè)表里HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute定義的程序,一般默認(rèn)的是運(yùn)行Autochk

  3.執(zhí)行HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations表鍵中的延遲,刪除,改名操作

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

  5.創(chuàng)建系統(tǒng)環(huán)境變量,這些定義在HKLM\System\CurrentControlSet\Session Manager\Environment

  6.加載和初始化WIN32子系統(tǒng)的內(nèi)核模塊Win32k.sys

  7. 創(chuàng)建WIN32子系統(tǒng)服務(wù)器進(jìn)程,包括Csrss, 創(chuàng)建Winlogon進(jìn)程。   這里的2個(gè)進(jìn)程其中一個(gè)出現(xiàn)異常,那系統(tǒng)都會(huì)中斷

  第四 Winlogon Csrss過(guò)程

  1.加載GINA模塊,默認(rèn)為Msgina (\Windows\System32\Msgina.dll)

  2.啟動(dòng)服務(wù)進(jìn)程Windows\System32\Services.exe

  3.啟動(dòng)Lsass(the local secyrity authentication subsystem)進(jìn)程

  4.Gina開始處理交互式登陸,登陸驗(yàn)證成功后,Gina就運(yùn)行HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Userinit,Userinit.exe執(zhí)行的順序?yàn)椋菏紫忍幚鞨KCU\Software\Policies\Microsoft\Windows\System\Scripts 和HKLM\Software\Policies\Microsoft\Windows\System\Scripts這里的腳本,然后處理組策略(假如有的話,運(yùn)行\(zhòng)Windows\System32\Proquota.exe),最后運(yùn)行HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell里的SHELL(如果不存在就運(yùn)行HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell里的,一般這里默認(rèn)的是EXPLORER.exe),注意這里也是最容易讓惡意軟件利用的地方。

  5.最后就是啟動(dòng)其他的啟動(dòng)程序,服務(wù)。

  WINDOWS的關(guān)機(jī)流程:

  正常關(guān)機(jī)都是調(diào)用ExitWindowsEx這個(gè)函數(shù),Csrss收到這個(gè)消息后,先給Winlogon所屬的窗口發(fā)關(guān)機(jī)消息,等Winlogon處理完后,Csrss然后給每個(gè)有關(guān)機(jī)級(jí)別的進(jìn)程發(fā)關(guān)機(jī)消息(2種消息WM_QUERYENDSESSION/WM_ENDSESSION),這里的等待時(shí)間在HKCU\Control Panel\Desktop\HungAppTimeout這里設(shè)置,默認(rèn)是5000 milliseconds,如果在這個(gè)時(shí)間范圍內(nèi)有線程沒(méi)處理完,那就會(huì)彈出個(gè)窗口,讓用戶來(lái)結(jié)束,當(dāng)然也可以設(shè)置讓系統(tǒng)自動(dòng)結(jié)束,只要設(shè)置HKCU\Control Panel\Desktop\AutoEndTasks 為 1就可以了,對(duì)于控制臺(tái)應(yīng)用程序,則Csrss發(fā)這個(gè)CTRL_LOGOFF_EVENT事件(服務(wù)進(jìn)程是發(fā)CTRL_SHUTDOWN_ EVENT這個(gè)事件),同樣的流程,有個(gè)等待時(shí)間,設(shè)置在HKCU\Control Panel\Desktop\WaitToKillAppTimeout (默認(rèn)為 20,000 milliseconds),接著同樣的處理系統(tǒng)進(jìn)程,處理完后,Winlogon就調(diào)用NtShutdownSystem,這個(gè)函數(shù)在調(diào)用NtSetSystemPowerState來(lái)處理驅(qū)動(dòng)和其他的一些子系統(tǒng)。這樣整個(gè)關(guān)機(jī)過(guò)程就完成了。

推薦游戲

換一換