(作業3)Linux核心的啟動過程(從start_kernel到init進程啟動)

來源:互聯網
上載者:User

標籤:

作業題目: 

詳細分析從start_kernel到init進程啟動的過程並結合實驗撰寫一篇署名部落格,並在部落格文章中註明“真實姓名(與最後申請認證的姓名務必一致) + 原創作品轉載請註明出處 + 《Linux核心分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000 ”,部落格內容的具體要求如下: 

  • 題目自擬,內容圍繞Linux核心的啟動過程,即從start_kernel到init進程啟動;

  • 部落格中需要使用實驗

  • 部落格內容中需要仔細分析start_kernel函數的執行過程

  • 總結部分需要闡明自己對“Linux系統啟動過程”的理解,尤其是idle進程、1號進程是怎麼來的。

作答區:

1. 使用實驗樓的虛擬機器開啟shell,輸入如下命令:

cd LinuxKernel/qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 

2. 使用gdb跟蹤調試核心

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 關於-s和-S選項的說明: -S freeze CPU at startup (use ’c’ to start execution) -s shorthand for -gdb tcp::1234 若不想使用1234連接埠,則可以使用-gdb tcp:xxxx來取代-s選項

3. 另開一個shell視窗

gdb(gdb)file linux-3.18.6/vmlinux # 在gdb介面中targe remote之前載入符號表(gdb)target remote:1234 # 建立gdb和gdbserver之間的串連,按c 讓qemu上的Linux繼續運行(gdb)break start_kernel # 斷點的設定可以在target remote之前,也可以在之後

4. 以上步驟的如下:

 

 

5. start_kernel函數的執行過程:

 1 lockdep_init(); 2 set_task_stack_end_magic(&init_task); // init_task即手工建立的PCB,0號進程即最終的idle進程。 3 smp_setup_processor_id(); 4 debug_objects_early_init(); 5 // ... 6 trap_init();                          // 中斷初始化向量 7 mm_init();                            // 記憶體管理莫怪的初始化 8 sched_init();                         // 進程調度初始化 9 // ...10 rest_init();                          // 啟動1號進程

6. “Linux系統啟動過程”的理解:

  不管分析核心的哪一部分都會涉及到start_kernel。通過start_kernel進行調用,來初始化。

  init進程是第一個使用者態進程,叫做”1號進程“。通過rest_init函數 -> kernel_init函數 -> run_init_process產生,找根目錄下的程式來作為“1號進程”。

  當系統沒有進程需要執行時就調度到idle進程。這就是“0號進程”。從系統啟動之後就一直存在。它建立了1號進程“kernel_init”和其他進程。這樣系統就啟動起來了。

 

李春霖

原創作品轉載請註明出處

《Linux核心分析》MOOC課程地址:http://mooc.study.163.com/course/USTC-1000029000 

(作業3)Linux核心的啟動過程(從start_kernel到init進程啟動)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.