進程和線程的區別如下:根本區別、開銷方面、所處環境、內存分配、包含關系。
1、根本區別
進程是操作系統資源分配的基本單位,而線程是任務調度和執行的基本單位。
2、開銷方面
進程之間切換開銷大,每個進程都有獨立的代碼和數據空間程序上下文;線程之間切換開銷小,線程可以看做輕量級的進程,同壹類線程***享代碼和數據空間,每個線程都有自己獨立的運行棧和程序計數器PC。
3、所處環境
在操作系統中能同時運行多個進程程序;而在同壹個進程程序中有多個線程同時執行通過CPU調度,在每個時間片中只有壹個線程執行。
4、內存分配
系統為每個進程分配不同的內存空間;而對線程而言,除CPU外,系統不會為線程分配內存線程所使用的資源來自其所屬進程的資源,線程組之間只能***享資源。
5、包含關系
線程是進程的壹部分,所以線程也被稱為輕權進程或者輕量級進程。
工作原理:
程是由進程控制塊,程序段,數據段三部分組成。壹個進程可以包含若幹線程(Thread),線程可以幫助應用程序同時做幾件事(比如壹個線程向磁盤寫入文件,另壹個則接收用戶的按鍵操作並及時做出反應,互相不幹擾)。
在程序被運行後,系統首先要做的就是為該程序進程建立壹個默認線程,然後程序可以根據需要自行添加或刪除相關的線程。是可並發執行的程序。
在壹個數據集合上的運行過程,是系統進行資源分配和調度的壹個獨立單位,也是稱活動、路徑或任務,它有兩方面性質:活動性、並發性。
進程可以劃分為運行,阻塞,就緒三種狀態,並隨壹定條件而相互轉化,就緒運行,運行阻塞,阻塞就緒。