摘要:并發(fā)與并行是兩個(gè)既相似而又不相同的概念:并發(fā)性,又稱共行性,是指能處理多個(gè)同時(shí)性活動(dòng)的能力;并行是指同時(shí)發(fā)生的兩個(gè)并發(fā)事件,具有并發(fā)的含義,而并發(fā)則不一定并行,也亦是說(shuō)并發(fā)事件之間不一定要同一時(shí)刻發(fā)生。
并行介紹
并行在操作系統(tǒng)中是指,一組程序按獨(dú)立異步的速度執(zhí)行,不等于時(shí)間上的重疊(同一個(gè)時(shí)刻發(fā)生)。
并發(fā)介紹
并發(fā)是指:在同一個(gè)時(shí)間段內(nèi),兩個(gè)或多個(gè)程序執(zhí)行,有時(shí)間上的重疊(宏觀上是同時(shí),微觀上仍是順序執(zhí)行)。
并發(fā)的實(shí)質(zhì)是一個(gè)物理CPU(也可以多個(gè)物理CPU) 在若干道程序之間多路復(fù)用,并發(fā)性是對(duì)有限物理資源強(qiáng)制行使多用戶共享以提高效率。
操作系統(tǒng)并發(fā)程序執(zhí)行的特點(diǎn):
并發(fā)環(huán)境下,由于程序的封閉性被打破,出現(xiàn)了新的特點(diǎn): ①程序與計(jì)算不再一一對(duì)應(yīng),一個(gè)程序副本可以有多個(gè)計(jì)算
?、诓l(fā)程序之間有相互制約關(guān)系,直接制約體現(xiàn)為一個(gè)程序需要另一個(gè)程序的計(jì)算結(jié)果,間接制約體現(xiàn)為多個(gè)程序競(jìng)爭(zhēng)某一資源,如處理機(jī)、緩沖區(qū)等。
?、鄄l(fā)程序在執(zhí)行中是走走停停,斷續(xù)推進(jìn)的
并發(fā)和并行的作用
通過(guò)并發(fā)和并行能夠使得應(yīng)用程序可以充分利用多核以及GPU的計(jì)算能力,從而提高應(yīng)用程序的性能,比如在以下幾個(gè)方面中:
1.使用異步I/O操作可以提高應(yīng)用程序的響應(yīng)性。大多數(shù)的GUI應(yīng)用程序都是用單個(gè)線程來(lái)控制所有UI界面的更新。UI線程不應(yīng)該被占用過(guò)長(zhǎng)時(shí)間,不然UI界面就會(huì)失去對(duì)用戶的響應(yīng)。
2.跨多線程的并行工作可以更好的利用系統(tǒng)的資源。具有多CPU和GPU的現(xiàn)代計(jì)算機(jī),通過(guò)并行可以指數(shù)級(jí)的提高CPU計(jì)算受限的應(yīng)用程序的性能。
3.同時(shí)執(zhí)行多個(gè)I/O操作(如同時(shí)從多個(gè)網(wǎng)站上獲取信息)可以提高總體的吞吐量(throughput),等待I/O相應(yīng)的操作可以用來(lái)發(fā)起新的操作,或者是處理操作返回的結(jié)果。
并行和并發(fā)區(qū)別
區(qū)別一:
并發(fā)是指一個(gè)處理器同時(shí)處理多個(gè)任務(wù)。并行是指多個(gè)處理器或者是多核的處理器同時(shí)處理多個(gè)不同的任務(wù)。并發(fā)是邏輯上的同時(shí)發(fā)生(simultaneous),而并行是物理上的同時(shí)發(fā)生。
來(lái)個(gè)比喻:并發(fā)是一個(gè)人同時(shí)吃三個(gè)饅頭,而并行是三個(gè)人同時(shí)吃三個(gè)饅頭。
區(qū)別二:
并行(parallel):指在同一時(shí)刻,有多條指令在多個(gè)處理器上同時(shí)執(zhí)行。就好像兩個(gè)人各拿一把鐵锨在挖坑,一小時(shí)后,每人一個(gè)大坑。所以無(wú)論從微觀還是從宏觀來(lái)看,二者都是一起執(zhí)行的。
并發(fā)(concurrency):指在同一時(shí)刻只能有一條指令執(zhí)行,但多個(gè)進(jìn)程指令被快速的輪換執(zhí)行,使得在宏觀上具有多個(gè)進(jìn)程同時(shí)執(zhí)行的效果,但在微觀上并不是同時(shí)執(zhí)行的,只是把時(shí)間分成若干段,使多個(gè)進(jìn)程快速交替的執(zhí)行。這就好像兩個(gè)人用同一把鐵锨,輪流挖坑,一小時(shí)后,兩個(gè)人各挖一個(gè)小一點(diǎn)的坑,要想挖兩個(gè)大一點(diǎn)得坑,一定會(huì)用兩個(gè)小時(shí)。
并行在多處理器系統(tǒng)中存在,而并發(fā)可以在單處理器和多處理器系統(tǒng)中都存在,并發(fā)能夠在單處理器系統(tǒng)中存在是因?yàn)椴l(fā)是并行的假象,并行要求程序能夠同時(shí)執(zhí)行多個(gè)操作,而并發(fā)只是要求程序假裝同時(shí)執(zhí)行多個(gè)操作(每個(gè)小時(shí)間片執(zhí)行一個(gè)操作,多個(gè)操作快速切換執(zhí)行)。
區(qū)別三:
當(dāng)有多個(gè)線程在操作時(shí),如果系統(tǒng)只有一個(gè)CPU,則它根本不可能真正同時(shí)進(jìn)行一個(gè)以上的線程,它只能把CPU運(yùn)行時(shí)間劃分成若干個(gè)時(shí)間段,再將時(shí)間段分配給各個(gè)線程執(zhí)行,在一個(gè)時(shí)間段的線程代碼運(yùn)行時(shí),其它線程處于掛起狀態(tài)。這種方式我們稱之為并發(fā)(Concurrent)。
當(dāng)系統(tǒng)有一個(gè)以上CPU時(shí),則線程的操作有可能非并發(fā)。當(dāng)一個(gè)CPU執(zhí)行一個(gè)線程時(shí),另一個(gè)CPU可以執(zhí)行另一個(gè)線程,兩個(gè)線程互不搶占CPU資源,可以同時(shí)進(jìn)行,這種方式我們稱之為并行(Parallel)。
總結(jié)
總得來(lái)說(shuō)并行與并發(fā)各有其特點(diǎn),要說(shuō)它們兩者哪個(gè)更好,則因情況而定。
評(píng)論
查看更多