DMA:在現代操做系統中,外設有數據到來時,基本上都採用中斷方式通知CPU,操做系統響應中斷,而後再從外設讀取數據,這時,若是外設的數據比較頻繁,那麼是否每到一個數據都中斷一次呢??這樣 CPU 就很是頻繁地被外調中斷打斷,操做系統在處理中斷時要浪費必定時間,並且 CPU 讀外部 IO 速度也很慢,這樣的話,大量時間被用在了響應中斷上,而去調度其它任務的時間減小,讓人感受系統響應速度不夠,也會影響外設的數據傳輸速度(若是外設傳輸速度太快,操做系統就有可能丟失部分數據),由此引出 DMA 的機制:spa
外設直接將一塊數據放在了 RAM 中,而後再產生一次中斷,這樣操做系統直接將內存中的那塊數據傳給想要獲取這塊數據的一個任務(或者放在內存的另外一空閒部分),此時,系統就少了頻繁響應外設中斷的開銷,也少了讀取外設 IO 的時間開銷(讀取 RAM 比讀取外設 IO 要快不少),這就是 DMA 的做用所在!操作系統