操作系統引導程序學習筆記

首先,需要強調的一點是:這類文章屬於筆者自己在計算機操作系統學習過程中的一些學習筆記,由於還處在學習階段,所以不能保證文章的質量和文章的完全正確性。希望網友不要通過這類文章來學習或者作爲學習參考資料。同時,在下也是一個小白,如果大神發現我有出錯的地方希望能得到各位的及時指點,多謝!

最近一直在研究通用型計算機操作系統,想搞清楚操作系統到底如何啓動,如何加載程序運行的。由於自己之前並沒有學習過彙編語言再加上自己的c也不是非常的好,哈哈。所以在看Linux源碼時,進程,系統調用等等這類用c寫的模塊時還大致知道是怎麼回事,但是看有彙編編寫的引導程序這一部分就真的很頭疼了,但是我並沒有被嚇到,決定用這篇文章一邊記錄一邊學習,一定要攻破這堵厚厚的城牆奮鬥

首先來說說什麼是操作系統引導程序吧,在我看來,操作系統引導程序就是計算機在開機完成自檢之後運行的第一個程序,同時這個程序是運行在實模式下的一段由彙編語言編寫的程序。從程序大小來看,這段程序只有512字節大小(好像必須是512字節,因爲看多很多書上寫的引導程序代碼很少,但是爲了得到512字節卻運用0x00來填充,從而達到512字節的大小)。

從程序的內容上看:程序的開始都要有指明把程序加載到0x07c0處的語句,接着便是跳轉到這個地方並開始運行程序。在該扇區的最後兩個字節應該要有0xaa55,這是BIOS識別並加載引導程序的標誌,來表示這是一個引導扇區。

OGR 0x07C0          ;指明程序的轉載地址
......
.WORD 0xAA55        ;這裏是BIOS能識別的標誌,當程序所在的第一扇區的最後兩個字節上的數據是0xAA55時,BIOS就認爲第一扇區有可執行的程序(是引導扇區)然後纔開始加載運行

同時一個操作系統引導程序還應該包括:

1.(加載到0x07C0處);初始化CS,DS,SS等段寄存器,有利於後面寄存器的尋址工作。

2.讀18個扇區(出去程序本身所在的第一扇區,還有17個,也就是一個柱面的大小,這是引導程序應該做的主要工作,及讀取並載入操作系統部分內核)。

3.設置CR0寄存器,讓系統從實模式進入保護模式

4.定義GDT描述符表(具體相關介紹請看:點擊打開鏈接,這是一篇關於GDT,LDT表述符表的介紹)

5.把控制權交給內核,內核開始執行


再次提醒,以上是筆者自己的觀點,僅供參考,如有出錯的地方歡迎大神們及時指正,糾錯方式可以評論文章,同時可以聯繫本人,qq號:814048511,郵箱:[email protected]。在此感謝



-------------------------------------------------------以下爲筆者學習過程中參考的一些資料文章------------------------------------------------------------

-------------------------------------------------感謝作者們無私奉獻,爲小白提供了很好的學習資料-------------------------------------------------------

1.來自CSDN博客(大家一起寫操作系統)

2.來自CSDN博客(自己動手實現操作系統引導程序)
3.來自新浪博客(操作系統引導啓動程序)

4.從開機到進入操作系統的引導過程詳解


5.《30天自制操作系統》


20160310

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章