線程和進程的區別聯繫:
1,進程:子進程是父進程的複製品。子進程獲得父進程數據空間、堆和棧的複製品。
2,線程:相對於進程而言,線程是一個更加接近與執行體的概念,它可以與同進程的其他線程共享數據,但擁有自己的棧空間,擁有獨立的執行序列。
兩者都可以提高程序的併發度,提高程序運行效率和響應時間。
線程和進程在使用上各有優缺點:線程執行開銷小,但不利於資源管理和保護;而進程正相反。同時,線程適合於在SMP機器上運行,而進程則可以跨機器遷移。
根本區別就一點:用多進程處理技術,每個進程有自己的地址空間(address space),線程則共享地址空間。所有其它區別都是由此而來的:
1、速度:線程產生的速度快,線程間的通訊快、切換快等,因爲他們在同一個地址空間內。
2、資源利用率:線程的資源利用率比較好也是因爲他們在同一個地址空間內。
3、同步問題:線程使用公共變量/內存時需要使用同步機制還是因爲他們在同一個地址空間內
2、資源利用率:線程的資源利用率比較好也是因爲他們在同一個地址空間內。
3、同步問題:線程使用公共變量/內存時需要使用同步機制還是因爲他們在同一個地址空間內
1.定義
【進程】是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位.每一個進程都有一個自己的地址空間,即進程空間或(虛空間)。大小隻與處理機的位數有關,16位處理機的空間大小爲216,而 32 位處理機的進程空間大小爲 232 。進程至少有 5 種基本狀態,它們是:初始態,執行態,等待狀態,就緒狀態,終止狀態。單機系統中進程通信有 4 種形式:主從式,會話式,消息或郵箱機制,共享存儲區方式,管道(共享大量內存中的數據)。
【線程】是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧,非共享),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.
2.區別
1) 包含關係:一個程序至少有一個進程,一個進程至少有一個線程.
2) 內存共享:進程在執行過程中擁有獨立的內存單元(一個進程崩潰後,在保護模式下不會對其它進程產生影響);而多個線程共享進程提供的內存(擁有自己的私有棧空間只是作爲運行需要的極少內存),從而極大地提高了程序的運行效率,但一個線程死掉就等於整個進程死掉。所以多進程的程序要比多線程的程序健壯。
3) 執行過程:進程獨立執行;線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
4) 從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
3.進程間通信