阅读:1518回复:5
关于线性地址与物理地址的问题
开发基于AMCC5933的PCI驱动,5933文档中说明使用DMA方式传输数据时,起始地址寄存器存放的应该是内存的物理地址。我想问一下,在VC里用malloc或new函数返回的指针是逻辑地址还是物理地址。如果是逻辑地址的话怎么样才能把它转成物理地址?
|
|
沙发#
发布于:2004-06-10 22:19
那就是说编程者不用管指针对应的物理地址是什么,只要把这个指针直接赋给寄存器就可以,是这样吗?
|
|
板凳#
发布于:2004-06-07 15:50
由CPU完成逻辑地址到物理地址的转化
0x 1111 1111 1111 1111 1111 1111 1111 1111 |----------||----------| |------------| 页目录地址 页目录项地址 物理内存地址 总共寻址2^32=4G 其中,页目录含2^10个目录 每个目录含2^10个目录项 每个目录项含2^12个物理内存地址 |
|
|
地板#
发布于:2004-06-07 13:26
不好意思,我是新手,能不能再讲详细点。是不是要自己编程来实现转换,还是有专门的函数,或者直接把malloc返回的指针赋给那个起始地址寄存器?
|
|
地下室#
发布于:2004-06-07 12:27
可以把物理地址影射为线性地址来操作
|
|
|
5楼#
发布于:2004-06-06 20:49
malloc和new返回的应该是逻辑地址,因为都是在堆上分配的内存.
怎么转换成物理地址的话,我想操作系统的虚-实地址转换会完成这个功能吧. |
|