国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

arm linux 啟動之二:start_kernel到創建1號進程

2024-06-28 13:23:53
字體:
來源:轉載
供稿:網友
arm linux 啟動之二:start_kernel到創建1號進程

本文介紹arm linux啟動的第二部分,C語言編寫,主要講述start_kernel到1號進程的創建。主要講述大概過程,以后再對子函數進行講解。

一、start_kernel

  start_kernel位于init/main.c,主要完成linux一些子系統的初始化。

   1)smp_setup_PRocessor_id() 單CPU位為空。

   2)lock_kernel() 鎖CPU,linux是支持搶占的,多CPU時調用這個函數防止其他CPU搶占。    3)tick_init() 時間相關初始化    4)boot_cpu_init() 確定有多少個CPU可用。現在以單CPU講述。    5)page_address_init() 初始化高端內存。linux內核空間為1G,對應最大能支持的物理內存也是1G。為了能夠支持超過1G的內存,使用高端內存(128M)來進行映射處理。

   6)setup_arch(&command_line),位于arch/arm/kernel/setup.c這個函數比較重要。

     isetup_processor初始化CPU體系架構,setup_machine初始化平臺數據結構

 ii init_mm 初始化1號進程的task_struct

iiiparse_cmdline(cmdline_p, from) 獲取default啟動參數,取得相關的啟動命令信息。

ivpaging_init(&meminfo, mdesc); 創建正式頁表

vrequest_standard_resources(&meminfo, mdesc); 申請IO資源

vi 相關全局變量賦值 init_arch_irq = mdesc->init_irq; system_timer = mdesc->timer; init_machine = mdesc->init_machine;

  7)mm_init_owner 初始化init的內存,arm體系為空

   8)setup_command_line(command_line)獲取uboot中的bootargs參數,取得相關的啟動命令信息

9)setup_nr_cpu_ids();setup_per_cpu_areas();smp_prepare_boot_cpu() 多CPU函數

  10)build_all_zonelists()初始化所有內存管理節點列表,以便后面進行內存管理初始化。

  11)page_alloc_init() 物理內存分配初始化。

  12)parse_early_param() 獲取命令行early最早執行部分的參數。

  13)vfs_caches_init_early() vfs cache子系統初始化

  14)mm_init() 內存管理初始化

 15)sched_init() 調度管理初始化

 16)rcu_init()初始化直接讀拷貝更新的鎖機制

  17)init_IRQ 中斷初始化

  18)timer初始化,高精度time初始化

  19)軟中斷初始化

20)local_irq_enable 開中斷

21)console_init 初始化控制臺,初始化之后以后prink就可以輸出了,之前是輸出到緩沖里面。

22)頁表cache初始化

23)thread cache初始化

24)IPC初始化

25)異步信號初始化

26)還有一些其他多CPU相關的初始化。

27)rest_init 創建1號進程。

二、rest_init

1) kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND); 創建1號進程init

2)創建kthreadd線程,它是內核線程之父,管理調度其它的內核線程,內核線程列表由kthread_create_list全局鏈表管理。

3) 創建idle線程消耗空CPU時間。

接下來,就是第三部分的kernel_init運行,即1號進程。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 裕民县| 宁南县| 扶余县| 乐平市| 申扎县| 正镶白旗| 增城市| 米易县| 宁阳县| 辽中县| 兴文县| 长沙县| 武平县| 交城县| 清原| 潞城市| 兴城市| 新源县| 丽江市| 安福县| 鄂尔多斯市| 德保县| 靖远县| 西充县| 时尚| 阿克陶县| 古田县| 绥化市| 蒙阴县| 梅河口市| 祁阳县| 开鲁县| 广东省| 炉霍县| 赞皇县| 阿勒泰市| 昌宁县| 湾仔区| 齐齐哈尔市| 浦县| 延长县|