概念I/O系統,英文全稱爲「Input output system」,中文全稱爲「輸入輸出系統」,由輸入輸出控制系統和外圍設備兩部分組成,是計算機系統的重要組成部分。在計算機系統中,一般把處理器和主存儲器以外的部分稱爲輸入輸出系統。針對不一樣的操做對象,能夠劃分爲磁盤I/O模型,網絡I/O模型,內存映射I/O, Direct I/O、數據庫I/O等,只要具備輸入輸出類型的交互系統均可以認爲是I/O系統,也能夠說I/O是整個操做系統數據交換與人機交互的通道,這個概念與選用的開發語言沒有關係,是一個通用的概念。數據庫
當操做系統在把外部數據放到進程緩衝區的這段時間(即上述的第二步),若是應用進程是掛起等待的,那麼就是同步IO,反之,就是異步IO緩存
指的是系統的CPU效能相對硬盤/內存的效能要好不少,此時,系統運做,大部分的情況是 CPU 在等 I/O (硬盤/內存) 的讀/寫,此時 CPU Loading 不高。網絡
指的是系統的 硬盤/內存 效能 相對 CPU 的效能 要好不少,此時,系統運做,大部分的情況是 CPU Loading 100%,CPU 要讀/寫 I/O (硬盤/內存),I/O在很短的時間就能夠完成,而 CPU 還有許多運算要處理,CPU Loading 很高。在多重程序系統中,大部份時間用來作計算、邏輯判斷等CPU動做的程序。例如一個計算圓周率至小數點一千位如下的程序,在執行的過程中絕大部份時間用在三角函數和開根號的計算,即是屬於CPU bound的程序。多線程
計算密集型任務的特色是要進行大量的計算,消耗CPU資源,好比計算圓周率、對視頻進行高清解碼等等,全靠CPU的運算能力。這種計算密集型任務雖然也能夠用多任務完成,可是任務越多,花在任務切換的時間就越多,CPU執行任務的效率就越低,因此,要最高效地利用CPU,計算密集型任務同時進行的數量應當等於CPU的核心數。異步
計算密集型任務因爲主要消耗CPU資源,所以,代碼運行效率相當重要。Python這樣的腳本語言運行效率很低,徹底不適合計算密集型任務。對於計算密集型任務,最好用C語言編寫。函數
IO密集型任務執行期間,99%的時間都花在IO上,花在CPU上的時間不多,所以,用運行速度極快的C語言替換用Python這樣運行速度極低的腳本語言,徹底沒法提高運行效率。對於IO密集型任務,最合適的語言就是開發效率最高(代碼量最少)的語言,腳本語言是首選,C語言最差。spa
總之,計算密集型程序適合C語言多線程,I/O密集型適合腳本語言開發的多線程。操作系統