DMA(Direct Memory Access,直接內存存取)

在實現DMA傳輸時,是由DMA控制器直接掌管總線,因此,存在著一個總線控制權轉移問題。即DMA傳輸前,CPU要把總線控制權交給DMA控制器,而在結束DMA傳輸后,DMA控制器應立即把總線控制權再交回給CPU。一個完整的DMA傳輸過程必須經過下面的4個步驟:
1,DMA請求
2,DMA響應
3,DMA傳輸
4,DMA結束
DMA與cpu 使用內存的三種方式:
1.停止CPU訪問內存
2.周期挪用
3.DMA與CPU交替訪內
設備控制器不能通過 DMA 直接存儲到用戶空間,但通過利用上面提到的第一
項,則可以達到相同效果。把內核空間地址與用戶空間的虛擬地址映射到同一個物理地址,這樣,
DMA 硬件(只能訪問物理內存地址)就可以填充對內核與用戶空間進程同時可見的緩沖區(見圖)

這樣真是太好了,省去了內核與用戶空間的往來拷貝,但前提條件是,內核與用戶緩沖區必須
使用相同的頁對齊,緩沖區的大小還必須是磁盤控制器塊大?。ㄍǔ?512 字節磁盤扇區)的倍
數。操作系統把內存地址空間劃分為頁,即固定大小的字節組。內存頁的大小總是磁盤塊大小的倍
數,通常為 2 次冪(這樣可簡化尋址操作)。典型的內存頁為 1,024、2,048 和 4,096 字節。虛擬和
物理內存頁的大小總是相同的。