進程與線程的定義以及對多線程、多進程、併發和並行的理解

1、定義瀏覽器

進程:指在系統中能獨立運行並做爲資源分配的基本單位,它是由一組機器指令、數據和堆棧等組成的,是一個能獨立運行的活動實體。多線程

線程:線程是進程中的一個實體,做爲系統調度和分派的基本單位。Linux下的線程看做輕量級進程。併發

圖解定義:編輯器

進程的三態模型:性能

(1)運行:當一個進程在處理機上運行時,則稱該進程處於運行狀態。處於此狀態的進程的數目小於等於處理器的數目,對於單處理機系統,處於運行狀態的進程只有一個。在沒有其餘進程能夠執行時(如全部進程都在阻塞狀態),一般會自動執行系統的空閒進程。
(2)就緒:當一個進程得到了除處理機之外的一切所需資源,一旦獲得處理機便可運行,則稱此進程處於就緒狀態。就緒進程能夠按多個優先級來劃分隊列。例如,當一個進程因爲時間片用完而進入就緒狀態時,排入低優先級隊列;當進程由I/O操做完成而進入就緒狀態時,排入高優先級隊列。
(3)阻塞:也稱爲等待或睡眠狀態,一個進程正在等待某一事件發生(例如請求I/O而等待I/O完成等)而暫時中止運行,這時即便把處理機分配給進程也沒法運行,故稱該進程處於阻塞狀態。操作系統

進程的五態模型:線程

(4)新建態:對應於進程剛剛被建立時沒有被提交的狀態,並等待系統完成建立進程的全部必要信息。 進程正在建立過程當中,還不能運行。操做系統在建立狀態要進行的工做包括分配和創建進程控制塊表項、創建資源表格(如打開文件表)並分配資源、加載程序並創建地址空間表等。建立進程時分爲兩個階段,第一個階段爲一個新進程建立必要的管理信息,第二個階段讓該進程進入就緒狀態。因爲有了新建態,操做系統每每能夠根據系統的性能和主存容量的限制推遲新建態進程的提交。
(5)終止態:進程已結束運行,回收除進程控制塊以外的其餘資源,並讓其餘進程從進程控制塊中收集有關信息(如記賬和將退出代碼傳遞給父進程)。相似的,進程的終止也可分爲兩個階段,第一個階段等待操做系統進行善後處理,第二個階段釋放主存。 隊列

2、抽象理解進程

線程:若是把線程比喻爲一條線,那麼每句代碼就好像一個點,線程的工做就是從開始的點走到結束的點。事件

多線程:就好像是有多條線,多條線"同時走"(宏觀上),有的先開始,有的後開始,有的先結束,有的後結束。

進程:能夠看作是由一條線或者更多條線組成的平面圖形,全部的線程都有一個本身的進程,也可能多個線程擁有同一個進程。

多進程:由多個平面圖形組成的立體圖形

注:單CPU時"同時走"按照操做系統理論嚴格來講,多線程並非多個線程一塊兒運行的,只是運行線程的切換極快,幾乎能夠當作是並行運行,也能夠說同時運行,但實際上並非同時的。多核或者多CPU是可能達到"同時走"

3、事例說明

多線程:迅雷下載的任務可以多個一塊兒下載,而不是一個下載完成後纔開始下載第二個,或者說在瀏覽器中能一邊聽音樂一邊瀏覽網頁

多進程:同時執行多個程序,如同時運行Word編輯器,QQ等程序

4、併發,並行

並行:當有多個CPU或者是多核CPU時纔有可能實現並行,並行就是多個線程或者多個進程同時運行

併發:單個CPU(也能夠多個CPU)將多個線程中的每一個線程(多個進程中的每一個進程)按時間分爲一個一個的時間片,每個時刻只執行某個線程(進程)的時間片,時間片過時後轉而執行下一個線程(進程)的時間片

注:併發宏觀上看起來像是並行可是微觀上並不能作到並行

相關文章
相關標籤/搜索