文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>CPU与内核访问物理页面

CPU与内核访问物理页面

时间:2007-06-29  来源:bbizxm

在内核中可以很容易地通过__pa(vir_addr)获取虚拟地址所对应的物理地址,通过__vir(phy_addr)得到物理地址对应的虚拟地址。既然可以这么方便地由虚拟地址和物理地址之间的相互转换,那为何还要构造映射表这么复杂的数据结构来寻找物理地址呢?   答案是,上述所说的数据结构只是为了内核快速操作而设置的。而设置页表则是给CPU使用的,CPU得通过MMU来得到物理地址,它只认页表。只通过页表来查找物理地址。   在内核,我们可以绕过MMU而得到物理地址。但是只要是经由CPU操作的就需要使用虚拟地址。存放页表的页面也是通过MMU来找到的。比如我们可以通过__pa(vir_addr)获得物理地址,假设返回值为phy_addr1。但是我们不能通过*phy_addr1来得到物理地址上的所存放的内容。原因是取地址是通过CPU进行的,它会把phy_addr1当成虚拟地址。   那么获得物理地址是否就没有什么意义了呢?也不是,我们在构造映射表项(比如缺页中断时)就得往映射表里填物理地址。还有就是DMA,因为DMA不经由CPU访问内存的,也就是说不是经过MMU,所以必须用物理地址操作。    
相关阅读 更多 +
排行榜 更多 +
一剑灭天

一剑灭天

角色扮演 下载
戮仙战纪

戮仙战纪

角色扮演 下载
头号海贼王手机版

头号海贼王手机版

棋牌卡牌 下载