從按下計算機開關啟動計算機,到登入到桌面完成啟動,一共經過了以下幾個階段:
1. 預引導(pre-boot)階段;
2. 引導階段;
3. 載入核心階段;
4. 初始化核心階段;
5. 登陸。
每個啟動階段的詳細介紹
a) 預引導階段
在按下計算機電源
使計算機啟動,並且在windows xp專業版作業系統
啟動之前這段時間,我們稱之為預引導(pre-boot)階段,在這個階段裡,計算機首先執行power on self test(post),post檢測系統
的總記憶體
以及其他硬體裝置的現狀。如果計算機系統
的bios(基礎輸入/輸出系統
)是即插即用的,那麼計算機硬體裝置將經過檢驗以及完成配置。計算機的基礎輸入/輸出系統
(bios)定位計算機的引導裝置,然後mbr(master boot record)被載入並執行。在預引導階段,計算機要載入windows xp的ntldr檔案。
b) 引導階段
windows xp professional引導階段包含4個小的階段。
首先,計算機要經過初始引導載入器階段(initial boot loader),在這個階段裡,ntldr將計算機微處理器從實模式轉換為32位平面記憶體
模式。在實模式中,系統
為ms-dos保留640kb記憶體
,其餘記憶體
視為擴充套件記憶體
,而在32位平面記憶體
模式中,系統
(windows xp professional)視所有記憶體
為可用記憶體
。接著,ntldr啟動內建的mini-file system drivers,通過這個步驟,使ntldr可以識別每乙個用ntfs或者fat檔案系統
格式化的分割槽,以便發現以及載入windows xp professional,到這裡,初始引導載入器階段就結束了。
接著系統
來到了作業系統
選擇階段,如果計算機安裝了不止乙個作業系統
(也就是多系統
),而且正確設定了boot.ini使系統
提供作業系統
選擇的條件下,計算機顯示器
會顯示乙個作業系統
選單,這是ntldr讀取boot.ini的結果。(至於作業系統
選單,由於暫時條件不夠,沒辦法截圖,但是筆者模擬了乙個)
·windows xp 作業系統
啟動過程概述(2)在boot.ini中,主要包含以下內容:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)/windows
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)/windows="microsoft windows xp professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)/winnt="windows windows 2000 professional"
其中,multi(0)表示磁碟控制器,disk(0)rdisk(0)表示磁碟,partition(x)表示分割槽。ntldr就是從這裡查詢windows xp professional的系統
選項,或者把timeout值設為0,則系統
不出現作業系統
選擇選單,直接引導到那個唯一的系統
或者預設的系統
。在選擇啟動windows xp professional後,作業系統
選擇階段結束,硬體檢測階段開始。
在硬體檢測階段中,ntdetect.com將收集計算機硬體資訊列表並將列表返回到ntldr,這樣做的目的是便於以後將這些硬體資訊加入到登錄檔hkey_local_machine下的hardware中。
硬體檢測完成後,進入配置選擇階段。如果計算機含有多個硬體配置檔案列表,可以通過按上下按鈕來選擇。如果只有乙個硬體配置檔案,計算機不顯示此螢幕而直接使用預設的配置檔案載入windows xp專業版。
引導階段結束。在引導階段,系統
要用到的檔案一共有:ntldr,boot.ini,ntdetect.com,ntokrnl.exe,ntbootdd.sys,bootsect.dos(可選的)。
c) 載入核心階段
在載入核心階段,ntldr載入稱為windows xp核心的ntokrnl.exe。系統
載入了windows xp核心但是沒有將它初始化。接著ntldr載入硬體抽象層(hal,hal.dll),然後,系統
繼續載入hkey_local_machine/system鍵,ntldr讀取select鍵來決定哪乙個control set將被載入。控制集中包含裝置的驅動程式以及需要載入的服務。ntldr載入hkey_local_machine/system/service/...下start鍵值為0的最底層裝置驅動。當作為control set的映象的current control set被載入時,ntldr傳遞控制給核心,初始化核心階段就開始了。
·windows xp 作業系統
啟動過程概述(3)d) 初始化核心階段
在初始化核心階段開始的時候,彩色的windows xp的logo以及進度條顯示在螢幕**,在這個階段,系統
完成了啟動的4項任務:
核心使用在硬體檢測時收集到的資料來建立了hkey_local_machine/hardware鍵。
核心通過引用hkey_local_machine/system/current的預設值複製control set來建立了clone control set。clone control set配置是計算機資料的備份,不包括啟動中的改變,也不會被修改。
系統完成初始化以及載入裝置驅動程式,核心初始化那些在載入核心階段被載入的底層驅動程式,然後核心掃瞄hkey_local_machine/system/currentcontrolset/service/...下start鍵值為1的裝置驅動程式。這些裝置驅動程式在載入的時候便完成初始化,如果有錯誤發生,核心使用errorcontrol鍵值來決定如何處理,值為3時,錯誤標誌為危機/關鍵,系統
初次遇到錯誤會以lastknowngood control set重新啟動,如果使用lastknowngood control set啟動仍然產生錯誤,系統
報告啟動失敗,錯誤資訊將被顯示,系統
停止啟動;值為2時錯誤情況為嚴重,系統
啟動失敗並且以lastknowngood control set重新啟動,如果系統
啟動已經在使用lastknowngood值,它會忽略錯誤並且繼續啟動;當值是1的時候錯誤為普通,系統
會產生乙個錯誤資訊,但是仍然會忽略這個錯誤並且繼續啟動;當值是0的時候忽略,系統
不會顯示任何錯誤資訊而繼續執行
session manager啟動了windows xp高階子系統
以及服務,session manager啟動控制所有輸入、輸出裝置以及訪問顯示器
螢幕的win32子系統
以及winlogon程序,初始化核心完畢。
作業系統啟動順序
在這裡以x86的處理器為例 機器在啟動的時候會執行第一條指令。這條指令會去執行bios,將控制權交給bios。bios完成硬體的質檢,然後將bootloader從硬碟讀到記憶體中,執行bootloader,並將控制權交給bootloader bootloader負責使能保護模式 建立段機制以及載入作...
詳解作業系統啟動
我們作業系統在啟動的時候,我們的計算機到底什麼?讓我們從馮諾依曼體系說起!其實說白了,整個計算機執行過程就是在取指令和執行指令,如下圖所示,其中pc 程式計數器 指向一條指令,計算機將其從儲存器取出,然後放到運算器中執行,也就是如圖所示,最終得到ax的值是0。開機一瞬間軟體上做了什麼?在我們開機的那...
作業系統啟動過程
當我們按下開機鍵後,作業系統究竟是如何跑起來的?這個過程詳細說來很複雜。這裡只簡單描述一下。當機器剛從生產線上下線的時候,裡面沒有作業系統,稱之為裸機。裸機什麼事都幹不了,於是需要裝上作業系統。機器中固化了乙個用於讀取磁碟或者其他裝置的程式,於是當你在啟動時按下f2鍵,就會執行這個程式安裝作業系統。...