摘自:
linux建立新程序的過程。
系統允許乙個程序建立新程序,新程序即為子程序,子程序還可以建立新的子程序,形成程序樹結構模型。整個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號核心執行緒->1號使用者程序(init程序)->getty程序->shell程序
注意,上述過程描述中提到:1號核心程序呼叫執行init並演變成1號使用者態程序(init程序),這裡前者是init是函式,後者是程序。兩者容易混淆,區別如下:
1.init()函式在核心態執行,是核心**
2.init程序是核心啟動並執行的第乙個使用者程序,執行在使用者態下。
3.init()函式呼叫execve()從檔案/etc/inittab中載入可執行程式init並執行,這個過程並沒有使用呼叫do_fork(),因此兩個程序都是1號程序。
linux建立新程序的過程
linux系統中建立新程序使用fork 系統呼叫。所有程序都是通過複製程序0而得到的。都是程序0的子程序。linux建立新程序的過程 1.系統首先在任務陣列中找出乙個還沒有被任何程序使用的空項。如果陣列已滿,沒有空項,則fork系統呼叫出錯返回。系統將會為新建程序在記憶體區中分配一頁記憶體來存放其任...
https 建立通訊原理與過程
一 https簡介 二 https與http的區別 1 https的伺服器需要到ca申請證書,以證明自己伺服器的用途 2 http資訊是明文傳輸,https資訊是密文傳輸 3 http與https的埠不同,乙個是80埠,乙個是443埠 可以說http與https是完全不同的連線方式,https集合了...
程序建立的過程
1.什麼是程序?程序提供程式所需的資源,如 資料 等等 空間上的概念 程序由一大堆pe格式檔案組成。3.程序的建立 1 任何程序都是別的程序建立的 createprocess 2 程序的建立過程 對映exe檔案 建立核心物件eprocess 對映系統dll ntdll.dll 建立執行緒核心物件et...