64位作業系統設計與實現1——BootLoader引導啟動程式
阿新 • • 發佈:2018-12-10
當你按下電源鍵之後,你的電腦做了哪些工作最後才啟動你的作業系統的呢?
計算機上電啟動之後,首先會經過BIOS上電自檢,檢測硬體裝置是否存在問題。如果檢測硬體沒有問題的話,將根據BIOS的啟動項配置選擇引導裝置,包括軟盤、硬碟、U盤、網路啟動。通常情況下會選擇硬碟啟動作為預設的啟動項,但從簡單和易用的角度來看,使用軟盤啟動最為簡單。
本節參考書籍:
《一個64位作業系統的設計與實現》田宇 著
《作業系統 真象還原》鄭鋼 著
1.BIOS引導原理
當BIOS自檢結束之後會根據啟動選項的設定,去檢測啟動裝置的0磁頭0磁軌1扇區(其實1扇區就是第一個扇區,命名規則和前面兩個不同而已,在CHS方法中扇區的編號是從1開始的!)是否以數值0x55和0xaa兩位元組作為結尾。如果是,那麼BOIOS就認為這個扇區是一個Boot Sector(引導扇區
那麼在BIOS向載入程式移交執行權之前,BIOS對處理器做了什麼呢?很簡單,需要修改處理器的程式碼段暫存器CS和指令暫存器IP。因為當從BIOS跳轉到載入程式時,CS和IP的值必須為0x0000和0x7c00。這樣一來實體地址就是0x7c00了。
再者,因為一個1.44MB的軟盤的一個扇區僅有512個位元組,而其末端的0x55和0xaa已經佔據了兩個位元組。因此載入程式的有效長度僅有510個位元組。
2.寫載入程式
載入程式採用Intel組合語言格式編寫,編譯程式碼使用NASM編譯器。
關於nasm編譯器的安裝教程看這裡: NASM安裝教程
未完待續...