Linux啟動引導時核心在記憶體中位址變化

2021-08-28 11:51:58 字數 637 閱讀 9514

以下描述為linux在i386型別cpu中的啟動流程

1、bios將可啟動裝置的第乙個扇區(磁碟引導扇區,512位元組)的**(組合語言編寫的boot/bootsect.s)讀入記憶體絕對位址0x7c00處,並跳轉到0x7c00

2、於是這段**開始執行,它把自己(這512位元組**)移到絕對位址0x90000處,並把啟動裝置中後2kb**讀入到記憶體0x90200處,而核心其它部分(system模組)則被讀入到從位址0x10000開始處,因為當時system模組長度不會超過0x80000位元組大小(即512kb),所以不會覆蓋0x90000處開始的bootsect和setup模組

3、然後cpu執行到setup模組,setup模組將把system模組移動到記憶體起始處,這樣system模組中**的位址就等於實際的實體地址,便於對核心**和資料的操作,然後進入保護模式並跳轉到0x00000。

4、此時所有32位執行方式的設定啟動都完成:idt、gdt以及ldt被載入,處理器和協處理器也已確認,分頁工作也設定好了,最終呼叫init/main.c中的main()程式。

——節選自《linux核心完全注釋》——趙烱

Linux核心的引導

1,當系統上電或復位時,cpu會將pc指標賦值為乙個特定的位址0xffff0並執行該位址處的指令。在pc機中,該位址位於bios中,它儲存在主機板上的rom或flash中 2,bios執行時按照cmos的設定定義的啟動裝置順序來搜尋處於活動狀態並且可以引導的裝置。若從硬碟啟動,bios會將硬碟mbr...

Linux核心的引導

1,當系統上電或復位時,cpu會將pc指標賦值為乙個特定的位址0xffff0並執行該位址處的指令。在pc機中,該位址位於bios中,它儲存在主機板上的rom或flash中 2,bios執行時按照cmos的設定定義的啟動裝置順序來搜尋處於活動狀態並且可以引導的裝置。若從硬碟啟動,bios會將硬碟mbr...

Linux核心的引導

1,當系統上電或復位時,cpu會將pc指標賦值為乙個特定的位址0xffff0並執行該位址處的指令。在pc機中,該位址位於bios中,它儲存在主機板上的rom或flash中 2,bios執行時按照cmos的設定定義的啟動裝置順序來搜尋處於活動狀態並且可以引導的裝置。若從硬碟啟動,bios會將硬碟mbr...