start_kernel( )程式用於初始化系統核心的各個部分,包括:
*設定記憶體邊界,呼叫paging_init( )初始化記憶體頁面。
*初始化陷阱,中斷通道和排程。
*對命令列進行語法分析。
*初始化裝置驅動程式和磁碟緩衝區。
*校對延遲迴圈。
前面兩篇,網友喬遷已經很詳細的分析了核心的啟動過程,
最終核心將跑到rest_init();
static void noinline __init_refok rest_init(void)
__releases(kernel_lock)
最後的function'rest_init' 作了以下工作:
*開闢核心執行緒'init'
*呼叫unlock_kernel
*建立核心執行的cpu_idle環, 如果沒有排程,就一直死迴圈
所以start_kernel永遠不能終止.它會無窮地迴圈執行cpu_idle.
最後,系統核心轉向move_to_user_mode( ),以便建立初始化程序(init)。此後,程序0開始進入無限迴圈。
初始化程序開始執行/etc/init、/bin/init 或/sbin /init中的乙個之後,系統核心就不再對程式進行直接控制了。之後系統核心的作用主要是給程序提供系統呼叫,以及提供非同步中斷事件的處理。多工機制已經建立起來,並開始處理多個使用者的登入和fork( )建立的程序。
linux核心啟動過程
第一步 電腦加電後cpu開始自身初始化,然後從某個固定位置 一般為0xfffffff0 取指令開始執行,此指令為跳轉指令,跳轉到bios 首部。第二步 bios開始加電自檢進行post power on self test 此階段完成系統硬體檢測,包括記憶體 系統匯流排檢測等,然後bios讀取啟動裝...
Linux核心啟動過程
linux核心啟動過程 第一篇日誌就摘錄一下linux核心的啟動過程,參考了 linux核心移植和yaffs2根檔案系統製作 嵌入式linux系統從軟體角度看可以分為四部分 引導引導程式 bootloader linux核心,檔案系統,應用程式。bootloader是系統啟動時執行的第一段 它主要用...
Linux 核心啟動過程
核心啟動前需要滿足的條件 暫存器,cpu,cache mmu 1.cpu暫存器的設定 r0 0 r1為機器碼 r2為啟動引數,標記列表在ram中的起始位址 2.cpu工作模式 必須禁止中斷 irq和fiq cpu必須設定為svc模式 3.cache和mmu的設定 mmu必須關閉 指令cache可以開...