浅谈Windows Phone 7的体系结构 - [WP开发文档翻译系列]
决定把更多的精力放在自己所感兴趣的技术领域上,做自己喜欢做的事情才没有那么大的压力。收集了一些Wp开发的书籍,几乎都是英文的,突然想着把它们尝试着翻译一下,既锻炼自己,同时某一程度上也方便其他人的快速入门。
第一份文档选择了《Architecture Guide for Windows Phone OS 7.0》,相对简单些,也是WP开发入门应该去了解的东西。
这份文档主要包括以下几个大的方面:
- Windows Phone 7体系结构的介绍
- Windows Phone 7 内核
- BSP for Widows Phone 7
- Windows Phone 7的图形渲染技术
- Windows Phone 7的网络连接
- Windows Phone 7的文件系统
- Windows Phone 7手机升级
- Windows Phone 7的用户-模式组件
- Windows Phone 7的安全性
- Windows Phone 7的启动与关闭
一、Windows Phone 7体系结构的介绍:
这份文档提供了有关Windows Phone 7的一些基本的技术信息。为了满足用户的体验要求,WP7把特殊的硬件与软件整合成为新的平台,在这个平台上用户可以提出不同的性能、质量要求以及硬件上的差异化等等。这份文档从更高层次的视角去描述了WP7的核心体系结构组件,包括:
- 硬件组件;
- 软件组件,包括处于内核模式,处于用户模式(例如内核,主版支持包?,驱动程序,OEM适配层,其他系统层等);
- 安全性,WP7的启动与关闭进程。
WP7硬件组件构成一览:
- ARMv7处理器
- 硬件加速(满足了DirectX 应用编程接口的需要)
- 电容触摸屏
- 摄像头
- 蓝牙与Wifi连接
- FM收音机
- A-GPS
- 加速器,指南针,闪光灯,距离传感器等
(省略一小段关于硬件的介绍)
WP7软件组件构成一览:
WP7软件部分由内核(kernel-mode)与用户(user-mode)组成。关于软件部分以及WP7的安全性及启动,关闭进程的讨论请见下部分章节的说明。二、Windows Phone 7 内核:
WP7的内核提供了一些基本的系统服务,例如内存管理,进程/线程的调度等。在分配1GB的虚拟内存空间的时候,它一秒钟内能同时运行32,000个进程。WP7内核的设计应该满足下面几点要求:
- 提高系统性能
- 提高安全性
- 增加wp7平台的健壮性
下面的这个图简略地说明了WP7内核设计的构架:
WP7通过一个统一的(unified)内核去管理,而其他子系统通过加载为DLL的形式去实现其功能。因为这些子系统实现的功能不需要跨进程,所以这种统一内核的设计能提高整个系统的功能。下面这个表格解释了在内核空间中每个组件函数的功能:
而接下来则会更加详细的向读者解释WP7中关于内核的一些概念:例如内存模型及管理,进程/线程,系统调用等等。
内存模型与管理
WP7是32位的操作系统,其中内置4GB的虚拟地址空间(virtual address space)。从设计的角度来看,2GB的空间被分配到内核,其中包括了文件系统以及内核状态下的设备驱动管理器。另外2GB被分配给正在执行中的进程,例如进程代码,用户状态下的DLL文件,内存映射文件等等,下面这个图指明了WP7的内存架构:
WP7的虚存的管理需要达到下面的目的:
- 每个进程尽可能分配到更多虚拟内存;
- No limit on the preset number of processes(不是很明白这个意思)
- 用户模式上进程之间的内存分配策略
- 运行代码最小程度上对CPU资源的依赖性
- 更加有效的分配虚拟内存
注意:在这种内存管理模式下只有一个进程在某个时候与内存产生映射关系,正处于活动状态的进程完全支配着1GB的内存空间,同时不允许其他进程访问这个空间。如果想了解更多关于进程间共享内存的信息,请接着查看下面的内容。
内核内存映射(Kernel Memory Map)
下面的图表描述了内核内存的分配与映射关系:
内核空间映射包含下面四个方面:
- System trap area
- Kernel VM-内核、服务以及驱动共享这部分的虚拟内存
- Kernel XIP DLLs-XIP表示Execute in place.
- Direct physical address mappings
进程空间映射(Process-Space Mapping)
未完待续
@:卿之 → http://www.cnblogs.com/wpdev
©:博文是本人当时的学习笔记及知识整理,由于自身局限错误在所难免,敬请斧正.
©:本文版权属于博客园和本人,版权基于署名 2.5 中国大陆许可协议发布,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接和署名卿之(包含链接),不得删节,否则保留追究法律责任的权利。