基本概念
在計算機中,CPU的運行速度遠遠快於I/O設備的速度,當記憶體中僅有一道程式時,每逢該程式在運行中發出I/O請求後,CPU空閒,CPU等待I/O設備完成I/O請求的時間,稱為CPU空閒時間。作業系統採用了多種措施來利用和縮短CPU的空閒時間。除了CPU的空閒時間,計算機網路中也有空閒時間這個術語,主要套用在信道信息傳輸中。
空閒時間這個術語在計算機科學中是指等待時間,這裡並沒有指出哪個部分的等待時間。因為在計算機中不同對象的空閒時間的含義是不相同的。例如CPU空閒時間是指PU等待I/O設備完成I/O請求的時間。進程的空閒時間是指進程等待服務的時間,為了減少進程的空閒時間,會採用不同的調度算法。在異步串列通信中,空閒時間是指一個字元結束和下一個字元開始的時間間隔,這個時間可以持續任意長,但要求傳送方必須使線路空閒狀態至少達到某一最小時間,通常所選定的最小時間就是傳輸一位所需的時間 。
CPU空閒時間百分比
空閒時間百分比就是系統空閒進程所占的總的進程的百分比。
System idle Process 是WIN2000/xp以上系統所有的。System idle Process”進程其實是“系統空閒進程”,是在cpu空閒的時候,發出一個idle命令,使cpu掛起(暫時停止工作),可有效的降低CPU核心的溫度。在作業系統服務裡面,都沒有禁止它的選項,默認它是占用除了當前應用程式所分配的處理器(CPU)百分比之外的所有占用率,一旦應用程式發出請求,處理器會立刻回響的。在這個進程里出現的CPU占用數值並不是真正的占用而是體現的CPU的空閒率,也就說這個數值越大CPU的空閒率就越高,反之就是CPU的占用率越高。
原因及解決方案
CPU的空閒時間主要是因為CPU與於I/O設備運行速度不匹配造成的,在計算機中,CPU資源是十分寶貴的,要充分利用。一般是從利用CPU空閒時間和減少CPU空閒時間兩個方面來提出解決方案,常見的方法有多道程式、DMA和I/O通道。
多道程式
多道程式設計技術是在計算機記憶體中同時存放幾道相互獨立的程式,使它們在管理程式控制下,相互穿插運行,兩個或兩個以上程式在計算機系統中同處於開始到結束之間的狀態,,這些程式共享計算機系統資源。與之相對應的是單道程式,即在計算機記憶體中只允許一個的程式運行。特徵1)多道:即計算機記憶體中同時存放幾道相互獨立的程式。2)巨觀上並行:同時進入系統的幾道程式都處於運行過程中,即它們先後開始了各自的運行,但都未運行完畢。3)微觀上串列:從微觀上看,記憶體中的多道程式輪流地或分時地占有CPU。優點:1、提高CPU的利用率。在多道程式環境下,多個程式共享計算機資源當某個程式等待I/O操作時,CPU可以執行其他程式,大大提高CPU的利用率。2、提高設備的利用率。在多道程式環境下,多個程式共享系統的設備,大大提高系統設備的利用率。3、提高系統的吞吐量。在多道程式環境下,減少了程式的等待時間,提高了系統的吞吐量。
DMA
DMA(Direct Memory Access,直接記憶體存取) 是所有現代電腦的重要特色,它允許不同速度的硬體裝置來溝通,而不需要依賴於 CPU 的大量中斷負載。否則,CPU 需要從來源把每一片段的資料複製到暫存器,然後把它們再次寫回到新的地方。在這個時間中,CPU 對於其他的工作來說就無法使用。
DMA 傳輸將數據從一個地址空間複製到另外一個地址空間。當CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器來實行和完成。典型的例子就是移動一個外部記憶體的區塊到晶片內部更快的記憶體區。像是這樣的操作並沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對於高效能 嵌入式系統算法和網路是很重要的。
在實現DMA傳輸時,是由DMA控制器直接掌管匯流排,因此,存在著一個匯流排控制權轉移問題。即DMA傳輸前,CPU要把匯流排控制權交給DMA控制器,而在結束DMA傳輸後,DMA控制器應立即把匯流排控制權再交回給CPU。一個完整的DMA傳輸過程必須經過DMA請求、DMA回響、DMA傳輸、DMA結束4個步驟。
DMA技術的出現,使得外圍設備可以通過DMA控制器直接訪問記憶體,與此同時,CPU可以繼續執行程式.那么DMA控制器與CPU怎樣分時使用記憶體呢?通常採用以下三種方法:(1)停止CPU訪記憶體;(2)周期挪用;(3)DMA與CPU交替訪問記憶體。
I/O通道
I/O 通道方式是 DMA 方式的發展, 它可進一步減少 CPU 的干預, 即把對一個數據塊的讀(或寫)為單位的干預減少為對一組數據塊的讀(或寫)及有關的控制和管理為單位的干預。同時,又可實現 CPU、通道和 I/O 設備三者的並行操作,從而更有效地提高整個系統的資源利用率。例如,當 CPU 要完成一組相關的讀(或寫)操作及有關控制時,只需向 I/O 通道傳送一條 I/O 指令,以給出其所要執行的通道程式的首址和要訪問的 I/O 設備,通道接到該指令後,通過執行通道程式便可完成 CPU 指定的 I/O 任務 。