Windows启动过程
當(dāng)你啟動(dòng)計(jì)算機(jī)之后,windows的啟動(dòng)過(guò)程就開(kāi)始執(zhí)行了。下面是詳細(xì)步驟:
1?BIOS執(zhí)行一些初始系統(tǒng)檢查,并讀取磁盤的第零簇的內(nèi)容。第零簇內(nèi)容有一個(gè)特殊的稱謂?-?操作系統(tǒng)主引導(dǎo)扇區(qū)?MBR(Master?Boot?Record)。
2 MBR保護(hù)兩部分:
1?系統(tǒng)啟動(dòng)代碼?(共有446?bytes)
2?分區(qū)表入口(16?bytes?colored?entries?in?the?bottom)
3 根據(jù)系統(tǒng)代碼,我們可以找到系統(tǒng)所有的分區(qū),并找到系統(tǒng)啟動(dòng)分區(qū)。如果分區(qū)表入口的第一個(gè)字節(jié)值為0x80,那么可以確認(rèn)這就是分區(qū)表入口,它也被稱為根分區(qū)或系統(tǒng)卷?.?MBR中有四個(gè)分區(qū)入口,是不是意味著我們只能有四個(gè)系統(tǒng)驅(qū)動(dòng)?這也就意味著我們還得有擴(kuò)展分區(qū)入口.
4 除了分區(qū)得到確認(rèn)外,還能夠確認(rèn)系統(tǒng)啟動(dòng)分區(qū)的第一個(gè)磁盤簇。具體的值存儲(chǔ)在啟動(dòng)代碼的8th-12th字節(jié)。上圖中這個(gè)值為3f?00?00?00,按照小端計(jì)算,其值為0000003f,即第63rd扇區(qū)。
5 啟動(dòng)入口第63rd扇區(qū)又稱為啟動(dòng)扇區(qū),從這里開(kāi)始可以讀取到文件讀取根磁盤(c:\)的文件ntldr(NT?loader)。
6 有時(shí)候,系統(tǒng)啟動(dòng)中提示錯(cuò)誤信息“NTLDR?is?missing”,正是因?yàn)樽x取不到這個(gè)文件。?讀取這個(gè)文件的信息后,windows開(kāi)始把內(nèi)核文件加載到內(nèi)存中。先確定頁(yè)面大小,然后讀取ntdetect.com,根據(jù)BIOS設(shè)置進(jìn)行硬件檢測(cè),最后讀取boot.ini以顯示啟動(dòng)菜單,即提示有哪些操作系統(tǒng)。
?
如果系統(tǒng)上次關(guān)閉時(shí)是睡眠狀態(tài),它將讀取hiberfil.sys,以恢復(fù)睡眠前的數(shù)據(jù)。它還會(huì)加載啟動(dòng)驅(qū)動(dòng)。操作系統(tǒng)的核心功能依賴這些驅(qū)動(dòng),下表列出了初始的系統(tǒng)驅(qū):
?然后再設(shè)置CPU的寄存器的值,等等。這些任務(wù)完成后,ntldr把系統(tǒng)控制權(quán)交給進(jìn)程ntoskrnl.exe?(NT?OS?Kernel),它的使命就完成了。
6??NTOSKRNL是主要負(fù)責(zé)啟動(dòng)以下OS服務(wù)(此時(shí)你能看到的Windows?XP的進(jìn)度條顯示過(guò)程)。
第0階段初始下列服務(wù)
內(nèi)存管理服務(wù)
流程管理服務(wù)(系統(tǒng)進(jìn)程被創(chuàng)建的第一個(gè)內(nèi)核模式進(jìn)程)
對(duì)象管理器服務(wù)
即插即用管理服務(wù)
安全參考監(jiān)視器服務(wù)
第1階段的初始化
初始化HAL(硬件抽象層)
多處理器支持
調(diào)度支持(本質(zhì)上取決于處理器架構(gòu))
電源管理
?
7 ?系統(tǒng)將控制權(quán)轉(zhuǎn)交給 smss.exe (Session Manager Subsystem)。它也是windows啟動(dòng)后的第一個(gè)用戶態(tài)進(jìn)程。
1 smss進(jìn)程執(zhí)行下列任務(wù):
1?檢查磁盤(disc?check):
2?掛起一些文件。文件被掛起后,os內(nèi)核就暫時(shí)沒(méi)有了一些文件的控制權(quán)限,一些應(yīng)用軟件可能重寫(xiě)操作系統(tǒng)內(nèi)核相關(guān)的部分文件,改寫(xiě)完畢后,它就可能提示你重啟系統(tǒng)。
3?創(chuàng)建頁(yè)面文件(pagefile.sys):
?
?
2??從\Windows\System32\Config\*.*.讀取系統(tǒng)注冊(cè)表
3 最后系統(tǒng)創(chuàng)建兩個(gè)進(jìn)程(Client Server Run-Time Subsystem), Winlogon.exe.?
1?Csrss.exe負(fù)責(zé)系統(tǒng)的用戶態(tài),并向程序提供windows?API接口?
2 ? Winlogon.exe負(fù)責(zé)啟動(dòng)進(jìn)程(services.exe),并創(chuàng)建sass.exe (Local Security and Authentication Subsystem),以對(duì)用戶登錄系統(tǒng)時(shí)進(jìn)行驗(yàn)證。?
3???Winlogon將把登錄窗口呈獻(xiàn)給用戶,用戶登錄成功后,它將家在explorer.exe,并根據(jù)當(dāng)前用戶的配置信息顯示桌面。
雖然本文沒(méi)有具體的描述啟動(dòng)過(guò)程的每個(gè)細(xì)節(jié),但是大的方面本文都有說(shuō)明,以做到疏而不漏。歡迎讀者批評(píng)指正。
參考文章
1?Windows?Internals?4th?Ed?By?Mark?E.?Russinovich,?David?A.?Solomon
2?http://www.yale.edu/pclt/BOOT/PARTITIO.HTM
3?http://mirror.href.com/thestarman/asm/mbr/NTLDR.htm
說(shuō)明
本文遵循協(xié)議?The?Code?Project?Open?License?(CPOL)。
written by: Vineel Kumar Reddy Kovvuri
url: ? http://www.codeproject.com/Articles/129874/The-Birth-of-Windows-Desktop
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/menggucaoyuan/archive/2012/02/09/2344396.html
總結(jié)
以上是生活随笔為你收集整理的Windows启动过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 新浪SAE
- 下一篇: MyEclipse 中修改JSP模板