1.2 作業系統的第二個功能——併發功能 -《zobolの作業系統學習札記》
1.2 作業系統的第二個功能——併發功能
歡迎訪問:作者個人部落格-zobolの計算機作業系統學習札記
目錄在虛擬化技術的基礎上,我們可以實現併發功能。
問1:什麼是併發功能?併發功能是必要的嗎?
粗略地講,併發功能就是同時做多件事情的能力。
現實中我們遇到的很多問題,都是可以同時計算的,如果我們的計算機作業系統有併發功能那麼就可以節省時間,比如GPU的誕生
沒有併發功能,很多實時性的任務,計算機系統都將無法完成。
我們也無法實現一邊聽歌,一邊上網。
問2:併發功能必須要求擁有多核CPU嗎?
不是,併發功能是建立在虛擬化技術的基礎上的,併發的程序數和執行緒數跟CPU的數量無關。就算只有一個單核CPU,作業系統依然可以使用併發功能,實現多執行緒同步操作。
問3:多核CPU和單核CPU對併發功能的實現,有影響嗎?
但是如果計算機系統有多核CPU,作業系統可以擁有更多的執行緒數量,從而更好地實現並行同步上網聽歌功能。此外多核CPU可以實現絕對的平行計算。
比如假如有兩個任務,A需要3分鐘,B需要5分鐘。作業系統都可以實現讓使用者感覺這兩個任務是同時執行的。但是單核CPU的總執行時間一定是大於等於8分鐘的,多核CPU卻可以實現大於等於5分鐘。
畢竟雖然實現了將硬體資源虛擬化,但硬體資源的總量還是固定不變的,單核CPU的計算力未必小於多核CPU,但是底層無法實現真正的多核計算,肯定實際上還是單行計算的。
問4:併發功能的併發性是絕對的,還是相對的?
大多數情況下都是相對於我們人類感知來講的並行,也有少部分情況下,是絕對的。
假如是單核CPU,那麼從硬體層面一定是單向的,無法進行平行計算操作。但是作業系統通過不斷的切換執行緒,可以實現一種偽並行,讓使用者感覺好像是在同時執行多個執行緒。其實底層還是計算一會A,停下來,計算一會B,只是間隔短人類感受不到。
假如是多核CPU,那麼作業系統可以將兩個任務分配個兩個計算核心,這樣硬體層就實現了絕對的併發性。不過,作業系統的執行緒數一般都是遠大於CPU核心數,所以大多數情況多核也是作業系統提供的相對併發性。
是否能否實現真併發,取決於硬體層能否支援平行計算。硬體的平行計算典型就是GPU
問5:GPU顯示卡的併發性是如何實現的?
GPU就是我們平常使用的顯示卡,用來進行圖形計算或矩陣計算。我們一般買的CPU上都會贈送一個整合顯示卡,沒有顯示卡,我們的計算機螢幕會一片漆黑。
GPU就是特異化的CPU,是矩陣化數量核數的CPU。
圖形現實本身是要消耗一定計算能力的(實際佔比還不小),早期黑框框的DOS介面一般CPU自己的線性計算能力就能承擔。但是隨著現代的介面視覺化和各種三維遊戲的出現導致對新的並行圖形計算能力的需求出現。
每一個二維影象都可以看作是一個矩陣,如果我們每一個矩陣元素都用一個CPU去平行計算,就可以花費計算一個畫素的時間,計算出整個影象的資料。
GPU可以看作是由矩陣化數量(比如300×500個)CPU核心的整合,每一個核心的計算能力有限,專門為圖形矩陣計算做了硬體優化。
GPU是並行,併發性的最典型例子。作業系統的併發性主要是靠複用思想,時間片輪轉思想,執行緒程序思想、
虛擬記憶體思想以及多核CPU等技術共同實現的。