自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

探討Linux內(nèi)核啟動(dòng)之BIOS啟動(dòng)階段

系統(tǒng) Linux
本文講解linux內(nèi)核啟動(dòng)之BIOS啟動(dòng)階段,640KB的RAM是BIOS設(shè)計(jì)者自由使用的區(qū)域,如何使用取決于 BIOS軟件的設(shè)計(jì)者,4GB的物理地址空間至少被劃分為兩個(gè)部分,一部分是內(nèi)存的地址空間,另外一部分地址空間用于對(duì)BIOS芯片存儲(chǔ)單元進(jìn)行尋址。

Linux內(nèi)核啟動(dòng)有很多值得學(xué)習(xí)的地方,這里我們主要介紹BIOS啟動(dòng)階段,包括介紹指令寄存器CS:EIP等方面。

Linux內(nèi)核啟動(dòng)代碼復(fù)雜、龐大,讓人感覺(jué)難以入手,正是因?yàn)樗膹?fù)雜性,任何一本教材都會(huì)把相關(guān)的內(nèi)容進(jìn)行分類講解,例如中斷處理,文件系統(tǒng),等等。然而在閱讀相關(guān)章節(jié)時(shí),你是不是常常想弄明白某個(gè)相關(guān)的數(shù)據(jù)結(jié)構(gòu)是在什么時(shí)候建立的?是在什么時(shí)候初始化的?本章講解BIOS啟動(dòng)階段。

Linux內(nèi)核啟動(dòng)之BIOS啟動(dòng)階段

CPU在上電初始化時(shí),指令寄存器CS:EIP總是被初始化為固定的值,這就是CPU復(fù)位后的***條指令的地址。斷電后內(nèi)存中的內(nèi)容就丟失了,所以這一條指令必須保存在“非易失”的存儲(chǔ)器中。此類存儲(chǔ)器包括ROM,PROM,EPROM,Nor Flash等。早期的BIOS存放在只讀存儲(chǔ)器中,非常不方便修改。現(xiàn)在EPROM和Nor Flash都能夠通過(guò)電的方式來(lái)進(jìn)行擦除和編程寫入,所以通常升級(jí)BIOS就是利用BIOS芯片的電可擦除編程特性。

對(duì)于32位地址總線的系統(tǒng)來(lái)說(shuō),4GB的物理地址空間至少被劃分為兩個(gè)部分,一部分是內(nèi)存的地址空間,另外一部分地址空間用于對(duì)BIOS芯片存儲(chǔ)單元進(jìn)行尋址。除此之外,隨著系統(tǒng)外部設(shè)備的增加以及設(shè)備本身的板載存儲(chǔ)空間的增加,16位8086處理器擁有的64KB的IO地址空間早已不夠(通過(guò)in/out匯編指令來(lái)訪問(wèn)的I/O端口。),實(shí)際上4GB的物理內(nèi)存地址空間還有一部分用于外部設(shè)備的板載存儲(chǔ)空間的尋址。x86復(fù)位后工作在實(shí)模式下,該模式下CPU的尋址空間為1MB。 CS:IP的復(fù)位值是FFFF:0000,物理為FFFF0。主板的設(shè)計(jì)者必須保證把這個(gè)物理地址映射到BIOS芯片上,而不是RAM上。

早期的IBM PC地址空間映射如圖4.1所示。其中高256KB的只讀存儲(chǔ)空間映射到BIOS芯片中,中間的128KB VVDR映射到視頻卡的存儲(chǔ)空間,屏幕上面的像素點(diǎn)受該區(qū)域控制,剩下的640KB映射到RAM上面??梢钥闯鰧?duì)于硬件系統(tǒng)的設(shè)計(jì)者來(lái)說(shuō),物理地址空間也是一種資源,而這里所說(shuō)的映射就是以硬件方式對(duì)物理地址資源的分配。

640KB的RAM是BIOS設(shè)計(jì)者自由使用的區(qū)域,如何使用取決于 BIOS軟件的設(shè)計(jì)者。CPU執(zhí)行BIOS代碼對(duì)系統(tǒng)進(jìn)行必要的初始化,并在物理地址0開(kāi)始的1KB內(nèi)存中建立實(shí)模式下的中斷向量表,隨后的一部分內(nèi)存被用來(lái)保存BIOS在啟動(dòng)階段檢測(cè)到的硬件信息。另外BIOS代碼在執(zhí)行期還需要使用隨后的一部分內(nèi)存。***BIOS會(huì)根據(jù)配置把引導(dǎo)設(shè)備的***個(gè)扇區(qū)加載到物理地址0x07C00的地方,然后跳轉(zhuǎn)到這里繼續(xù)執(zhí)行。通常這是Boot Loader的代碼,Boot Loader接著把內(nèi)核加載到內(nèi)存中。前面說(shuō)過(guò)arch/x86/boot/tools/build工具把setup和vmlinux合成一個(gè) bzImage。setup是實(shí)模式的代碼,vmlinux是保護(hù)模的代碼。以上給大家講解了Linux內(nèi)核啟動(dòng)之BIOS啟動(dòng)階段。

【編輯推薦】

  1. 深入講述linux Ext3文件系統(tǒng)
  2. linux vi編輯器之葵花寶典
  3. 快樂(lè)學(xué)習(xí)Linux虛擬機(jī)VMware
  4. linux問(wèn)題解答之:linux Nautilus
  5. linux下殺死進(jìn)程全權(quán)講解
責(zé)任編輯:薛輩輩 來(lái)源: linux
相關(guān)推薦

2010-02-02 15:41:00

Linux內(nèi)核

2018-07-10 09:47:11

Linux內(nèi)核階段

2009-11-11 10:19:59

uboot內(nèi)核

2022-07-19 15:01:34

Linux

2009-02-17 16:07:29

Linux操作系統(tǒng)內(nèi)核啟動(dòng)參數(shù)

2009-10-23 16:35:44

linux Debia

2019-02-12 09:52:20

Linux安全Windows

2021-09-28 15:03:06

Linux內(nèi)核arm

2011-01-20 09:41:49

Linux 2.6.3

2010-04-21 17:09:28

Oracle啟動(dòng)模式

2010-01-11 10:35:56

2011-02-25 10:25:07

Proftpd

2010-11-15 10:50:43

Oracle啟動(dòng)模式

2017-08-31 14:40:54

Linuxinit進(jìn)程app啟動(dòng)

2022-04-12 12:35:02

Linux啟動(dòng)性能systemd

2021-10-20 10:04:47

鴻蒙HarmonyOS應(yīng)用

2011-03-02 14:07:24

Pureftpd

2017-12-25 13:51:32

LinuxUbuntu LinuLXD容器

2009-10-28 09:59:19

2014-08-04 09:35:31

Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)