多進程與多線程的區別
多進程與多線程的區別
進程是程序在計算機上的一次執行活動。當你運行一個程序,你就啟動了一個進程。顯然,程序是死的(靜態的),進程是活的(動態的)。進程可以分為系統進程和用戶進程。凡是用於完成操作系統的各種功能的進程就是系統進程,它們就是處於運行狀態下的操作系統本身;所有由你啟動的進程都是用戶進程。進程是操作系統進行資源分配的單位。在Windows下,進程又被細化為線程,也就是一個進程下有多個能獨立運行的更小的單位。
在同一個時間裏,同一個計算機系統中如果允許兩個或兩個以上的進程處於運行狀態,這便是多任務。現代的操作系統幾乎都是多任務操作系統,能夠同時管理多個進程的運行。多任務帶來的好處是明顯的,比如你可以邊聽mp3邊上網,與此同時甚至可以將下載的文檔打印出來,而這些任務之間絲毫不會相互幹擾。那麽這裏就涉及到並行的問題,俗話說,一心不能二用,這對計算機也一樣,原則上一個CPU只能分配給一個進程,以便運行這個進程。我們通常使用的計算機中只有一個CPU,也就是說只有一顆心,要讓它一心多用,同時運行多個進程,就必須使用並發技術
- 總線程數<= CPU數量:並行運行
- 總線程數 > CPU數量:並發運行
並行運行的效率顯然高於並發運行,所以在多CPU的計算機中,多任務的效率比較高。但是,如果在多CPU計算機中只運行一個進程
(線程),就不能發揮多CPU的優勢。這裏涉及到多任務操作系統的問題,多任務操作系統(如Windows)基本原理是:操作系統將CPU
的時間片分配給多個線程,每個線程在操作系統指定的時間片內完成(註意,這裏的多個線程是分屬於不同進程的).操作系統不斷的從一個線程的執行切換到另一個線程的執行,如此往復,宏觀上看來,就好像是多個線程在一起執行.由於這多個線程分屬於不同的進程,因此在我們看來,就好像是多個進程在同時執行,這樣就實現了多任務。
----------------------------------------------------------
進程是資源分配的最小單位,線程是CPU調度的最小單位;進程編程調試簡單可靠性高,但是創建銷毀開銷大;線程正相反,開銷小,切換速度快,但是編程調試相對復雜。
多進程與多線程的區別