首頁技術(shù)文章正文

如何實(shí)現(xiàn)計算機(jī)多任務(wù)運(yùn)行?

更新時間:2020-10-07 來源:黑馬程序員 瀏覽量:

操作系統(tǒng)可以同時運(yùn)行多個任務(wù)。例如,計算機(jī)在同一時刻既可以使用瀏覽器上網(wǎng),又可以使用酷我播放音樂,還能掛著QQ工具聊天......所有的這些都體現(xiàn)了多任務(wù)運(yùn)行的現(xiàn)象。

現(xiàn)在,多核CPU已經(jīng)很普及了。即使使用過去的單核CPU,依然能同時運(yùn)行多個任務(wù),它是如何辦到的呢?答案是操作系統(tǒng)輪流讓每個任務(wù)交替執(zhí)行。例如,任務(wù)1執(zhí)行0.01秒以后,再切換到任務(wù)2執(zhí)行0.01秒......以此重復(fù)執(zhí)行下去,原理如圖1所示。由于CPU運(yùn)行的速度實(shí)在太快了,任務(wù)切換的速度我們的肉眼根本感知不到,所以從表面上來看,所有的任務(wù)是在同時運(yùn)行的。

1602056111788_多任務(wù)01.png

圖1中要執(zhí)行的任務(wù)有QQ、微信、郵箱、谷歌、酷我等,由于單核CPU每個時間點(diǎn)只能運(yùn)行一個任務(wù),所以按照時間片輪轉(zhuǎn)的方式(即任務(wù)切換一遍后又重復(fù)切換),讓每個任務(wù)執(zhí)行2us(舉例值)的時間,從而形成多個任務(wù)同時運(yùn)行的假象。

實(shí)際上真正地并行執(zhí)行多個任務(wù),只能在多核CPU上完成。不過,計算機(jī)要執(zhí)行的任務(wù)數(shù)量非常龐大,遠(yuǎn)遠(yuǎn)大于CPU內(nèi)核的數(shù)量,所以操作系統(tǒng)也會自動把任務(wù)輪流調(diào)度到每個核心上執(zhí)行。接下來,使用一張圖來分析多核CPU調(diào)度任務(wù)的原理,如圖2所示。


1602056124219_多任務(wù)02.png

圖2中,雙核CPU相當(dāng)于計算機(jī)有兩個單核,每個單核負(fù)責(zé)執(zhí)行一個任務(wù),這樣就能同時執(zhí)行兩個任務(wù)。當(dāng)這一批的任務(wù)運(yùn)行一段時間(2us)以后,會再分配另外一批任務(wù)繼續(xù)運(yùn)行,這樣就真正地形成了多任務(wù)的同時運(yùn)行。

上述延伸出兩個概念:并發(fā)和并行。從宏觀角度上來講,兩者都能夠同時處理多個任務(wù),但是兩者又有區(qū)別。并行是指兩個或者多個任務(wù)在同一時刻發(fā)生,而并發(fā)是指兩個或者多個任務(wù)在同一時間間隔內(nèi)發(fā)生。比如在某個時間段中,有若干個程序都處于已啟動運(yùn)行到運(yùn)行完畢之間的狀態(tài),某個時刻只能有一個程序運(yùn)行,這種現(xiàn)象就是并發(fā)。

這里面的“同時”、“并發(fā)”只是一種宏觀上的感受,實(shí)際上從微觀層面看只是進(jìn)程/線程的輪換執(zhí)行,由于切換的時間非常短,所以產(chǎn)生了一起執(zhí)行的感覺。

猜你喜歡:
Python培訓(xùn)課程

多線程爬蟲是什么?多線程爬蟲流程分析 

分享到:
在線咨詢 我要報名
和我們在線交談!