更新時間:2020-10-07 來源:黑馬程序員 瀏覽量:
操作系統(tǒng)可以同時運行多個任務。例如,計算機在同一時刻既可以使用瀏覽器上網(wǎng),又可以使用酷我播放音樂,還能掛著QQ工具聊天......所有的這些都體現(xiàn)了多任務運行的現(xiàn)象。
現(xiàn)在,多核CPU已經(jīng)很普及了。即使使用過去的單核CPU,依然能同時運行多個任務,它是如何辦到的呢?答案是操作系統(tǒng)輪流讓每個任務交替執(zhí)行。例如,任務1執(zhí)行0.01秒以后,再切換到任務2執(zhí)行0.01秒......以此重復執(zhí)行下去,原理如圖1所示。由于CPU運行的速度實在太快了,任務切換的速度我們的肉眼根本感知不到,所以從表面上來看,所有的任務是在同時運行的。
圖1中要執(zhí)行的任務有QQ、微信、郵箱、谷歌、酷我等,由于單核CPU每個時間點只能運行一個任務,所以按照時間片輪轉的方式(即任務切換一遍后又重復切換),讓每個任務執(zhí)行2us(舉例值)的時間,從而形成多個任務同時運行的假象。
實際上真正地并行執(zhí)行多個任務,只能在多核CPU上完成。不過,計算機要執(zhí)行的任務數(shù)量非常龐大,遠遠大于CPU內核的數(shù)量,所以操作系統(tǒng)也會自動把任務輪流調度到每個核心上執(zhí)行。接下來,使用一張圖來分析多核CPU調度任務的原理,如圖2所示。
圖2中,雙核CPU相當于計算機有兩個單核,每個單核負責執(zhí)行一個任務,這樣就能同時執(zhí)行兩個任務。當這一批的任務運行一段時間(2us)以后,會再分配另外一批任務繼續(xù)運行,這樣就真正地形成了多任務的同時運行。
上述延伸出兩個概念:并發(fā)和并行。從宏觀角度上來講,兩者都能夠同時處理多個任務,但是兩者又有區(qū)別。并行是指兩個或者多個任務在同一時刻發(fā)生,而并發(fā)是指兩個或者多個任務在同一時間間隔內發(fā)生。比如在某個時間段中,有若干個程序都處于已啟動運行到運行完畢之間的狀態(tài),某個時刻只能有一個程序運行,這種現(xiàn)象就是并發(fā)。
這里面的“同時”、“并發(fā)”只是一種宏觀上的感受,實際上從微觀層面看只是進程/線程的輪換執(zhí)行,由于切換的時間非常短,所以產(chǎn)生了一起執(zhí)行的感覺。
猜你喜歡:
Python培訓課程