flywhc2010-02-12 01:04:42

windows mobile 6.5 在界面上做了很大改变,Titanium滑动桌面,手指滑动控制的各种控件,全贴图的skin等等。给人的印象好像是既然视觉效果复杂了,速度一定慢了,占内存大了。

实际上,WM6.5的速度比WM6.1等要快,而且更少机会出现内存不足的错误。

这篇是Da_G写的cook rom的教程,里面很好的讲了为何WM65的性能提高了
http://forum.xda-developers.com/showthread.php?t=544445

我知道这里多不懂技术,我就简单的解释一下。

WM6.5使用的WINCE5.2内核在现有框架下增加了64MB的内存映射空间,使得当前的程序(激活进程)不必再跟预先映射(XIP)的DLL争夺32MB的内存空间,而且还可以把更多的DLL预先映射到内存中,大幅度提高读取速度。


下面是我画的一个示意图:


┏━━━━━━━━━━━━━━┓FFFFFFFF
┃Kernal        ┃
┣━━━━━━━━━━━━━━┫80000000
┃SLOT63RESOURCE┃Resource files
┠┄┄┄┄┄┄┄┄┄┄┄┄┄┄┨7E000000
┃SLOT62 ???     ┃
┠┄┄┄┄┄┄┄┄┄┄┄┄┄┄┨7C000000
┃SLOT61 XIP     ┃
┃SLOT60 DLLS   ┃
┠┄┄┄┄┄┄┄┄┄┄┄┄┄┄┨78000000
┃SLOT59        ┃
┃Memory map    ┃Memory mapped files
┃SLOT33         ┃
┠┄┄┄┄┄┄┄┄┄┄┄┄┄┄┨40000000
┃SLOT32         ┃
┃ ……            ┃
┃SLOT2其他进程     ┃
┠┄┄┄┄┄┄┄┄┄┄┄┄┄┄┨04000000
┃SLOT1 XIP DLLs┃
┠┄┄┄┄┄┄┄┄┄┄┄┄┄┄┨02000000
┃SLOT0当前程序      ┃
┗━━━━━━━━━━━━━━┛00000000


WinCE总共4GB的虚拟内存空间,跟WIN32相同,但为达到快速context切换,实际切分成不同的内存槽(slot),进程本身只能映射分配32MB的地址空间而不是4GB。

在老的WM里面,XIP DLL只能用slot 1和0,总共64MB,可是SLOT 0还担负着映射当前进程的艰巨责任,多映射一个DLL就少一点可用内存,就算物理内存很多,也会因为虚拟内存空间不足而导致内存不足错误。但不映射的话系统性能又很低,因为flash rom太慢了。

WM6.5增加了63, 61和60做映射,其中63只能映射资源文件。这样系统的那些复杂的皮肤、动画以及运行库文件就都在内存里随时调用——事实上,现在的手机处理器多数内置图像加速卡,绘图根本不耗CPU的!


当然我们也可以看出,对ROM的优化对系统性能影响很大,除了XIP DLL和资源文件以外还有很多技巧,因此选一个好的定制ROM是非常重要的。
flywhc2010-02-12 01:16:12
忘了提windows mobile 7了
playForever2010-02-12 01:30:14
when WinME 7 is going to be released ?