Linux啟動過程

來源:互聯網
上載者:User

標籤:kernel   bios   啟動   

BIOS啟動

1.加電時由硬體將BIOS載入到記憶體末尾.這時是實模式,定址空間為1M.
2.由硬體將CS段寄存器強制設定為0xFFFF,IP指令寄存器設定為0x0000.這樣CS:IP指向了OxFFFF0的地址位置.這個位置就是BIOS程式的入口地址.
3.執行BIOS程式.在記憶體起始地址0x00000設定1K大小的中斷向量表.每個中斷向量大小為4位元組.中斷向量儲存的是中斷服務的入口地址.
4.BIOS程式在緊接中斷向量表後面設定BIOS資料區(256B).
5.BIOS程式在BIOS資料區後面56K的位置設定中斷服務程式(8KB).
6.BIOS程式執行INT 0x19中斷,CPU收到這個中斷後,在中斷向量表找到對應的中斷服務程式入口地址.然後執行中斷服務程式,把0盤面0磁軌的1扇區512位元組(MBR)資料載入到記憶體中的0x07C00位置.

啟動引導程式

BIOS把MBR載入到記憶體後就功成身退了,將控制權移交給MBR,接下來就是MBR出場了.
1.MBR由彙編編寫,大小為512B,主要的作用是載入作業系統的引導程式(Boot sector)到記憶體中.
2.引導程式載入核心kernel到記憶體對應的位置.
3.引導程式將當前實模式轉變到保護模式.這期間做了大量工作:

  • 關中斷
  • 將kernel移動起始記憶體位置
  • 設定中斷描述符表(IDT)和通用描述元表(GDT)
  • 設定頁目錄表和業表
  • 開啟保護模式,設定CR0寄存器第0位為1.
  • 準備執行main函數,控制權移交個kernel
啟動核心

執行main函數,kernel開始啟動,掛載initramfs,執行使用者空間第一個程式init…

Linux啟動過程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.