操作系統裝在硬盤上(磁盤),因此操作系統的啓動第一步就是把操作系統文件載入內存。載入內存的過程主要爲三部分
- boot sect.s(引導程序)
- set up.s,完成os啓動前的設置
- system模塊執行
set up:
主要工作有
- 15號中斷獲取內存大小並保存
- 獲取硬件參數 如顯卡、根設備號等
- 讓操作系統置於地址從0開始的位置
- 進入保護模式:
CS IP的解釋方式改變,由實模式(CS<<4+IP)切換到選擇子模式(即根據CS查表+IP)
這樣做尋址空間大小由16位(<1M)擴展到32位模式(4G)20位是1M 2的10次方是1024,所以30位是1G, 1位是1byte即8bit
system模塊:
setup跳到system的第一部分代碼,主要構成有
- MAKE FILE:操作系統控制代碼,makefile產生image(OS鏡像文件)寫入磁盤0扇區,makefile是束狀結構的
- head.s :初始化GDT列表即CS查表,開啓20號地址線
|
main.c:初始化工作 例如 mem.int(內存初始化)2片4K空間形成存儲內存中哪些用了,哪些沒使用的表格
總之操作系統啓動的2個主要工作就是將OS文件載入內存和初始化