当前位置: 技术问答>linux和unix
X86下linux虚拟地址向物理地址的转换
来源: 互联网 发布时间:2016-05-09
本文导语: 大家都知道,用C语言的取地址符&得到的通常是一个虚拟地址,那么在Linux下如何能通过这个虚拟地址来得到它实际指向的物理地址呢? 如果实现一个系统调用来得到这个物理地址,有哪些可能涉及到的函数或寄存器什么的...
大家都知道,用C语言的取地址符&得到的通常是一个虚拟地址,那么在Linux下如何能通过这个虚拟地址来得到它实际指向的物理地址呢?
如果实现一个系统调用来得到这个物理地址,有哪些可能涉及到的函数或寄存器什么的呢?
谢谢.
如果实现一个系统调用来得到这个物理地址,有哪些可能涉及到的函数或寄存器什么的呢?
谢谢.
|
这个涉及到你的CPU体系结构的MMU实现,还要看你的虚拟地址是在那个段的如果是kseg0,大部分体系结构是虚拟地址-0x80000000就是物理地址,如果是kuseg地址就不好说了,需要查看TLB表对其的映射,在arch目录下找到你的CPU体系结构,比方说i386,这个目录下就有一个mm的目录,里面有具体体系结构MMU的实现,每个体系结构涉及的寄存器也不一样,查看CPU手册可以知道他们具体是怎么映射和管理的
|
回去仔细看或者这两本书,看四遍以上,然后再来提问