版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、內(nèi)核啟動(dòng)過(guò)程總結(jié)內(nèi)核啟動(dòng)過(guò)程總結(jié)之前配置編譯過(guò)內(nèi)核源代碼,在交叉編譯源代碼后產(chǎn)生了三個(gè)文件(還有其他文件)分別是vmlinuz、vmlinux、vmlinux32,其中vmlinuz是可引導(dǎo)的、壓縮了的內(nèi)核,將該內(nèi)核拷貝到系統(tǒng)文件boot目錄下,再配置下bootboot.cfg文件,將啟動(dòng)時(shí)選擇內(nèi)核的信息和加載內(nèi)核的地方寫入就可以實(shí)現(xiàn)內(nèi)核的移植。其實(shí)移植過(guò)程和正常內(nèi)核啟動(dòng)過(guò)程的原理是一樣的。系統(tǒng)加電啟動(dòng)后,MIPS處理器默認(rèn)的程序入口時(shí)
2、0xBFC00000,此地址在無(wú)緩存的KSEG1的地址區(qū)域內(nèi),對(duì)應(yīng)的物理地址是0x1FC00000,即CPU從0x1FC00000開始取第一條指令,內(nèi)核是系統(tǒng)引導(dǎo)程序把內(nèi)核加載到內(nèi)存中的,如果內(nèi)核是經(jīng)過(guò)壓縮的,那么首先執(zhí)行archmipsbootcompressed的head.S文件去建立堆棧并解壓內(nèi)核映像文件,然后去執(zhí)行archmipskernel下的head.S,如果是沒(méi)有壓縮的內(nèi)核則直接去執(zhí)行該head.S。linux內(nèi)核啟動(dòng)的第
3、一階段就是從kernel文件夾下的head.S開始的,kernel_entry()函數(shù)就是內(nèi)核啟動(dòng)的入口函數(shù),這個(gè)函數(shù)是與體系結(jié)構(gòu)相關(guān)的匯編語(yǔ)言編寫的,它首先初始化內(nèi)核堆棧段,來(lái)為創(chuàng)建系統(tǒng)的第一個(gè)進(jìn)程0進(jìn)程作準(zhǔn)備,接著用一段循環(huán)將內(nèi)核映像的未初始化數(shù)據(jù)段bss段清零,最后跳轉(zhuǎn)到initmain.c中的start_kernel()初始化硬件平臺(tái)相關(guān)的代碼。kernel_entry()archmipskernelhead.STLB初始化,C
4、ache初始化清除BSS段準(zhǔn)備參數(shù)argcargpenvp設(shè)置棧jalstart_kernel(initmain.c)怎么為第一個(gè)進(jìn)程0進(jìn)程作準(zhǔn)備?第一個(gè)進(jìn)程涉及到init_thread_union,這個(gè)結(jié)構(gòu)體在includelinuxsched.h得到定義externunionthread_unioninit_thread_unionunionunionthread_unionthread_unionstructthread_info
5、thread_infounsignedlongstack[THREAD_SIZEsizeof(long)]THREAD_SIZE是一個(gè)宏定義#defineTHREAD_SIZE(2PAGE_SIZE)#definePAGE_SIZE(_AC(1UL)中定義。structstructthread_infothread_info0號(hào)進(jìn)程的task_struct出現(xiàn)了,就是init_task。在對(duì)init_thread_union賦初值的時(shí)候
6、,同時(shí)也通過(guò)調(diào)用INIT_TASK宏對(duì)init_task賦初值:#defineINIT_TASK(tsk).state=0.stack=&init_thread_info.usage=ATOMIC_INIT(2).flags=PF_KTHREAD.lock_depth=1.prio=MAX_PRIO20.static_prio=MAX_PRIO20.nmal_prio=MAX_PRIO20.policy=SCHED_NMAL.cpus_
7、allowed=CPU_MASK_ALL.mm=NULL.active_mm=&init_mm.se=.group_node=LIST_HEAD_INIT(tsk.se.group_node).rt=.run_list=LIST_HEAD_INIT(tsk.rt.run_list).time_slice=HZ.nr_cpus_allowed=NR_CPUS.tasks=LIST_HEAD_INIT(tsk.tasks).pushable
8、_tasks=PLIST_NODE_INIT(tsk.pushable_tasksMAX_PRIO).ptraced=LIST_HEAD_INIT(tsk.ptraced).ptrace_entry=LIST_HEAD_INIT(tsk.ptrace_entry).real_parent=&tsk.parent=&tsk.children=LIST_HEAD_INIT(tsk.children).sibling=LIST_HEAD_IN
9、IT(tsk.sibling).group_leader=&tsk.real_cred=&init_cred.cred=&init_cred.cred_guard_mutex=__MUTEX_INITIALIZER(tsk.cred_guard_mutex).comm=“swapper“.thread=INIT_THREAD.fs=&init_fs.files=&init_files.signal=&init_signals.sigh=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 啟動(dòng)過(guò)程
- 鍋爐啟動(dòng)過(guò)程
- jbossapplicationserver的啟動(dòng)過(guò)程
- wince60啟動(dòng)過(guò)程
- 筆記本的啟動(dòng)過(guò)程
- TRT最佳啟動(dòng)過(guò)程研究.pdf
- win7啟動(dòng)過(guò)程綜述
- 淺議軟啟動(dòng)在船舶電機(jī)啟動(dòng)過(guò)程應(yīng)用
- Linux啟動(dòng)過(guò)程分析與優(yōu)化.pdf
- 申論心得(自己整理-吐血推薦)
- 甲醇知識(shí)筆記根據(jù)鄭商所資料整理
- 甲醇知識(shí)筆記根據(jù)鄭商所資料整理
- 甲醇知識(shí)筆記根據(jù)鄭商所資料整理
- linux啟動(dòng)流程分析---內(nèi)核解壓縮過(guò)程
- 路由器的啟動(dòng)過(guò)程與原理
- 汽輪機(jī)啟動(dòng)過(guò)程優(yōu)化研究.pdf
- Android關(guān)鍵服務(wù)分析與啟動(dòng)過(guò)程優(yōu)化.pdf
- 霍爾推力器點(diǎn)火啟動(dòng)過(guò)程實(shí)驗(yàn)研究.pdf
- 間歇精餾冷啟動(dòng)過(guò)程的流程模擬.pdf
- 燃?xì)廨啓C(jī)啟動(dòng)過(guò)程故障診斷.pdf
評(píng)論
0/150
提交評(píng)論