標籤:
首先嘛,開機對於大家來說也就是捅一下開機按鈕,然後電腦開始嗡嗡叫,各種風扇轉起來,顯示器上顯示了一個LOGO,最後就看到了Win7的啟動動畫。這個過程中,電腦詳細都做了些什麼呢?我在這裡詳細的說一說我的瞭解。(注意這隻是我的瞭解,我還是很嚴謹的哦)
1、開機之後,主板的晶片集會給CPU發送一個RESET訊號,CPU會掛起,並不馬上執行指令(CS:EIP=0xFFFF:0x0000) 這個時候CPU完成初始化,內部恢複到初始狀態。 等晶片集檢測到電源已經穩定供電了,晶片集就撤去RESET訊號,CPU從0xFFFF:0x0000開始執行。
這個時候電腦記憶體位址從0xC0000到0xFFFFF都是ROM-BIOS的地址。 0xFFFF:0x0000有什麼呢?有一條遠跳轉指令,轉入BIOS的初始化程式。
2、BIOS開始進行POST(Power-On Self Test,電腦自檢,檢查CPU,風扇等)一旦出錯就蜂鳴警示。因為沒有初始化顯卡,所以無法列印資訊到螢幕,只好蜂鳴警示。POST是很快的,所以一般來說這個過程也就是一瞬間的事。
3、完成POST之後,BIOS開始初始化顯卡。BIOS先尋找顯卡BIOS,然後調用顯卡BIOS使其進行自動初始化。這個時候顯卡BIOS會列印一些文本,比如顯卡的LOGO之類的,不過也通常也是一閃而過。BIOS還會再尋找其他裝置的BIOS,並調用其進行初始化。
4、初始化各個硬體之後,BIOS列印出了自己的資訊,LOGO,BIOS類型等。大家也是在這個時候看到螢幕上顯示了一句話:“請按F2或DEL進入設定,按F12設定引導菜單”(原文一般是“Press F2 or DEL to enter SETUP, or Press F12 to setup boot priority.”)不過不同的BIOS、主板列印的資訊不同,因此鍵位也不一樣,可能是F10進入設定,或F1設定引導菜單等。裝系統的時候大家可以搓鍵盤,就像搓衣板一樣,就搓F1到F12(同時也試著搓Enter、Del),這個時候就能快速進入設定了。
5、BIOS開始檢查記憶體,有些BIOS會顯示檢查的進度。檢查記憶體的目的主要是為了擷取記憶體的大小。
6、檢查完記憶體之後,BIOS開始檢查電腦的一些標準裝置,比如硬碟、CD-ROM、軟碟機、串口(COM)、並口(LPT印表機)等裝置。
7、BIOS開始檢查隨插即用裝置(USB等),同時為它分配DMA通道、IO口等。
8、BIOS開始進行擴充參數的設定。現在的主板比較屌,會有很多擴充功能,比如超頻,開核等各種參數。
初始化完了以後記憶體的分配是這樣的:
0x00000-0x003FF:中斷向量表。有關中斷向量表每個向量的詳細資料請看這裡:http://www.ctyme.com/intr/int.htm 0x00400-0x005FF:BIOS資料區。有關BIOS資料區的詳細資料請參閱《PC技術內幕》 0x00600-0x07BFF:自由記憶體區。引導程式可自由使用。 0x07C00-0x07DFF:引導程式扇區的載入位置 0x07E00-0x9FFFF:自由記憶體區。引導程式可自由使用。 0xA0000-0xAFFFF:圖形模式顯存 0xB0000-0xB7FFF:單色文字模式顯存 0xB8000-0xBFFFF:彩色文字模式顯存 0xC0000-0xFFFFF:BIOS引導代碼、自檢代碼、中斷處理常式等 0x100000以上:高位記憶體。開啟A20地址線之後才能訪問
BIOS完成上面的幾個初始化步驟之後,開始按照使用者指定的引導菜單開始引導。所謂的引導就是從光碟片、磁碟片、硬碟中找作業系統。 看起來挺屌,但是其實也就是從硬碟、磁碟片等讀取第一個扇區,檢查這個扇區的最後兩個位元組是不是0x55,0xAA(也就是0xAA55)如果是,就判定為“我找到作業系統了”於是跳轉到開機磁區部分0x0000:0x7C00開始運行。
硬碟的第一個扇區是MBR,主開機磁區。磁碟片的第一個扇區是DBR,磁碟系統開機磁區。 |
https://www.0xaa55.com/forum.php?mod=viewthread&tid=59&extra=page%3D15
電腦在開機的時候都做了些什麼