DMA(direct memory access)直接內存訪問

  • DMA 其實是盜用了總線時間來傳輸數據,並且因爲是硬件處理,因此大大加速了數據複製速度!

1. 基本概念

  • 輔存狹義上是平時講的硬盤,準確地說,是外部存儲器(須要經過 I/O 系統與之交換數據,全稱爲輔助存儲設備)。
  • RAM 與 ROM:計算機內存儲器的兩種型號 
    • RAM-RamdomAccessMemory易揮發性隨機存取存儲器,高速存取,讀寫時間相等,且與地址無關,如計算機內存等。
    • ROM-Read Only Memory只讀存儲器。斷電後信息不丟失,如計算機啓動用的 BIOS 芯片。存取速度很低,(較RAM而言)且不能改寫。因爲不能改寫信息,不能升級,現已不多使用。
    • ROM 和 RAM 是計算機內存儲器的兩種型號,ROM表示的是隻讀存儲器,即:它只能讀出信息,不能寫入信息,計算機關閉電源後其內的信息仍舊保存,通常用它存儲固定的系統軟件和字庫等。RAM表示的是讀寫存儲器,可其中的任一存儲單元進行讀或寫操做,計算機關閉電源後其內的信息將不在保存,再次開機須要從新裝入,一般用來存放操做系統,各類正在運行的軟件、輸入和輸出數據、中間結果及與外存交換信息等,咱們常說的內存主要是指RAM

2. CPU 操做外設:傳統方式與 DMA 方式

一直不明白DMA(直接內存存儲)dom

  • 傳統方式:CPU 操做外設時,將外設的數據讀到內部寄存器中,再將數據傳送至內存中,之因此還要講數據送到內存,在於 CPU 內部寄存器數量不多,通常都是靠 RAM 來臨時存儲大量的代碼和數據的。 
    • CPU 工做的核心就是一個 PC 指針,PC 指針指向什麼地址,CPU 就會把相應地址處的二進制數據送至內部譯碼器進行譯碼後運行,
    • RAM 是一個臨時存放代碼和數據的地方,CPU 要執行代碼時,就要到內存(RAM)中去取指令。
  • DMA:在現代操做系統中,外設有數據到來時,基本上都採用中斷方式通知CPU,操做系統響應中斷,而後再從外設讀取數據,這時,若是外設的數據比較頻繁,那麼是否每到一個數據都中斷一次呢??這樣 CPU 就很是頻繁地被外調中斷打斷,操做系統在處理中斷時要浪費必定時間,並且 CPU 讀外部 IO 速度也很慢,這樣的話,大量時間被用在了響應中斷上,而去調度其它任務的時間減小,讓人感受系統響應速度不夠,也會影響外設的數據傳輸速度(若是外設傳輸速度太快,操做系統就有可能丟失部分數據),由此引出 DMA 的機制:spa

    外設直接將一塊數據放在了 RAM 中,而後再產生一次中斷,這樣操做系統直接將內存中的那塊數據傳給想要獲取這塊數據的一個任務(或者放在內存的另外一空閒部分),此時,系統就少了頻繁響應外設中斷的開銷,也少了讀取外設 IO 的時間開銷(讀取 RAM 比讀取外設 IO 要快不少),這就是 DMA 的做用所在!操作系統

相關文章
相關標籤/搜索