學習鏈接:sunym1993/flash-linux0.11-talk: 你管這破玩意叫操作系統源碼 — 像小說一樣品讀 Linux 0.11 核心代碼 (github.com)
1. 從開機到運行main.c的過程
在主板上寫死的固件程序BIOS會將硬盤中啟動的512字節的數據,復制到0x7c00的位置,并跳轉到該位置執行;
然后將第一扇區中系統的代碼全都復制到內存中去,由(head.s + others)編譯得到 system 、由setup.s 編譯得到 setup、bootsect.s 編譯得到 bootsect,都從硬盤中復制到內存中去;
進入保護模式,設置分段、分頁、中斷的機制 (idtr 寄存器指向了 idt,這個就是中斷的設置)(gdtr 寄存器指向了 gdt,這個就是全局描述符表的設置)(cr3 寄存器指向了頁目錄表的位置,這個就是分頁機制的設置);
其中(中斷的設置,就引出了 CPU 與操作系統處理中斷的流程)、(分段和分頁的設置,引出了邏輯地址到物理地址的轉換);
最后引入 main 函數。