時間:2014.06.25
地點:基地
-------------------------------------------------------------------------
一、簡述
進程Process和線程Thread是操作系統的基本概念,抽象而重要。以下從幾個方面來分析進程和線程的區別。
-------------------------------------------------------------------------
二、分析
進程可認爲是程序執行時的一個實例,是系統進行資源分配的獨立實體,每個進程擁有獨立的地址空間,所以一個進程無法直接訪問另一個進程的變量和數據結構。如果希望讓一個進程訪問另一個進程的資源,需要使用進程間通信,比如:共享存儲系統,消息傳遞系統,管道通信系統等。
線程是進程的一個特定執行路徑,當一個線程修改了進程中的資源時,其兄弟線程可以立即看到這種變化。
-------------------------------------------------------------------------
三、總結
1.進程是系統進行資源分配的基本單位,有獨立的內存地址空間;線程是CPU調度的基本單位,沒有單獨的地址空間,有獨立的棧,局部變量,寄存器和程序計數器等。2.創建進程的開銷大,包括創建虛擬地址空間等需要大量的系統資源;創建線程的開銷小,基本上只有一個內核對象和一個堆棧。
3.一個進程無法直接訪問另一個進程的資源;同一個進程內的多個線程共享進程的資源
4.進程的切換開銷大,線程的切換開銷下;進程間通信開銷大,線程間通信開銷小。
5.線程屬於進程,不能獨立執行,每個進程至少有一個線程,即主線程。