進程/線程介紹
一、進程
進程可以認為是程序執行時的一個實例.進程是系統進行資源分配的獨立的實體,且每個進程擁有獨立
的地址空間.一個進程無法直接訪問另一個進程的變量和數據結構,如果希望讓一個進程訪問另一個進程
的資源,需要使用進程間通信,比如:管道,有名管道,信號,信號量,消息隊列,套接字等.
一個進程可以擁有多個線程,每個線程使用其所屬進程的??臻g.線程和進程的一個主要區別是,同一程序內
的多個線程會共享部分狀態,多個線程可以讀寫同一塊內存(一個進程無法直接訪問另一進程的內存).同時
每個線程還擁有自己的寄存器和棧,其他線程可以讀寫這些棧內存.
線程是進程的一個特定執行路徑.一個線程修改了進程中的資源,它的兄弟線程可以立即看到這種變化.
以下是小結:
a.進程是系統進行資源分配的基本單位,有獨立的內存地址空間,是對某個數據集的執行過程;
線程是CPU調度的基本單元,沒有獨立地址空間有獨立的棧,局部變量,寄存器,程序計數器等.
b.創建進程的開銷大,包括創建虛擬地址空間等需要大量系統資源;創建線程開銷小,基本上只有一個內核對象和
一個堆棧.
c.一個進程切換開銷大,線程切換開銷小;進程間通信開銷大,線程間通信開銷小.
d.線程屬于進程,不能獨立執行.每一個進程至少有一個線程,稱為主線程.
二、調度和作業
三、進程并發和線程并發
浙公網安備 33010602011771號