版块
论坛
喜欢
话题
应用
搜索
登录
注册
milkyway1888的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=160907
请教大家关于虚实地址映射的几个问题
1.我看到网上有这样的理解:----- OEMAddressTable (MMU) ----- ------------- WinCE OS -------------------/ \ ...
全文
回复
(
13
)
2007-03-08 19:09
来自版块 -
Wince 程序开发
◆
◆
表情
告诉我的粉丝
提 交
milkyway1888
:
wxl_50685330斑竹的老帖里提到关于virtualcopy()的第二个参数似乎既可以是经过OEMAddressTable得到的内核段虚拟地址,也可以是物理地址.只是后者需要右移8位来对齐.不知道我的理解正确否...
(2007-03-15 16:39)
回复
rilyyu
:
关于VirtualCopy我说错了,后面的说法也不对,我把CE当成每个程序拥有4G的内存空间了.大家就当我为了活跃论坛气氛,信口开河把
.待我回去研究研究先.关注这个帖子.
(2007-03-15 14:00)
回复
milkyway1888
:
引用第8楼rilyyu于2007-03-14 09:37发表的“”VirtualCopy可以把非自己进程空间的虚拟地址映射到自己的进程空间,原理就是把2个虚拟地址映射到一个物理地址。每个应用程序都有自己独立的进程空间,即使它知道一个虚拟地址但不在自己的进程空间内也不可以直接访问的...
(2007-03-15 09:49)
回复
milkyway1888
:
引用第6楼zhengshijie于2007-03-13 15:55发表的“”: 这个源地址是虚地址(是在内核的虚地址),映射到用户进程中的虚拟地址空间,像这种用法你看CE4.2的S3C2440 BSP代码可以找到, #define IOP_BASE 0xB1600000...
(2007-03-15 09:42)
回复
rilyyu
:
由OEMAdderessTable决定的虚拟地址对于内核来说就是物理地址了,内核会在这个基础上再虚拟出一个地址来给每个进程使用,
我是这么理解的,和大家讨论一下。真理越辨越明。召唤达人释疑
(2007-03-14 09:44)
回复
rilyyu
:
VirtualCopy可以把非自己进程空间的虚拟地址映射到自己的进程空间,原理就是把2个虚拟地址映射到一个物理地址。每个应用程序都有自己独立的进程空间,即使它知道一个虚拟地址但不在自己的进程空间内也不可以直接访问的,所以需要虚拟到虚拟的映射。
(2007-03-14 09:37)
回复
milkyway1888
:
0xB1600000(虚) 对应 0x56000000(实) 是在OEMAddressTable中规定的? VirtualCopy函数不是用于映射物理地址到虚拟地址的吗?怎么也可以映射虚拟到虚拟?还是说这里的源地址是内核认为的物理地址=处理器的虚拟地址? 回到我原来的第一个问题上...
(2007-03-14 08:53)
回复
zhengshijie
:
这个源地址是虚地址(是在内核的虚地址),映射到用户进程中的虚拟地址空间,像这种用法你看CE4.2的S3C2440 BSP代码可以找到, #define IOP_BASE 0xB1600000 // 0x56000000 v_pIOPRegs = VirtualAlloc...
(2007-03-13 15:55)
回复
milkyway1888
:
又看了下HELP里头关于virtualcopy()的,里头提到第四个参数设置成page_physical时,要把源地址除以256。不过看了源代码才知道为什么:) 什么虚拟地址物理地址看的我云里雾里的
(2007-03-12 16:27)
回复
milkyway1888
:
看了下DoVirtualCopy()的代码,说说我的理解看看对不? 大约是说在fdwProtect & PAGE_PHYSICAL=1时,里头会执行dwSrcAddr<<8。也就是说如果virtualcopy()的第四个参数为page_physical时,也自...
(2007-03-12 16:04)
回复
1
2
下一页 »
milkyway1888
加关注
写私信
0
关注
1
粉丝
94
帖子
返回顶部