Linux設計與實現原理筆記《一》從開機加電到main之前的過程

大致可分三大步:
第一步:
啓動BIOS
第二步:
將操作系統程序加載到內存
第三步:
爲執行32位的main做些準備工作

具體來說,加電後,BIOS通過硬件方法完成啓動,在內存中加載中向量表和終端服務程序。
加載OS程序又分三批。
第一批由中斷0x19將第一扇區bootsect(引導程序)加載到內存。後兩批在bootsect的指揮下裝載隨後的4個、240個扇區。
第二批代碼(setup)
第三批代碼(system模塊)
此時,開始轉變到32位模式
1 關中斷,將system移動到內存起始地址爲0x00000
2 設置中斷描述符表和全局描述符表
3 打開A20,實現32位尋址,最大尋址空間4GB
4 爲在保護模式下執行head.s做準備
5 head執行
6 main可以運行了

head由來
bootsect到main執行的整體技術策略如下:
執行main之前,執行boot sect、setup、head三個彙編。之後纔開始main。
head除了做調用main的準備工作,還在程序自身的代碼所在空間,創建了內存分頁機制,即在0x000000位置創建了頁目錄表、頁表、緩衝區、GDT,意味着head自己讓自己廢棄。

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