為什麼作業系統 linux 是以fork exec的形式建程序

時間 2021-06-02 03:52:20

1樓:Will

說一下我的粗淺理解:因為關於程序執行,必定存在以下三種需求:

1)建立乙個新程序並執行

2)將乙個正在執行的程序fork成若干個繼續執行3)不需要終止程序,就能讓程序直接載入新的程式檔案功能2或3去掉任何乙個,都沒法用剩下的兩個代替實現,而功能1卻可以用2和3來代替實現。換句話說功能1和2,3並不正交,它不是必須的。在有強迫症的程式猿看來,當然就必須乾掉了。

2樓:Pickle Pee

Unix擁有乙個非常好用的方法: fork()這個方法可以用來建立子程序,同時也是唯一的方法。

子程序的記憶體空間是父程序的拷貝,但是實際上子程序要做什麼仍然取決於程式設計師!

程式設計師可以

fork without exec* 建立乙個子程序成為乙個父程序的拷貝

fork with exec* 讓子程序成為乙個不同的程序just exec* without fork 執行而不拷貝程序程式設計師只需要記住fork和exec*方法!

可能你會問如果每次fork都複製一遍記憶體的內容,豈不是很浪費資源?

No!其實在fork之後,所謂的拷貝只是拷貝了virtual memory map!如果接下來執行exec,告訴Unix系統我要讓它變成乙個新程序,那麼實際上並沒有真正拷貝父程序的記憶體內容。

3樓:

除了建立新程序用來執行別的程式之外,還有一種場景是程式只需要fork成多個同樣的,不需要執行別的程式。Windows下CreateProcess直接支援前一種場景,但就沒辦法支援後一種場景了;Unix的fork只支援後一種場景,但可以通過和exec配合來支援前一種場景,這只是一種實現策略而已。

為什麼說linux作業系統要比windows穩定?

劉娟 這完全是典型的倖存者偏差統計,如果你用過帶UI的linux,你就會知道Windows遠比linux穩定,主要是日常使用windows需要相容得太多太多了,導致各種各樣的問題,linux任務很單一,相容性差,所以你覺得穩定。 因為外行說的,外行傳的 應該說linux伺服器比windows伺服器穩...

Linux作業系統關於C library的理解?

冬火 前面幾位回答的已經挺全面了,再補充點參考資料吧。glibc C Library 與 Linux system API 的關係可以參考 unix環境高階程式設計 1.11節 關於system call,並不需要什麼特別的呼叫方式,直接調就好了,open,close,lseek什麼的全都是syst...

為什麼普及 Linux 桌面作業系統這麼難呢?

Matrix Man 因為大多數電腦使用者並不是喜歡coding的。這個時候操作人性化 滑鼠,良好互動 非常重要,沒幾個人愛對著黑框工作。windows顧名思義就是為了桌面而生。 你說世界上有多少電腦使用者會自己安裝電腦系統?有多少裝系統的會安裝win以外的系統?說到底還是大廠壟斷 大多數人的第一台...