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是非常重要的。