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