EKA2(Kernel Architecture 2)是Symbian OS中最主要的硬件及内核服务模块,
它管理着手机的CPU、内存资源,并为设备驱动提供一个架构,使其对相应的硬件资源进行管理。
Symbian OS的内核是分层结构,这使得其可以移植到不同的硬件平台,
移植时必须要实现ASSP/Variant,这一层为内核提供最基本的专用硬件服务。
内核还允许创建附加层,称为个性化,用来模拟传统的实时操作系统,从而使得这些操作系统的程序可以在Symbian OS上运行。
EKA2包括以下几部分:
Nanokernel:
主要用来处理最基本的线程调度、同步及时钟功能。
Symbian OS kernel:
利用Nanokernel提供的服务给Symbian OS提供系统要求的核心功能,
包括线程、进程、内存块、进程内通信等操作系统对象。
Memory model:
为每个进程提供地址空间以及进程内的数据传输、内存分配及映射。
它封装了对硬件内存管理单元(MMU)的访问,
从而使得Nanokernel和Symbian OS kernel不依赖MMU。
Variant DLL:
提供了Kernel所需的硬件相关服务,例如时钟脉冲中断和实时时钟访问。
系统基于ASSP(application-specific standard product,专用标准产品),并有一个ASSP DLL来分担Variant Dll 的职责。
板载支持包BSP为相关硬件提供Variant库。
扩展及设备驱动:
用来对外设进行控制,并提供外设和Symbian OS之间的接口。
下图显示了这些部分在系统中的位置:
图1 内核架构关系图(源:SDL)
这些部分的代码实现分为硬件无关的和硬件相关的。
硬件相关的代码又分为不同的层次以助于移植。
这些层次包括独立层(Independent)、平台层(Platform)、模型层(Model)、CPU层及两个外设层ASSP和Variant。
其中独立层(Independent)提供了60%的Nanokernel和Symbian OS Kernel的基本代码;
平台层(Platform)主要是模拟器或实际设备的可执行镜像,这一层只有Memory model,
其中分为模拟器和实际设备两类;
模型层(Model)为每个进程的内存提供支持;CPU层根据OS中处理器的不同提供不同的代码,
Nanokernel、Memory model、Symbian OS Kernel在这一层都有代码,汇编代码属于这一层。
如下图所示:
图2:内核源码分层图(源:SDL)
从上图可以看出,Nanokernel代码实现一部分在Independent层,一部分在CPU层;
Symbian OS Kernel代码实现一部分在Independent 层,另一部分也在CPU层;
而Memory model在Platform、Model、CPU三层均有实现。
另外,Nanoknernel在CPU层包含大部分核心CPU架构的实现,诸如异常/中断处理、上下文切换机制等。
还包括一些概念上是独立层功能的东西,但处于性能考虑在这一层以汇编实现,如延迟调用(DFC)处理和基于ARM的时钟处理。
Memory model在CPU层的实现是为CPU专用而实现。
Variant提供了NanoKernel和Symbian OS Kernel所期望的控制专用硬件实现。