作業系統 併發和並行的區別

2021-10-21 18:41:05 字數 1115 閱讀 9868

學習多執行緒的時候會遇到乙個名詞:併發。這是屬於作業系統中的詞彙,需要了解併發和並行的區別,從網上蒐集了幾種說法幫助理解。

併發是指乙個處理器同時處理多個任務。

並行是指多個處理器或者是多核的處理器同時處理多個不同的任務。

併發是邏輯上的同時發生(simultaneous),而並行是物理上的同時發生。

來個比喻:併發是乙個人同時吃三個饅頭,而並行是三個人同時吃三個饅頭。

並行(parallel):指在同一時刻,有多條指令在多個處理器上同時執行。就好像兩個人各拿一把鐵杴在挖坑,一小時後,每人乙個大坑。所以無論從微觀還是從巨集觀來看,二者都是一起執行的。

併發(concurrency):指在同一時刻只能有一條指令執行,但多個程序指令被快速的輪換執行,使得在巨集觀上具有多個程序同時執行的效果,但在微觀上並不是同時執行的,只是把時間分成若干段,使多個程序快速交替的執行。這就好像兩個人用同一把鐵杴,輪流挖坑,一小時後,兩個人各挖乙個小一點的坑,要想挖兩個大一點得坑,一定會用兩個小時。

並行在多處理器系統中存在,而併發可以在單處理器和多處理器系統中都存在,併發能夠在單處理器系統中存在是因為併發是並行的假象,並行要求程式能夠同時執行多個操作,而併發只是要求程式假裝同時執行多個操作(每個小時間片執行乙個操作,多個操作快速切換執行)。

當有多個執行緒在操作時,如果系統只有乙個cpu,則它根本不可能真正同時進行乙個以上的執行緒,它只能把cpu執行時間劃分成若干個時間段,再將時間段分配給各個執行緒執行,在乙個時間段的執行緒**執行時,其它執行緒處於掛起狀態.這種方式我們稱之為併發(concurrent)。

當系統有乙個以上cpu時,則執行緒的操作有可能非併發.當乙個cpu執行乙個執行緒時,另乙個cpu可以執行另乙個執行緒,兩個執行緒互不搶占cpu資源,可以同時進行,這種方式我們稱之為並行(parallel)。

作業系統 並行和併發

併發 concurrent 在作業系統中,是指乙個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同乙個cpu上執行。併發不是真正意義上的 同時進行 只是cpu把乙個時間段劃分成幾個時間片段 時間區間 然後在這幾個時間區間之間來回切換,由於cpu處理的速度非常快,只要時間間隔處理...

作業系統中的併發和並行

在計算機作業系統 第4版,湯子瀛 中,小標題 並行和併發 的父標題是 併發 經過學習,我的理解是並行是併發的子集,併發是包含並行的含義的。計算機作業系統 中是這樣定義和區分併發和並行的 並行性和併發性是既相似又有區別的兩個概念。並行性是指兩個或多個事件在同一時刻發生。而併發性是指兩個或多個事件在同一...

OS作業系統中的併發與並行

併發與並行 從字面裡來講很容易混淆,現在總結一下。1.併發 指的是兩個或多個事件在同一時間間隔內發生。2.並行 指的是系統具有同時進行運算或操作的特性,在同一時刻能完成兩種或兩種以上的工作。並行性需要硬體的支援,比如流水線或者多處理機硬體環境。舉例子 1.如果你在9 00 9 10僅吃麵包,在9 1...