[Linux內核完全剖析]第七章 初始化程序(init)總結

系統初始化程序init/main.c主要功能是對系統進行初始化,並切換到用戶模式下執行登錄程序。
主要步驟如下:
1、系統初始化部分:

2、然後是切換到用戶層(即idle進程),並使用fork系統調用來生成init進程,idle則循環使用pause()進入進程調度。

3、fork出來的新進程調用init()函數執行shell以及登錄程序

4、系統完成了初始化過程,進入shell程序繼續執行。
注意:init進程(進程1)是從idle進程(進程0)中fork出來,init繼承了idle的代碼、數據空間、堆棧、文件描述符等等。但由於直接從內核切換出來的idle進程沒有寫時複製技術,所以這兩個進程共享了上述內容。爲了確保數據不發生混亂,idle進程對堆棧不進行任何操作,即沒有函數調用。所以在move_to_user()宏調用之後進入idle進程開始,整個idle進程使用了宏的fork(),pause()作爲替換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章