歡迎跟我連絡

本頁最下方有Web MSN可以直接跟我交談喔!
免安裝程式...哈哈 歡迎聊天

2008年3月21日 星期五

WindowXP開機程序

當打開電源啟動電腦時,電腦將會啟動存放在BIOS中的POST(電源啟動自我檢測,Power On Self test)程序,POST主要的工作是對電腦各硬體設備做好初始設定與基本測試工作,以確保電腦能正常運作.例如確認記憶體大小及硬體設備(鍵盤、顯示器、磁碟機、Parallel Port、Serial Port、系統時間等)是否存在及運作正常,一旦電腦執行完本身的POST程序之後,其它裝在電腦中帶有自己BIOS(Basic Input/Output System)的介面卡(通常是顯示卡),也會執行其自定的POST工作程序.
結束完POST的檢測工作後,接下來會根據定義在BIOS中的開機順序來選擇開機裝置,通常BIOS定義的搜尋順序是[Floppy][HDD][CD-ROM][USB],使用者可以根據實際需要自行修改BIOS開機裝置搜尋順序,則其將會進行如下圖所示開機裝置順序的尋找動作:

但是以目前的多數的電腦,通常會以硬碟作為開機的Boot Device.
當硬碟被決定為開機裝置後,BIOS會將位於開機硬碟的第一個磁區(即MBR,CHS[001],Cylinder/Head/Sector)前面446 Bytes的啟動程式載入記憶體中執行,此時BIOS就將執行權交給MBR而功成身退了.MBR中的啟動程式之主要工作是搜尋MBR中的硬碟分割表(Partition Table)記錄,以找到啟動分割區(Active Partition)所在位置,即硬碟分割表中的各分割區記錄的第一個Byte(啟動狀態)若標示為80(16)者,則該硬碟分割區即為啟動分割區(又稱為系統分割區),一個硬碟最多只會有一個分割區是啟動分割區.若MBR無法從硬碟分割表中得知系統分割區的位址所在或硬碟分割表己毀損,則會顯示[Invalid partition table]錯誤訊息.

當MBR啟動程式從硬碟分割表中得知系統分割區(System Partition)所在位址後,其會將位於系統分割區之開機磁區(Boot Sector,即該分割區的第一個磁區)中的開機程式(Boot Program)載入到記憶體執行,並依照開機程式中的設定去找尋NTLDR程式的所在位置,以便載入NTLDR檔案到記憶體執行,並且同時將控制權轉交給NTLDR而結束MBR啟動程式的工作.

NTLDR是一個隱藏唯讀系統檔案,也是NT系統的開機管理程式,其主要負責的工作有控制[作業系統的選擇][硬體的檢測][WXP作業系統的核心程式載入]等。
NTLDR會尋找並載入Boot.ini、Bootsect.dos、Bootsect.w40、NTdetect.com、NTbootdd.sys等檔案.
首先會先載入Boot.ini,開啟作業系統清單,讓User選擇進入的作業系統.(如果只有一個OS,你部會看到這畫面)

然後載入NTdetect.com,偵測目前電腦安裝了那些硬體元件及其相關的設定資訊,並將其所收集到的資料建立成硬體清單(H/W List)傳遞給NTLDR使用.以備核心初始化階段(Kernel Initiation Phase)建立H/W註冊機碼時使用.一般來說,Ntdetect.com會偵測下列硬體元件:匯流排/介面卡類型、顯示卡、鍵盤、通訊埠(Communication Ports)、平行連接埠(Parallel Ports)、軟碟、滑鼠等裝置,同時還會收集系統韌體資訊,例如系統的日期和時間。下面就是載入NTdetect.com時的畫面.

但是如果你有多個硬體設定檔的話,

在載入NTdetect.com前會先出現這個畫面

到底要啟動哪些裝置或這些裝置到底要使用什麼樣的設定,還有那些服務要啟動,那些服務不啟動,這些都是定義在硬體設定檔中.
接著NTLDR將會載入WXP的核心程式Ntoskrnl.exe到記憶體,但並未將其做初始化(Initialize)的動作,此時也正式進入了核心載入階段,接下來就會載入硬體抽象層(Hardware Abstraction Layer)Hal.dll的程式碼至記憶體。接著再將控制權交給Ntoskrnl.exe,就是我們常在[工作管理員]看到的兩個最重要的Porcess,
[System Idle Process]及[Taskmgr.exe](Task Manager)

這樣就開機完成了.

0 個回應:

MSN狀態(我在線上時,可以跟我交談喔)