時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(1)
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ī)制,如果磁盤(pán)是SCSI,則加載Ntbootdd.sys來(lái)訪問(wèn)磁盤(pá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ò),是書(shū)上這么說(shuō)的)
2.NTLDR裝載后就先CLS屏幕,首先檢查根目錄下有沒(méi)有合法的Hiberfil.sys,這個(gè)文件的作用是機(jī)器休眠的時(shí)候把內(nèi)存中的所有信息保存到hiberfil.sys這個(gè)文件中,這個(gè)文件的大小始終和系統(tǒng)的物理內(nèi)存大小一致。如果希望回收這個(gè)空間,請(qǐng)打開(kāi)"控制面板"下的"電源管理",選擇"休眠"選項(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)然也可以自己用記事本打開(kāi)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í)間日期信息,總線類(lèi)型,磁盤(pán)的大小,類(lèi)型,數(shù)目,輸入設(shè)備的信息,并口的信息,顯卡的類(lèi)型,這些信息收集后保存在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開(kāi)始處理交互式登陸,登陸驗(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ò)程就完成了。
關(guān)鍵詞標(biāo)簽:WINDOWS
相關(guān)閱讀
熱門(mén)文章 如何修改服務(wù)器3389端口 Win11系統(tǒng)怎么設(shè)置中文-Win11更改成中文的方法教程 Win11怎么設(shè)置同步時(shí)間-Win11手動(dòng)同步時(shí)間操作方法 Win11怎么在開(kāi)始菜單添加快捷方式-開(kāi)始菜單添加快捷方式操作方法
人氣排行 [聲音故障]XP沒(méi)有聲音,丟失Windows Audio服務(wù)(AudioSrv)[警告:2003不一定適用 解決Windows 7黑屏的有效方法 windows2003中關(guān)于軟路由設(shè)置方法的具體介紹 Windows不能在本地計(jì)算機(jī)啟動(dòng)OracleDBConsoleorcl 一個(gè)空文件夾刪不掉的解決辦法 微軟Windows錯(cuò)誤代碼大全(2) 用Windows命令行實(shí)現(xiàn)自動(dòng)SSH代理 Windows 7加X(jué)P的局域網(wǎng)搭建與文件共享