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