1. 程式人生 > >64位作業系統設計與實現1——BootLoader引導啟動程式

64位作業系統設計與實現1——BootLoader引導啟動程式

當你按下電源鍵之後,你的電腦做了哪些工作最後才啟動你的作業系統的呢?

計算機上電啟動之後,首先會經過BIOS上電自檢,檢測硬體裝置是否存在問題。如果檢測硬體沒有問題的話,將根據BIOS的啟動項配置選擇引導裝置,包括軟盤、硬碟、U盤、網路啟動。通常情況下會選擇硬碟啟動作為預設的啟動項,但從簡單和易用的角度來看,使用軟盤啟動最為簡單。

本節參考書籍:

《一個64位作業系統的設計與實現》田宇 著

《作業系統 真象還原》鄭鋼 著

1.BIOS引導原理

當BIOS自檢結束之後會根據啟動選項的設定,去檢測啟動裝置的0磁頭0磁軌1扇區(其實1扇區就是第一個扇區,命名規則和前面兩個不同而已,在CHS方法中扇區的編號是從1開始的!)是否以數值0x55和0xaa兩位元組作為結尾。如果是,那麼BOIOS就認為這個扇區是一個Boot Sector(引導扇區

),然後把這個扇區的資料複製到實體記憶體地址0x7c00處,隨後將處理器的執行許可權交給這段程式(跳轉到0x7c00處開始執行)。

那麼在BIOS向載入程式移交執行權之前,BIOS對處理器做了什麼呢?很簡單,需要修改處理器的程式碼段暫存器CS和指令暫存器IP。因為當從BIOS跳轉到載入程式時,CS和IP的值必須為0x0000和0x7c00。這樣一來實體地址就是0x7c00了。

再者,因為一個1.44MB的軟盤的一個扇區僅有512個位元組,而其末端的0x55和0xaa已經佔據了兩個位元組。因此載入程式的有效長度僅有510個位元組。

2.寫載入程式

載入程式採用Intel組合語言格式編寫,編譯程式碼使用NASM編譯器。

關於nasm編譯器的安裝教程看這裡:

NASM安裝教程

未完待續...