進程和線程的區別、多進程與多線程、並行與併發、多任務

進程和線程的區別:

1、一個程序至少有一個進程,一個進程至少有一個線程;

2、資源(內存、寄存器等)分配給進程,進程在執行過程擁有獨立的內存空間,而同一進程下的所有線程共享所有資源,從而提高程序的運行效率;

3、處理機分配給線程,即處理機真正運行的是線程;

4、線程在執行過程中,需要協作同步。不同線程間的要利用通信協議來實現同步。

進程是操作系統在運行一個程序時被抽象出來的,線程是從一個進程中分割出來的,cpu在處理線程時是時間片輪轉方式進行的。

進程是操作系統分配程序執行資源的單位,而進程是進程的一個實體,是CPU調度和分配的單位。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

操作系統在同一時間,執行兩個或兩個以上的程序,即允許兩個或兩個以上的進程(多進程)處於運行狀態,就是多任務。例如我們可以同時聊QQ、寫bolg、聽音樂等等就是多任務

如果一臺計算機有多個CPU,情況就不同了,如果進程數小於CPU數,則不同的進程可以分配給不同的CPU來運行,這樣,多個進程就是真正同時運行的,這便是並行。但如果進程數大於CPU數,則仍然需要使用併發技術。
在Windows中,進行CPU分配是以線程爲單位的,一個進程可能由多個線程組成,這時情況更加複雜,但簡單地說,有如下關係:
總線程數<= CPU數量:並行運行
總線程數> CPU數量:併發運行

並行運行的效率顯然高於併發運行,所以在多CPU的計算機中,多任務的效率比較高。但是,如果在多CPU計算機中只運行一個進程(線程),就不能發揮多CPU的優勢。

多任務操作系統(如Windows)的基本原理是:操作系統將CPU的時間片分配給多個線程,每個線程在操作系統指定的時間片內完成(注意,這裏的多個線程是分屬於不同進程的)。操作系統不斷的從一個線程的執行切換到另一個線程的執行,如此往復,宏觀上看來,就好像是多個線程在一起執行。由於這多個線程分屬於不同的進程,因此在我們看來,就好像是多個進程在同時執行,這樣就實現了多任務。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章