0
當CPU處於保護模式時,它預計所有地址都是虛擬的。內核駐留在物理內存中,並將物理地址用於內部目的。在開發驅動程序驅動程序框架例程時,必須訪問具有特定物理地址(關於該設備的內存映射地址)的某些內存位置。那麼什麼機制允許在保護模式下使用物理地址?保護模式和物理地址
當CPU處於保護模式時,它預計所有地址都是虛擬的。內核駐留在物理內存中,並將物理地址用於內部目的。在開發驅動程序驅動程序框架例程時,必須訪問具有特定物理地址(關於該設備的內存映射地址)的某些內存位置。那麼什麼機制允許在保護模式下使用物理地址?保護模式和物理地址
驅動程序框架或API會告訴你這些。我一直使用windriver(http://www.jungo.com/)來編寫PCI驅動程序。當你使用這個API分配內存時,它會給你兩個地址,一個是對應用有效的虛擬地址,另一個是你給設備的物理地址。其他框架/ apis很可能也會這樣做。
我問的不是一點點。我的意思是硬件方面的這個問題,而不考慮某些驅動程序框架的細節。 CPU不能在保護模式下使用物理地址,所以它將命令發送到DMA控制器來進行數據傳輸?如果DMA使用物理地址,它就會釋放它的存在(事實上,CPU可以執行一些計算,而DMA管理RAM和端口訪問)。除Linux內核源碼外,是否還有關於使用DMA的文檔? – igntec