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