Symbian智能型手機作業(yè)系統(tǒng)
前言:Symbian是由Ericsson、Panasonic、NOKIA、Simens AG、Sony Ericsson等公司所共同開發(fā)并擁用的專為手機硬件而設計的作業(yè)系統(tǒng),其包含了函式庫(libraries)、用戶界面(user interface)架構(gòu)和共用工具(common tools)的參考實現(xiàn)(reference implementation),Symbian作業(yè)系統(tǒng)的前身是Psion的EPOC作業(yè)系統(tǒng),當初僅設計為ARM架構(gòu)處理器獨占使用。
圖說:Symbian的官方圖標志。
而Symbian在2004年7月股權(quán)變動后,Nokia的持股比例從32.2%上升到47.9%,維持其第一大股東的地位。為了力拱Symbian,Nokia也發(fā)動產(chǎn)業(yè)鏈上的內(nèi)容開發(fā)商來說服手機廠商加強采用Series 60平臺,除了聯(lián)合各移動通信終端設備廠商共同支持Symbian作業(yè)系統(tǒng)外,還將該移動通信終端設備平臺授權(quán)給Samsung、Siemens和 Panasonic,以統(tǒng)一各家移動通信終端設備平臺來加強開放性以及降低軟件開發(fā)成本。
Symbian的成立理念除了有加強開放性以及降低軟件開發(fā)成本等考量以外,將微軟這只軟件巨獸給擋在移動應用門外是另外一個重點,由于幾大移動電話業(yè)者早已看出微軟對于移動市場也有著極大的興趣,遲早會將手伸進來攪和,因此藉由成立Symbian,成為各大手機廠商的通用系統(tǒng)核心,應用程式也可以極大的比例互通,藉以形成規(guī)模,造成進入門檻。只不過微軟巨獸的稱號可不是簡單就能得到的,在推出Windows mobile移動作業(yè)系統(tǒng)家族之后,隨著架構(gòu)與性能的逐步改善,已經(jīng)在移動裝置逐漸闖出一片天,想要完全阻擋微軟的入侵,似乎已經(jīng)是一件不可能的事。
Symbian的設計特性
以Symbian作業(yè)系統(tǒng)為基礎(chǔ)的智能型手機,在使用者介面上的設計則是以套件形式提供廠商多種不同的選擇,比如說常見于Sony Ericsson手機的UIQ介面,Nokia手機的Series 60、Series 80、Series 90等,以及諸如封閉式平臺如由Fujitsu、Mitsubishi、Sony Ericsson和Sharp合作開發(fā)應用于NTT DoCoMo所采用的FOMA(Freedom of Mobile Multimedia Access,世界上第一個WCDMA網(wǎng)路)等等。提供不同型態(tài)的手機操作方式(介面與輸入方式),以及程度不等的擴展性。
而Symbian本身也是一款支援先占式多工、多執(zhí)行緒,以及具備存儲器保護功能的作業(yè)系統(tǒng),由于最初是專為移動裝置所設計,一般行動裝置(如手機)等在硬件資源上都相當有限,無法如桌上平臺作業(yè)系統(tǒng)般,對硬件需求可以無限制的膨脹。為了要盡可能在維持系統(tǒng)的可操作性以及穩(wěn)定性的前提之下,延長采用Symbian作業(yè)系統(tǒng)的移動裝置的使用時間,因此它在資源控管上就進行得非常嚴格,除了利用各種方式來降低存儲器的需求以外,程式寫作是采用事件驅(qū)動的方式,當存儲器中沒有應用程式發(fā)出事件處理需求,中央處理器將會被關(guān)閉,藉以節(jié)省電源消耗。
在整個處理流程概念上,應用到了活動物件(Active Object)的方式,活動物件是一種多工處理的形式,其具備了協(xié)同式多工(cooperative multitasking)的特性,在架構(gòu)上,當一個物件做了一個非同步服務的要求時(比如說系統(tǒng)要送出一個SMS信息),當要求成立之后,作業(yè)系統(tǒng)就會辨別出該負責該服務執(zhí)行緒內(nèi)的活動物件,并且喚醒負責搭載該物件的執(zhí)行緒,物件本身也將會被附加一個啟動排程,并且將控制權(quán)交給該物件。
在實作上,一個執(zhí)行緒內(nèi)將會有許多的物件,每個物件都有其各自負擔的行程,但是晤見之間并不是完全獨立的,而是可以互相作用,當A物件的行程與B物件有相關(guān)時(比如說傳送短信與連接到網(wǎng)路服務的物件彼此就要互相作用),物件與物件、執(zhí)行緒與執(zhí)行緒之間都會有相互的請求,甚至執(zhí)行緒本身也可以對該執(zhí)行緒內(nèi)的物件做處理請求動作。這個軟體設計概念其實相當古老,早在70年代就已經(jīng)被發(fā)展出來。利用這些處理規(guī)則,Symbian可以很有效率的處理所有的工作流程,并且延長電池使用時間。
雖說因為這些技術(shù)的緣故,在Symbian上設計應用程式的難度將會有所提升,但是基本上由于可采用的程式開發(fā)工具相當多,相關(guān)的官方資源與支援也相當完備,雖然基本上Symbian的原生開發(fā)語言是C++,一般來說是采用VC++、Visual Studio以及Carbide等,但是開發(fā)者也可以采用OPL、Python、Visual Basic、Simkin以及Perl等來搭配J2ME以及自行開發(fā)的JAVA來使用,具備有相當大的彈性空間。
Symbian作業(yè)系統(tǒng)結(jié)構(gòu)
Symbian具備有一個微核心架構(gòu),在架構(gòu)內(nèi)定義了包含排程系統(tǒng)以及存儲器管理機制,不過網(wǎng)路與檔案系統(tǒng)則是外加在使用者端服務,沒有包含在微核心架構(gòu)之內(nèi)。在基本層內(nèi),包含了檔案服務,可在服務內(nèi)提供類似DOS外觀的檔案系統(tǒng)(每個邏輯或?qū)嶓w磁碟裝置都擁有各自的磁碟代號,利用反斜線來當作目錄的定義系統(tǒng))。Symbian支援多種不同的檔案系統(tǒng),通常這些檔案系統(tǒng)被隱藏在最底層,而不會被顯示出來。
Symbian具備了一個相當龐大的網(wǎng)路以及通信子系統(tǒng),包含了三種主要服務,這三個主要的服務,分別是ETEL(EPOC telephony)、ESOCK(EPOC協(xié)定)及C32(序列通信回應機制)。這三種服務都有其Plun-in結(jié)構(gòu),舉例來說,ESOCK可容許不同的「.PRT」協(xié)定模組,藉以實作多種不同種類的網(wǎng)路協(xié)定架構(gòu)。這些相關(guān)架構(gòu)也包含了諸如藍芽、紅外線以及USB等短距離有線/無線通信中。
在使用者介面上,也包含了大量的程式碼,雖然使用者介面大多是,第三方廠商所維護但是所有使用者介面的基本類別與次系統(tǒng)都是被包含在Symbian架構(gòu)之中,相關(guān)的繪圖功能程式碼也被包含在Symbian功能服務中,這些程式碼功能包含了視窗服務、自行、點矩陣圖形服務等等。
至于在應用程式結(jié)構(gòu)方面,則是提供了不同的應用程式引擎,不同的應用程式都會分散到各種不同的動態(tài)連結(jié)函式庫(DLL)引擎以及圖形化程式中,當然,Symbian本身也提供了相當多現(xiàn)成的DLL給程式開發(fā)者使用。
Symbian作業(yè)系統(tǒng)的體系
從1998年Symbian正式出現(xiàn)以來,歷經(jīng)了十數(shù)次的改版,目前Symbian OS最新的版本為9.3版,但是提供給開發(fā)者的卻不是這種單純的OS層次程式碼,轉(zhuǎn)而代之的是以套件形式來推出的配套方案。目前類似的配套方案主流有Nokia公司的S60與Sony Ericsson的UIQ這兩種。
圖說:采用UIQ 3.0版的Sony Ericsson P990。
Nokia為Symbian提供了4種方案,分別是S40平臺、S60平臺、S80平臺以及CDMA方案。CDMA方案是給具備基本通話、短信、通信錄管理功能手機使用,屬于非?;镜念愋?,支援彩色螢幕,但是可擴充能力以及功能方面非常簡化,是專門給最低階產(chǎn)品開發(fā)應用。S40平臺至專門提供用來設計具備基本功能的智能型手機系統(tǒng),提供了標準的JAVE中界、FLASH應用等等,不過最高解析度設定在320*240,因此定位于中高階產(chǎn)品應用,在操作介面上做了相當程度的簡化。S80則是著重于個人資料輔助處理功能上,在定位上,就與Windows CE類似,以全功能完整提供各種應用程式以及網(wǎng)路服務,以雙手操作最佳化。在開發(fā)應用程式上可使用C++或者是JAVA等彈性方案。不過以上這三種方案主要都是應用于NOKIA的產(chǎn)品中,幾乎沒有第三方廠商采用。
而S60可以說是目前最主流的智能型手機作業(yè)系統(tǒng),主要是以單手操作為其人機介面概念,除了NOKIA以外,也被諸如Panasonic、SAMSUNG、Motorola等廠商所采用,使用范圍相當廣,此平臺除了包含了完整的事務輔助處理功能以外,更包含游戲、影音等熱門功能,并支援了目前流行的移動通信網(wǎng)路以及Wi-fi無線網(wǎng)路等環(huán)境使用,在產(chǎn)品競爭方面,可以說是最高的,雖然對于硬件廠商來說競爭非常大,但是對于軟件開發(fā)商來說,只要針對S60平臺開發(fā)一套軟件,即可應用于不同的廠牌智能型手機中,除了市場可大幅擴張以外,相對的開發(fā)成本也可有效降低,不需要針對每個平臺來去做底層架構(gòu)上的更動。消費者也不必擔心買了特定廠牌的S60平臺手機會有軟件支援度不足的狀況,畢竟這些智能型移動產(chǎn)品在核心架構(gòu)上都是屬于系出同門,只有硬件設計理念有所不同而已。
圖說:采用S60第三版的Nokia N73。
S60目前已經(jīng)發(fā)展到3.1版(或稱為S60 3rd Edition Feature Pack 1),是基于最新的Symbian OS 9.2的基礎(chǔ)上,而不同版本之間因為支援解析度以及使用者介面的不同,就有可能造成應用程式的不相容,比如說第三版開始使用的Symbian OS 9.1,與過去S60 2.X版所採用的Symbian OS 8架構(gòu)有著明顯的不同,9.1版採用了新的ARM EABI 2進位執(zhí)行檔模型,在應用程式管理及安全性上有不小的變更,因此舊版針對Symbian OS 8環(huán)境所開發(fā)的軟件就無法沿用到S60 第三版上,最新的S60 3.1版中,則是將Symbian OS版本推進到9.2版,這個版本是在2006年第一季釋出,變動部分,主要是支援了藍芽2.0、OMA裝置管理等,不過在實際產(chǎn)品上,採用S60 3rd Edition Feature Pack 1的N95,已經(jīng)應用了不少Symbian OS 9.3的特色,包含HSDPA、802.11協(xié)定以及更多語言的支援等等。
圖說:采用S60 3.1版的Nokia N95。
圖說:采用S60 3.1版的SAMSUNG SGH-i520。
Symbian應用軟件的開發(fā)
上一段文章有提到,基于Symbian的應用平臺有5種以上,這些平臺提供了不同的開發(fā)套件供開發(fā)人員使用,其中最主要的就是UIQ以及S60這兩種。個別手機廠商或者是同家族系列通常都會在網(wǎng)路提供可下載的開發(fā)套件以及軟體開發(fā)環(huán)境。Symbian的C++語言程式設計,都是在Commercial IDE之下完成,比較常見的開發(fā)套件就屬于微軟的Visual Studio,CodeWarrior的Symbian版本也常被應用來開發(fā)專屬應用程式,至于2006年時,Nokia則是使用Carbride.C++來取代CodeWarrior。
Carbride.C++是基于Eclipse IDE 3.1環(huán)境以及支援Symbian特定功能的Eclipse CDT 3.0.2延伸套件的整合開發(fā)工具,基本上Carbride.C++使用與CodeWarrior相同的編譯器,Carbride.C++也被分支為CDT的少數(shù)幾個部分,但幾乎都被包含在Eclipse附加套件上。在架構(gòu)上,Carbride.C++與標準Eclipse安裝非常類似,它可以被應用在其他種類的語言發(fā)展上,比如說JAVA與Perl等(必須利用Eclipse的自我升級功能來安裝正確的附加套件)。由于Carbride.C++使用了Eclipse的組建管理系統(tǒng)(Eclipse’s Managed Build System)來建立Symbian的可執(zhí)行檔,相較起標準Symbian開發(fā)工具,Carbride.C++在建立執(zhí)行檔的能力方面要來的更為優(yōu)秀許多,不過這個開發(fā)工具倒也不是都毫無缺點,首先,它就無法完全反映出標準Symbian OS開發(fā)工具的任何功能上的加強或改變,其次,使用Carbride.C++必須具備更高深的程式寫作技巧,以及Symbian的底層結(jié)構(gòu)和使用者介面的瞭解也必須更透徹。而在程式編譯過程,Carbride.C++所提供的編譯工具也有可能會隱含瑕疵,導致編譯出來的程式有不正常動作的情形。
此外,Borland IDE也有專為Symbian設計的版本;在Linux與MAC OS X環(huán)境下也有社群技術(shù)支援的開發(fā)工具使用,部分Symbian允許公開關(guān)鍵工具的原始碼。
Symbian系統(tǒng)的程式設計技巧
最重要的一點,就是將核心程式碼與使用者介面部分的程式碼分開,分成不同的模組這么一來可以有助于應用程式在不同使用者介面系統(tǒng)之間的移植動作更為順利。方法之一就是將所有與介面控制非相關(guān)部分都放到獨立的核心DLL之中,使用者介面則是直接對核心DLL做出連結(jié),藉由存取該DLL而達到功能上的應用。
另一個方法便是再原始碼的階段就做出區(qū)分,整個應用程式包括核心引擎與使用者介面可以包一包編譯為單一檔案,但是在原始碼部分的撰寫與存放就要放置到不同的.CPP與.H檔案中,以便于管理及測試。採用這種設計方式,在移植往新介面時,負擔也可以有效減輕,為了適應新的介面,只要變更控制使用者介面的原始碼即可,核心部分的變動可以縮小到最低程度。
本地端語言的支援要利用Symbian OS本身的控制方式來提供,而不能將本地語言寫死到程式碼中,除非市場僅只著眼于本地,不然為了將來國際化版本的開發(fā)以及國別轉(zhuǎn)換,將介面語言寫死到程式碼中,會造成將來改版上的困擾。
盡量使用Symbian所提供的官方SDK中的API來開發(fā)應用程式,避免使用第三方廠商或自行開發(fā)的API,以避免將來作業(yè)系統(tǒng)改版或SDK版本變更之后,應用程式大幅經(jīng)過改寫才能獲得作業(yè)系統(tǒng)支援的情況。
不同的硬件架構(gòu)對于資源的管理方式都有可能不同,因此要盡量考慮到不同硬體對其系統(tǒng)資源的分配方式,而不要所有在程式開發(fā)過程中所需要的硬件或軟件功能都能在硬件中獲取,而特定硬件資源的取用代號也可能會因硬件而異,因此采用相對位址,而不是絕對位址,可以避免在不同硬件上執(zhí)行程式的不相容情形。
存儲器管理是Symbian程式設計的最重要部分
由于Symbian OS本身就是針對存儲器與運算資源都頗為受限的硬件來開發(fā),應用程式可能在各種情況之下碰到存儲器耗盡,或者是硬件資源被其他應用程式占用的情況,這些例外情況無法透過修改程式碼來獲得改進,因此必須遵守幾個規(guī)則:
■ 不要占用不必的存儲器空間。
■ 當程式執(zhí)行完畢,必須記得將所使用到的資源釋放出來。
■ 在程式對作業(yè)系統(tǒng)本身申請存儲器占用時,都必須準備好面對存儲器不足的情況。
■ 當存儲器不足的情況出現(xiàn)時,就必須將應用程式回歸到原始狀態(tài),并且將原本占用到的資源回吐出來。
此外,在程式碼中,盡可能使用SDK中所推薦的存儲器控制指令以及流程,避免造成應用程式的錯誤。為了避免應用程式有存儲器洩漏的狀況時,卻無法即時做出反應,導致應用程式崩潰,可以利用一些小技巧,將特定檢查碼放在程式碼的開頭與結(jié)尾,藉以找出會導致存儲器洩漏的部分程式碼。
Symbian OS中的執(zhí)行緒管理與工作進程管理
在Symbian OS中,每個工作進程都包含了一個或多個執(zhí)行緒,執(zhí)行緒是程式執(zhí)行的基本單位,由于Symbian OS中是屬于先占式多工設計,這也意味著,每個執(zhí)行緒都有自己的執(zhí)行時間,除非系統(tǒng)將CPU使用權(quán)轉(zhuǎn)移到其他執(zhí)行緒中。當系統(tǒng)調(diào)度時,執(zhí)行緒的定址空間是受到保護的,因此每個使用者端執(zhí)行緒都有自己的專屬空間與時間,可避免互相受到干擾。每個執(zhí)行緒都有各自的stack以及heap,heap可以是私有的,也可以被其他執(zhí)行緒所共享。雖然Symbian OS支援多執(zhí)行緒執(zhí)行,但基本上還是為單執(zhí)行緒工作處理做最佳化,因此在應用程式開發(fā)上,大多推薦以Active Object(類似協(xié)同式多工的一種處理方式)來代替多執(zhí)行緒的執(zhí)行方式。
在Symbian OS中使用單執(zhí)行緒有幾個考量,主要是由于每個執(zhí)行緒都有各自的stack耗用,使用單執(zhí)行緒可以減少存儲器耗用,而在執(zhí)行緒之間切換,要比使用Active schduler來進行Active Object切換來得慢,而單執(zhí)行緒也不需要處理不同執(zhí)行緒之間的戶斥狀況,因此也可以簡化程式碼的設計,減少錯誤的發(fā)生。
不過在特定的情況之下,使用多執(zhí)行緒還是有其優(yōu)點的,比如說,當要為了保證所執(zhí)行任務的持續(xù)性時,比如說播放音樂,不想讓音樂工作被其他短信活動等干擾而中斷,因此就可以將之獨立為一個執(zhí)行緒來處理。而特定應用程式中,也有因為原先設計就比較適合使用多執(zhí)行序架構(gòu),比如說電子游戲,單執(zhí)行緒處理可能會導致音效或動畫顯示不同步。
不過在啟動執(zhí)行緒之后,執(zhí)行緒的stack就不能再增加,否則可能會導致該執(zhí)行緒崩潰,這是在程式設計時,所必須要注意的一點。
結(jié)論
Symbian OS具備了極高品質(zhì)的設計特性,其應用的廣泛度,也被層出不窮的新產(chǎn)品所證明,除了高階硬體以外,中低階硬件也可以無痛的導入。由于行動裝置逐漸走向低成本與高性能走向,備有不同平臺開發(fā)方案的Symbain可以很好的適應這些不同的應用需求,在架構(gòu)上,也要比競爭對手更容易發(fā)揮出硬件的效能。目前市場現(xiàn)況來說,採用Symbian的移動裝置已經(jīng)突破一億臺,而發(fā)展中國家如印度、中國大陸以及巴西等都是人口密集的大國,將來出貨量更有水漲船高的可能,IDC預估,到2011年,全球移動裝置出貨量可能高達10億部以上,不論是針對開發(fā)中國家的低階硬件產(chǎn)品或是為年輕用戶準備的高階全功能產(chǎn)品,都是產(chǎn)業(yè)界所不能忽視的市場機會。(52RD.com)
評論