當前位置:
首頁 > 知識 > 技術分享:計算機程序類型

技術分享:計算機程序類型

計算機是個複雜的系統。在這裡,我們簡單粗暴地將計算機劃分為兩部分:中央處理單元CPU,和CPU的外圍子系統(內存、磁碟、網路等)。

在計算機工作過程中,如果CPU和外圍子系統沒有同時在工作,那麼,就有兩種可能:要麼是CPU在等待外圍子系統,要麼是外圍子系統在等待CPU。

從上文的表格中,我們看可以看到,CPU的速度是最快的,而外圍子系統則不同程度地比CPU慢。由於CPU速度極快,外圍子系統相對較慢,在許多情況下,CPU是空閑的,處於等待外圍請求的狀態。但是,有些時候,CPU非常忙碌,以至於不能及時處理來自外圍子系統的請求。這時,就反過來了,是外圍子系統在等待CPU。

計算機是用來執行程序的。計算機程序的類型多種多樣。對於程序來說,CPU、內存、磁碟、網路等都是供其使用的資源。不同的程序,通常都需要使用各種資源,但是重點使用的資源則有所不同。基於這一特點,可以把計算機程序劃分為以下類型。

CPU密集型:程序的執行時間,主要取決於CPU的處理能力;CPU的能力越強,程序就執行得越快。通俗的說,就是那些非常消耗CPU的程序。

內存密集型:程序的執行時間,主要取決於內存的容量;內存容量越大,程序就執行得越快。通俗的說,就是那些非常消耗內存的程序。

I/O密集型:程序的執行時間,主要取決於訪問和讀寫I/O(Input/Output)的效率。I/O訪問越快,讀寫越快,程序就執行得越快。通俗的說,就是那些需要頻繁進行I/O操作的程序。

程序的性能,符合「木桶原理」。所謂程序的性能短板,即瓶頸,指的是程序中存在某個模塊,其運行速度趕不上其餘模塊的腳步,從而拖累整個程序的性能。

程序的性能瓶頸可能有許多類型,常見的瓶頸有:

CPU瓶頸:當CPU非常繁忙,以至於它不能夠及時地響應外圍請求時,就出現了CPU瓶頸。此時,CPU的使用率非常高(超過80%),並且待處理的隊列很長。

內存瓶頸: 系統沒有足夠大,或者足夠快的內存。在這種情況下,內存為CPU提供服務的速度下降,從而影響整體的性能。當系統沒有足夠內存的時候,計算機會將存儲轉移到慢幾個數量級的硬碟上。由於大部分時間CPU可能處於等待內存的狀態,因此內存成為瓶頸時CPU的使用率可能處於較低的水平。

網路瓶頸:當通信的兩個設備之間的帶寬不高,或者某一端處理網路訪問請求的能力不行時,存在網路瓶頸。

磁碟瓶頸:在計算機內部,硬碟一般是很慢的器件。即使最快的硬碟,也存在物理上的速度限制。如果程序需要高頻地訪問硬碟,那麼磁碟將可能成為性能瓶頸。

程序瓶頸:有時候,系統的瓶頸是來源於程序本身的。也就是說,不是系統的資源不夠,而是程序沒有高效地利用這些資源。比如,現代計算機通常是多核的,而有些程序可能只利用了其中一個核;又比如,程序沒有釋放未使用的內存,那麼隨著程序的長時間運行,再大空間的內存也會被消耗殆盡(即所謂的內存泄漏)。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

推進微服務落地的 7 個步驟
面試官:「談談Spring中都用到了那些設計模式?」

TAG:千鋒JAVA開發學院 |