進程和線程有什麼區別

定義

進程

是具備必定獨立功能的程序、它是系統進行資源分配和調度的一個獨立單位,重點在系統調度和單獨的單位,也就是說進程是能夠獨 立運行的一段程序。函數

線程

線程進程的一個實體,是CPU調度和分派的基本單位,他是比進程更小的能獨立運行的基本單位,線程本身基本上不擁有系統資源。在運行時,只是暫用一些計數器、寄存器和棧 。線程

關係

  1. 一個線程只能屬於一個進程,而一個進程能夠有多個線程,但至少有一個線程(一般說的主線程)。
  2. 資源分配給進程,同一進程的全部線程共享該進程的全部資源。用戶進程主要段segment:stack(向低地址),heap,.rodata,data/bss,.text。一個進程,上面的5部分是主要的,必須的。線程只擁有stack(線程棧,線程棧是單個線程所獨享的,2M),保存本身的函數調用過程,好比heap,.rodata,data/bss,text段都是共享的。
  3. 線程在執行過程當中,須要協做同步。不一樣進程的線程間要利用消息通訊的辦法實現同步。
  4. 處理機分給線程,即真正在處理機上運行的是線程。
  5. 線程是指進程內的一個執行單元,也是進程內的可調度實體。

區別

  1. 調度:線程做爲調度和分配的基本單位,進程做爲擁有資源的基本單位。
  2. 併發性:不只進程之間能夠併發執行,同一個進程的多個線程之間也能夠併發執行。
  3. 擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但能夠訪問隸屬於進程的資源。
相關文章
相關標籤/搜索