time 
设为首页】【收藏本站
当前位置: 主页 > 电脑网络 > 操作系统 > 嵌入式 > Windows Phone > Windows Phone内存模型初探(一)

Windows Phone内存模型初探(一)

时间:2013-06-08 23:33 点击:1353次 字体:[ ]




引言:

Windows Phone为用户提供良好用户体验的同时,同样也会对应用程序/游戏的内存使用做出规范、建议和限制等,这将涉及到Windows Phone是怎么管理内存的? 后台的应用占用内存有多少? 前台内存如果不足,系统怎么处理等等,作为研发技术人员必须深入了解该部分知识,本文正是基于此出发点,试图解开Windows Phone内存管理的”面纱”,士博能力有限,文中涉及到的一些技术知识如果不足或错误,请留言告知。

一、Windows Phone是如何管理内存的?

我想,这部分应该分两个方面来讲,众所周知,Windows Phone 发展至今经历过一次大的变动,即内核:由WinCE到Win NT的转换,相应地,在两个不同的核心下,内存管理也有着不同。

1、Windows Phone 7/(WinCE) 内存管理

Windows Phone内存模型初探(一)_www.fengfly.com

Windows CE引入了虚拟内存机制管理, 多达4G的虚拟内存,最大支持512MB的物理内存.不同的CPU内存管理方法不同。对于MIPS和SHX系列CPU来说,地址映射是由CPU完成的,CE内核可以直接访问512MB的物理内存。对于x86系列和ARM系列的CPU来说,在内核启动过程中它会将现有物理内存地址全部映射到0×8000 0000以上的虚拟地址空间中供内核以后使用,这个虚实映射机制软件上通过OEMAddressTable实现,硬件上要求具备MMU,其中:

a)、0~1G是用户进程空间,有33个槽,大小为32MB,物理内存有可能会远远小于32MB。0槽特殊点,是当前进程,当系统启动时,每加载一个进程,就相应的在这里开一个槽出来存储。

b)、1G~2G是Shared Memory,多个进程可以共享该区域数据,物理内存占用较大。

c)、2G~4G是Kernel Space,核心进程,NK.EXE,File.EXE等均在此。

d)、2G~Kernel Space之间是存放硬件外围的寄存器,由物理地址到虚拟地址的映射。

Windows Phone 7 基于WinCE内核,对于内存的管理基本与上面讲述类似,

2、Windows Phone 8 内存管理

因为WP系统的良好封闭性,当前在各种公开出来的资料里并没有过多提到关于WP8的内存管理知识,我们也只能根据一些零散的知识来“组合拼接”出WP8内存管理的概貌, 要覆盖更多的终端市场,必须要推出低内存的终端设备,同时保有一定数量的高内存机型,其中,尤以低内存低存储的设备最为特殊,检查设备的应用内存限制,可以使用以下代码获取值:

 long result =  
        (long)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");

每个OS版本对应不同的内存设定,如图:

Windows Phone内存模型初探(一)_www.fengfly.com

一些特殊的功能限制,请参考:开发面向低内存手机的应用 

使用512MB RAM的设备,RAM使用的分布如下:

Modem 30MB
图形图像(Graphics) 40MB,包括显示缓冲器、视频编码/解码、摄像头等。
操作系统(OS) 50MB
设备驱动(Device Drive) 40MB,包括系统服务、页面池、系统缓存等
后台音频(Background audio) 40MB,再加上各种的缓冲区。
  剩下的312MB就是游戏和应用了

低内存设备与上面的分配类似,只不过最后剩下的是56MB大小,能干多少事?



本文地址 : http://www.fengfly.com/plus/view-212780-1.html
标签: Windows Phone 内存模型
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:
本栏分类