linux內存初始化過程bootloader部分

OS負責內存分配和回收,但在這之前,一定要知道硬件可用內存的情況。在機器啓動的時候,OS還沒發揮作用之前,BIOS會對硬件資源做一次檢查,並將信息保存在特定的位置(當然也是存儲介質,大部分情況是內存),操作系統內核被加載完成之後,將硬件資源信息讀取出來,然後會將這部分內存回收掉。下面詳細來說明bootloader在內存方面爲操作系統所做的準備工作。以linux0.11的啓動過程爲例,瞭解其過程。

bootloader

機器啓動時,先會執行固化在持久存儲介質的代碼,這部分代碼要檢測硬件資源,加載操作系統內核,然後才把控制權交給操作系統。
1.CPU加電後,PC寄存器指向某一具體位置,也就是其BIOS的入口地址。
2.BIOS會在內存開始的區域,建立中斷向量表,爲BIOS的函數調用作準備。
3.分批加載linux內核,並且覆蓋自己不用的內存。
4.加載過完成後,把控制權交給linux,並且,自身運行時在內存中產生數據基本上已經被覆蓋。

bootloader處理內存信息的過程

bootloader將內存信息存在。
linux x86使用的是lilo。
常見的bootloader如圖所示:
bootloader種類
在x86上可以使用的開源bootloader有lLILO,GRUB,U-boot,前兩者差不多,所以選LILO和U-boot來分析其所做的工作:
有兩個關鍵的問題:
1.開機自檢程序如何知道物理內存的?
2.在操作系統還沒有正常運行時,如何分配內存?

linux讀取內存信息

在bootloader檢測完內存信息後,將其存在某一位置。操作系統拿到控制權後,要讀取其內存信息。這部分以後再分析。

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