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所期望的控制專用硬體實現。