Linux核心啟動過程 之三

2021-06-01 22:44:32 字數 702 閱讀 7524

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可以開...