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以外的系統?說到底還是大廠壟斷 大多數人的第一台...