進程與線程的區別

  1. 進程

    執行中一段程序,即一旦程序被載入到內存中並準備執行,它就是一個進程。進程是表示資源分配的的基本概念,又是調度運行的基本單位,是系統中的併發執行的單位。

  2. 線程

    單個進程中執行中每個任務就是一個線程。線程是進程中執行運算的最小單位。

  3. 一個線程只能屬於一個進程,但是一個進程可以擁有多個線程。多線程處理就是允許一個進程中在同一時刻執行多個任務。
  4. 進程讓操作系統的併發性成爲了可能,而線程讓進程的內部併發成爲了可能。一個進程包含多個線程,但是這些線程共享進程佔有的內存地址空間和資源。進程是操作系統進行資源分配的基本單位(進程之間互不干擾),而線程是操作系統進行調度的基本單位(線程間互相切換)。
  5. 進程的三種狀態:

    運行 就緒 等待 三種狀態

  6. 進程線程的區別:
    一個進程是一個獨立(self contained)的運行環境,它可以被看作一個程序或者一個應用。而線程是在進程中執行的一個任務。

最大的區別是:是否單獨佔有內存地址空間
(共享,同步,可靠性,開銷)

1.進程單獨佔有一定的內存地址空間,所以進程間存在內存隔離,數據時分開的,數據共享複雜但是同步簡單,各個進程之間互不干擾;而線程共享所屬進程佔有的內存地址空間和資源,數據共享簡單,但是同步複雜。
2.進程單獨佔有一定的內存地址空間,一個進程出現問題不會影響其他進程,不影響主程序的穩定性,可靠性高;一個線程崩潰可能影響整個程序的穩定性,可靠性較低。
3.進程單獨佔有一定的內存地址空間,進程的創建和銷燬不僅需要保存寄存器和棧信息,還需要資源的分配回收以及頁調度,開銷較大;線程只需要保存寄存器和棧信息,開銷較小。
注意:進程是操作系統進行資源分配的基本單位(進程之間互不干擾),而線程是操作系統進行調度的基本單位(線程間互相切換)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章