當電腦的電源開啟後,處理器會進入 reset 狀態,此時:
- 所有記憶體的內容會變為 0
- CS 的值會被預設為 0FFFF[0]H
- IP(Instruction Pointer) 儲存指令的 offset,預設為 0
結合 2 & 3(Code Segment + Offset),可以知道第一個要執行的指令的 memory address 為 0FFFF0H(CS:IP),而這個 memory address 即為 BIOS 的進入點。
BIOS 的常式位於 0FFF0H,他檢查各個 I/O port,並對於存在的設備進行初始化,接著 BIOS 會建立兩個資料區:
- Interrupt Vector Table (中斷向量表)
長度為 1 KB,用來做為當 interrupt(中斷) 發生時,BIOS & OS 用來選擇相對應的 interrupt handler 之用,詳細資料可參考此篇文章。 - BIOS 資料區
起始位址為 40[0]H,大小依據設備的多寡而不同。
接著 BIOS 會檢查系統磁碟是否存在,並從系統磁碟下載啟動程式,啟動程式接著從系統磁碟將系統檔案載入 memory,並將控制權交給 OS。
沒有留言:
張貼留言