進程和線程的區別

進程和線程的區別

進程:是併發執行的程序執行過程當中分配和管理資源的基本單位,是一個動態概念,競爭計算機系統資源的基本單位。html

線程:是進程的一個執行單元,是進程內科調度實體。比進程更小的獨立運行的基本單位線程也被稱爲輕量級進程服務器

一個程序至少一個進程,一個進程至少一個線程。
網絡

爲何會有線程?多線程

  每一個進程都有本身的地址空間,即進程空間,在網絡或多用戶換機下,一個服務器一般須要接收大量不肯定數量用戶的併發請求,爲每個請求都建立一個進程顯然行不通(系統開銷大響應用戶請求效率低),所以操做系統中線程概念被引進。併發

  • 線程的執行過程是線性的,儘管中間會發生中斷或者暫停,可是進程所擁有的資源只爲改線狀執行過程服務,一旦發生線程切換,這些資源須要被保護起來。
  • 進程分爲單線程進程和多線程進程,單線程進程宏觀來看也是線性執行過程,微觀上只有單一的執行過程。多線程進程宏觀是線性的,微觀上多個執行操做。

線程的改變只表明CPU的執行過程的改變,而沒有發生進程所擁有的資源的變化。 spa

進程線程的區別:操作系統

  • 地址空間:同一進程的線程共享本進程的地址空間,而進程之間則是獨立的地址空間。
  • 資源擁有:同一進程內的線程共享本進程的資源如內存、I/O、cpu等,可是進程之間的資源是獨立的。

     一個進程崩潰後,在保護模式下不會對其餘進程產生影響,可是一個線程崩潰整個進程都死掉。因此多進程要比多線程健壯.net

     進程切換時,消耗的資源大,效率高。因此涉及到頻繁的切換時,使用線程要好於進程。一樣若是要求同時進行而且又要共享某些變量的併發操做,只能用線程不能用進程線程

  • 執行過程:每一個獨立的進程程有一個程序運行的入口、順序執行序列和程序入口。可是線程不能獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
  • 線程是處理器調度的基本單位,可是進程不是。
  • 二者都可併發執行。

優缺點:htm

  線程執行開銷小,可是不利於資源的管理和保護。線程適合在SMP機器(雙CPU系統)上運行。

  進程執行開銷大,可是可以很好的進行資源管理和保護。進程能夠跨機器前移。

什麼時候使用多進程,什麼時候使用多線程?

對資源的管理和保護要求高,不限制開銷和效率時,使用多進程。

要求效率高,頻繁切換時,資源的保護管理要求不是很高時,使用多線程。

 

參考:http://blog.csdn.net/yaosiming2011/article/details/44280797

   http://www.cnblogs.com/flashsky/articles/642720.html

相關文章
相關標籤/搜索