Linux中的0號程序和1號程序

2021-09-08 03:04:20 字數 815 閱讀 7439

系統允許乙個程序建立新程序,新程序即為子程序,子程序還可以建立新的子程序,形成程序樹結構模型。整個linux系統的所有程序也是乙個樹形結 構。樹根是系統自動構造的,即在核心態下執行的0號程序,它是所有程序的祖先。由0號程序建立1號程序(核心態),1號負責執行核心的部分初始化工作及進 行系統配置,並建立若干個用於快取記憶體和虛擬主存管理的核心執行緒。隨後,1號程序呼叫execve()執行可執行程式init,並演變成使用者態1號程序, 即init程序。它按照配置檔案/etc/initab的要求,完成系統啟動工作,建立編號為1號、2號...的若干終端註冊程序getty。

每個getty程序設定其程序組標識號,並監視配置到系統終端的介面線路。當檢測到來自終端的連線訊號時,getty程序將通過函式execve()執行 註冊程式login,此時使用者就可輸入註冊名和密碼進入登入過程,如果成功,由login程式再通過函式execv()執行shell,該shell程序 接收getty程序的pid,取代原來的getty程序。再由shell直接或間接地產生其他程序。

上述過程可描述為:0號程序->1號核心程序->1號使用者程序(init程序)->getty程序->shell程序

注意,上述過程描述中提到:1號核心程序呼叫執行init並演變成1號使用者態程序(init程序),這裡前者是init是函式,後者是程序。兩者容易混淆,區別如下:

1.init()函式在核心態執行,是核心**

2.init程序是核心啟動並執行的第乙個使用者程序,執行在使用者態下。

3.一號核心程序呼叫execve()從檔案/etc/inittab中載入可執行程式init並執行,這個過程並沒有使用呼叫do_fork(),因此兩個程序都是1號程序。

[**: ]

linux 0號程序和1號程序的區別

系統允許乙個程序建立新程序,新程序即為子程序,子程序還可以建立新的子程序,形成程序樹結構模型。整個linux系統的所有程序也是乙個樹形結構。樹根是系統自動構造的,即在核心態下執行的0號程序,它是所有程序的祖先。由0號程序建立1號程序 核心態 1號負責執行核心的部分初始化工作及進行系統配置,並建立若干...

linux 0號程序 1號程序 區別

系統允許乙個程序建立新程序,新程序即為子程序,子程序還可以建立新的子程序,形成程序樹結構模型。整個linux系統的所有程序也是乙個樹形結構。樹根是系統自動構造的,即在核心態下執行的0號程序,它是所有程序的祖先。由0號程序建立1號程序 核心態 1號負責執行核心的部分初始化工作及進行系統配置,並建立若干...

linux 0號程序 1號程序 區別

系統允許乙個程序建立新程序,新程序即為子程序,子程序還可以建立新的子程序,形成程序樹結構模型。整個linux系統的所有程序也是乙個樹形結構。樹根是系統自動構造的,即在核心態下執行的0號程序,它是所有程序的祖先。由0號程序建立1號程序 核心態 1號負責執行核心的部分初始化工作及進行系統配置,並建立若干...