進程和線程的區別


進程和線程的區別

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

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

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

為什么會有線程?

  每個進程都有自己的地址空間,即進程空間,在網絡或多用戶換機下,一個服務器通常需要接收大量不確定數量用戶的並發請求,為每一個請求都創建一個進程顯然行不通(系統開銷大響應用戶請求效率低),因此操作系統中線程概念被引進。

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

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

進程線程的區別:

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

     一個進程崩潰后,在保護模式下不會對其他進程產生影響,但是一個線程崩潰整個進程都死掉。所以多進程要比多線程健壯

     進程切換時,消耗的資源大,效率高。所以涉及到頻繁的切換時,使用線程要好於進程。同樣如果要求同時進行並且又要共享某些變量的並發操作,只能用線程不能用進程

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

優缺點:

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

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

何時使用多進程,何時使用多線程?

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

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

 

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM