1)線程是什麼網絡
2)引入線程有什麼用併發
3)爲何引入線程spa
20世紀60年代提出進程的概念,在操做系統中一直都是以進程做爲獨立運行的單位操作系統
20世紀80年代中期,在操做系統領域,提出了比進程更小的能獨立運行的基本單位---線程線程
1)爲了使多個程序併發執行 進程
2)改善資源利用率圖片
3)提升系統吞吐量內存
從內存管理的角度看資源
一個系統多個進程,他們都會使用內存,爲了確保內存互不影響,內存大小位置都是固定的;內存管理
進程間互相不影響,一個進程崩潰了,不影響其餘進程
你能夠在window系統上邊一邊聽音樂,一邊玩QQ,
聽音樂開個一個進程,玩QQ開個一個進程
1)提升系統的併發性
若是咱們把運行在操做系統的程序,好比QQ看做一個進程,那麼程序執行不可能一個分支,
你可能用來傳輸文字A,發送圖片B
具體的執行就是
1) QQ獲取CPU上下文
2)開始執行QQ中的傳輸文件A
3)執行QQ中的發送圖片B
4)CPU保存QQ的上下文
執行A B時共享了QQ的資源,CPU沒有進行上下文切換 A B就是線程
咱們首先從進程談起,進程有兩個基本屬性
1)進程是一個能夠擁有資源的獨立單位
2)進程同時也是一個能夠獨立調度和分配的基本單位
所謂的資源就是計算機裏的中央處理器,內存,文件,網絡等等。
因此進程能夠併發執行
爲了使線程能夠併發執行,系統還必須進行以下操做
1)建立進程
系統在建立進程時,必須分配必須的,除處理機之外的全部資源;
內存空間;IO設備,進程控制塊PCB
2)撤銷進程
系統在撤銷進程時,必須對這些資源進行回收,並撤銷PCB塊
3)進程切換
在對線程進行切換時,須要保存當前進程的CPU環境和須要切換的進程的CPU上下文
思考?
是否能夠把進程的兩個屬性分開,
做爲系統獨立調度和分配和單元,而不獨立分配資源,產生了線程
在引入線程的系統中,線程是進程的一個實體,是被系統獨立調度和分配的基本單位,
線程本身不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧)
但它能夠和同屬同一個進程的其餘線程共享進程的所有資源
一個線程能夠建立和撤銷另外一個線程
同一進程的多個線程能夠併發執行
因爲線程之間相互制約,線程運行時會出現間斷
線程通常擁有就緒 阻塞 執行三種基本狀態
有些系統可能線程還有終止狀態