2011-05-14 20 views

回答

3

當一個進程被創建時,它被分配堆和堆棧內存。另一方面,線程只獲得堆棧並與父進程共享堆。這意味着即使您只考慮內存分配,創建進程比線程更「昂貴」。

子進程只是由另一個進程創建的進程。他們是獨立的並且擁有自己的記憶空間。這裏是an article that goes into some more detail

+0

但不是子進程分享它的父母記憶? – user559142 2011-05-14 18:38:26

+0

@user:一般來說,沒有。 – 2011-05-14 18:41:36

+0

好吧,所以唯一的主要成本是內存分配? – user559142 2011-05-14 18:43:02

2

回答這個問題可能是非常依賴於操作系統的,但一般規則:

過程的
  1. 線程住在同一個虛擬內存空間爲他們的父母。因此,創建線程比創建進程要便宜,因爲底層操作系統不需要創建完整的虛擬內存空間。

  2. 一個子進程只是父進程產生的另一個進程。

+0

如果子進程是父進程的副本,它是否不共享相同的虛擬內存空間? – user559142 2011-05-14 18:41:43

+1

@ user559142否;這是區分的一點。 – 2011-05-14 18:43:02

+0

子過程只是生活在自己空間中的另一個過程。 :) – sitifensys 2011-05-14 18:48:15