CPU發(fā)出取指令請求時的地址是當前上下文的虛擬地址,MMU再從頁表中找到這個虛擬地址的物理地址,完成取指。同樣讀取數(shù)據(jù)的也是虛擬地址,比如mov ax, var. 編譯時var就是一個虛擬地址,也是通過MMU從也表中來找到物理地址,再產(chǎn)生總線時序,完成取數(shù)據(jù)的。
要釋放所申請的I/O內(nèi)存,應當使用release_mem_region()函數(shù):
void release_mem_region(unsigned longstart, unsigned long len)
申請一組I/O內(nèi)存后,調用ioremap()函數(shù):
void* ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags);