附錄1


開機過程

這裡還是以簡單的 DOS 為例:

  1. 第一步當然是打開電源開關啦﹐傳統的 AT 型 PC 的電源開關就直接連在機器前面按鈕。而現在較新型的 ATX 型 PC 其開關則是屬於 Soft Switch 形式﹐其實電路已經接通在主機板上面的了﹐ATX 開關只是發出一個啟動電源的命令就可以開啟電腦了。甚至您還可以通過設定 CMOS 讓鍵盤或鼠標甚至是 MODEM 來開機呢﹗

  2. 然後電源供應單元(Power Supply Unit)會先自我進行一次測試﹐當所有的電流和電壓可以接受了﹐然後會發送一個 Power Good 信號給主機板。通常這只需要0.1 到 0.5 秒的時間而已。

  3. 這時微處理器的時間控制晶片接收到 Power Good 的信號﹐這會令其停止繼續向微處理器發出重啟(reset)信號﹐否則微處理器則一直會處於重啟狀態。

  4. 接著微處理器開始執行 ROM BIOS 內碼﹐並且是由記憶體的 FFFF:0000 位址開始。這個範圍距離最末端的可用 ROM 空間只有 16 bytes 大小﹐它包含有一個 JMP(jump) 指令切換到實際的 ROM BIOS 起始位址。

  5. ROM BIOS 會對中央硬體進行測試以確定系統可以工作﹐如果有任何問題則會通過系統的喇叭發出一個信號表示顯像(video)系統還未準備就緒。

  6. 如果順利的話﹐BIOS 會對圖像 ROM 從 C000:0000 到 C780:0000 這位址範圍作一次掃描﹐尋找顯示卡的 ROM BIOS 程式。如果此 ROM BIOS 被發現的話﹐還會安裝檢測程序進行測試。如果檢測通過﹐ROM 就會被啟動﹐其 ROM 的內碼則會對顯示卡進行初始設定﹐螢幕上則這時會出現游標(cursor)。如果檢測失敗﹐或許看到的會是: C000 ROM Error 。

  7. 如果 BIOS 未能發現顯示卡的 ROM﹐它會使用主機板 ROM 裡面的顯示驅動器(driver)嘗試對顯示硬體進行初始設定並出現游標。

  8. 主機板的 ROM BIOS 會把記憶體中從 C800:0000 到 DF80:0000 以 2K 的增值範圍撥給任何其它插卡使用。如果還有其它的 ROM 被發現的話﹐ 檢測手續也會被執行的。

  9. 如果對這些 ROM 模組檢測失敗的話﹐就會出現諸如這樣的錯誤信息: XXXX ROM Error。

    這個 XXXX 位址表示的是那些未能通過檢測的 ROM 模組之區段(segment) 範圍位址

  10. ROM BIOS 然後會檢查 一個位於記憶體範圍 0000:047 2的字值看看是進行 冷開機(Cold Boot) 還是進行 暖開機(Warm Boot)。如果字值為 1234就代表暖開機﹐則會略過記憶體的檢測過程。除此之外的其它字值都會進行冷開機及完整的 POST(Power On Self Test)。

  11. 如果是冷開機﹐在 POST 過程中發現的任何錯誤都會用聲音和圖像組合形式顯示錯誤信息。參考主機板手冊的說明﹐您就知道不同的聲音代表什麼錯誤﹐比如是連續的BB聲﹐可能是代表了記憶體有錯誤。如果一切正常﹐系統只發出一個 B 聲。

  12. 然後 ROM 會搜索磁碟 A﹕(也就是第一個軟碟)的 boot sector (Cylinder 0, head 0, sector 1) 還記得在儲存裝置的知識嗎﹖這個其實是磁碟最前面的第一磁區﹐看看有沒有 DOS 的開機標籤。這個磁區會被載入記憶體(還記得電腦只工作於記憶體嗎﹖)的 0000:7C00 範圍並會被測試。如果有磁碟發現但這個磁區不能讀取﹐又或者根本沒有磁碟﹐BIOS 就會繼續下一步驟。

  13. 如果從磁碟 A: 載入的 DOS 啟動標籤﹐其第一個 byte 處於 06h 之下﹐或者是超過或等於 06h 但開首 9 個字都為相同的資料式樣﹐就會顯示這個錯誤信息: 602-Diskette Boot Record Error。

  14. 如果找到的磁碟已經被是 DOS 進行過格式化(format) 或系統化(sys)處理﹐而指定的系統檔案非目錄前面的首兩個﹐又或者在載入他們的時候出現問題﹐則會出現這樣的信息: Non-System disk or disk error, Replace and press any key when ready (相信這個不陌生吧﹖)

  15. 如果找到的磁碟已經被是 DOS3.3 或之前版本進行過格式化(format)或系統化(sys)處理﹐而啟動磁區不完整(corrupt)﹐您或者會看到: Disk Boot failure

  16. 如果從磁碟 A: 沒有讀取到 DOS 標籤﹐BIOS 則會轉向硬碟重複上面的幾個步驟。如果磁區找到並載入了記憶體﹐會進行標記(signature)測試。

  17. 如果最後的兩個(標記)byte不等於 55AAh﹐軟體中斷 18h (Int 18h) 則可以被大多數的系統呼叫。在一個原廠 IBM 的 PS/2 系統上面﹐會提示您插入磁片並按 F1 鍵﹔在非 PS/2 系統上面﹐則會執行應該磁帶 BASIC 的中斷﹐並提示 OK。
    至於其它 IBM 的兼容系統﹐由於沒有磁帶 BASIC 的 ROM BIOS ,則會顯示諸如 Non-System disk or disk error 的信息。

    雖然不同廠家的 BIOS 顯示的錯誤信息都會不同﹐但造成這樣的錯誤信息可能是因為從沒有做過 partition (還記得前面說過即使是使用單一分區也要 partition 嗎﹖)或者是 MBR 不完整。

  18. MBR (Master Boot Record﹐在硬碟的 Cylinder 0, Head 0, Sector 1 )程式搜索其分區表( partition table )。如果發現有一個byte是代表另一個延伸分區( extened partition )的﹐程式就會將延伸分區的啟動磁區載入。在延伸分區裡面也會有其自己表格用來搜索另一個延伸分區﹐並同樣會載入其啟動磁區﹐並重複著相同的動作直到在也沒有延伸分區為止。

  19. 然後 MBR 搜索其分區表看看哪個分區被標記成啟動分區( active partition )。

  20. 在 IBM 系統上面﹐如果沒有分區被標明 active﹐則會呼叫磁帶 BASIC。在大多數的兼容系統上面﹐則會顯示一些錯誤信息﹐如果您看到諸如 Press a key to reboot﹐就很可能是沒有 active partition 了。

  21. 如果 MBR 的表格不正確或有問題﹐則會顯示 Invalid partition table。

  22. 如果啟動分區被發現處於主分區(master partition)裡面﹐則會將其驅動磁區載入同時進行測試。

  23. 如果在經過 5 次嘗試依然未能成功讀取啟動磁區﹐則會顯示 Error loading operating system。

  24. 如果起點磁區的標記不是合法的 55AAh ﹐則會顯示 Missing operating system。

  25. 驅動磁區程式檢查根目錄﹐看看有沒有前面所述的 io.sys msdos.sys 檔案﹐如果格式不對或失敗﹐則會顯示 Non-system disk or disk error 或 Disk Boot failure 等信息。

  26. 如果能正確讀取則執行之﹐並載入記憶體裡面。其初始碼會啟動設備驅動程式﹐審定器材狀態﹐重啟磁碟系統﹐重啟和初始化所附設備﹐和測試系統的預設值。

  27. 然後完整的 DOS 檔案系統開始工作﹐再將控制交回給 IO 初始碼。

  28. 然後 IO 初始碼會多次讀取 config.sys(windows系統還會讀取system.dat登錄檔案)。

  29. 如果 config.sys 的設備敘述是依出現順序第一次處理﹐同時其命名的設備驅動程式有被載入和執行的話﹐安裝(install)敘述會按照出現順序進行處理﹐同時被命名和執行。殼程式(shell)敘述也會被處理和載入其它指定命令處理器和特定的參數。如果 config.sys 沒有包含 shell 敘述﹐ 預設的 command.com 處理器則會以預設敘述被載入。載入的命令處理器這時會取替起始碼(因為它到這裡已經完成使命了)。

  30. 如果 autoexec.bat 存在﹐command.com 會將之載入和運行。等在 autoexec.bat 裡面的命令都被執行了﹐DOS 提示符就會出現(除非 autoexec.bat 呼叫了另外的應用程式或殼程式﹐使用者可以在沒有提示符的情況下操作)。

  31. 如果沒有 autoexec.bat﹐command.com 則執行其本身所附的 DATE 和 TIME 命令﹐顯示版權信息﹐和提示符。
    在 Windows95﹐winboot.sys 會自動載入 himem.sys, ifshlp.sys 和 setver.exe ﹐最後載入 win.com﹐Windows 正式啟動。

簡單歸納開機順序為﹕

  1. 開啟電源並進行 POST﹐有問題會回應錯誤信息

  2. 如果 A: 有磁碟並能啟動則啟動之﹐如果不能啟動則回應 Non-system disk 信息

  3. 如果 A: 沒有磁碟則嘗試啟動硬碟﹐不能啟動則根據不同情況回應錯誤信息

  4. 如果能成功啟動﹐會先讀取 IO.SYS、MSDOS.SYS 和 COMMAND.COM

  5. 然後讀取 CONFIG.SYS 和 AUTOEXEC.BAT(如果它們存在的話)

  6. 然後讀取 Windows 的設定檔並載入 Windows

 

 


www.study-area.org © 2001 Netman 網中人
Last Updated: March 28, 2000