2015-11-30 77 views
-3

我正在練習c語言的Linux編程。但是我對程序如何成爲一個過程並不感興趣,程序成爲一個過程的主要步驟是什麼?程序轉換爲進程

+1

它是開源的。爲什麼不檢查流程加載器? –

回答

0

這取決於操作系統。我知道兩種模式。

  1. 該過程是在用戶登錄到系統時創建的。系統設置一個在過程後臺運行的命令解釋器。一個告訴命令解釋器運行一個程序。這加載程序並開始執行。當程序退出時,控制權返回到命令解釋器,同一進程可以運行另一個程序。

  2. 進程總是另一個進程的克隆(unix方法)。通常起點是一個外殼。你告訴shell運行一個程序。 shell自己創建一個副本,創建一個新的進程。然後它加載你想運行的程序,替換外殼。當程序結束時,進程就會死亡。

0

當鍵入上殼一個命令,它通過叉(創建新相同的工藝),則執行函數一個被稱爲以分離這個過程,使得新創建的進程可以執行其自己的代碼。在這個exec函數中,程序的代碼和數據從存儲在硬盤上的二進制文件(在Linux ELF上)加載到內存中。