智能掌上設備代表了嵌入式計算機領域的一個新的發展方向,構件技術是軟件領域的近年來最重要思想之一。介紹了一種新型的構件技術———CAR 技術,從系統組成、特色功能等方面闡述了該技術在智能掌上設備操作系統中的應用,總結出構件技術對智能掌上設備的發展帶來了新的契機。 隨著通訊技術和計算機技術的飛速進步,以PDA、智能手機為代表的智能掌上設備近年來得到了迅猛的發展。不同于一般的嵌入式設備,如今智能掌上設備的運算能力也愈來愈強大,功能也越來越完善,因此,出現了許多面向智能掌上設備的操作系統,以便能夠更好地支持應用程序的運行。智能掌上設備操作系統的基本原理與傳統的操作系統基本一致,但是由于掌上設備具有特殊應用需求,所以它的設計又有許多獨特之處。智能掌上設備操作系統往往根據其功能,對系統進行了最大程度的優化,同時也采用了許多適合于移動計算的新技術,以便增強功能,提高性能。 隨著因特網時代的到來,應用程序模型發生了很大的變化,于是提出來了基于軟件工廠的構件化編程模型,帶來了應用的多樣性以及生產力的提高。把構件技術應用在智能掌上設備操作系統中,給移動計算的發展帶來了新的契機,迎合了軟件發展的方向。本文以構件技術為核心,分析了構件化的優勢,闡述了由科泰世紀公司研究的一種典型的二進制構件技術———CAR (Caref ree Application Run - Time) 構件技術,結合基于該技術的國產嵌入式操作系統“和欣”,來對構件化的智能掌上設備操作系統進行了詳細分析。 智能掌上設備操作系統 智能掌上設備是對具有較強運算能力的手持設備的統稱,主要包括了個人數字助理( PDA) , Smartphone (智能手機) ,以及具有復雜功能的電子書、掌上游戲機等。早期的掌上設備功能比較單一,且少有聯網功能。但是微處理器的運算能力日益增強,無線通訊技術也發展神速,使得如今的掌上設備在提供強大運算能力的同時,又提供了豐富的網絡功能。其中,智能手機是最為典型的智能掌上設備,它具有普通移動電話的全部功能,同時又提供了PDA 的功能,而且可以通過電信運營商的無線網絡,實現電子郵件、上網瀏覽、網絡游戲等增值服務,代表了智能掌上設備的發展方向。 本文所講述的智能掌上設備以智能手機為主,默認已經在硬件上支持了無線通訊功能。 如今市面上也有不少面對智能掌上設備的操作系統產品。其中比較有名的有Palm Source 的Palm OS ,微軟的Windows Mobile 系列, Symbian公司的Symbian OS ,以及多種嵌入式Linux。PalmOS 廣泛應用在PDA 產品上面,如今也開始向智能手機領域發展。Windows Mobile 的界面和操作非常接近PC 機使用的Windows 系統,使用方便,對用戶有很大的吸引力。Symbian OS 則是一個專門用在智能手機上的操作系統,功能強大,如今已運用在多款手機上面,變得非常成熟了。Linux 是一個開放源代碼的操作系統,得到了許多廠商的支持。 在這里以智能手機為例,對智能掌上設備的結構進行初步分析。從主要的硬件上來講,智能手機分為兩個部分:通訊模塊和應用處理模塊。一般來說,這兩個模塊是相對獨立的,通訊模塊用來實現基本的通訊功能,智能手機作為一個手機主要就靠它來體現,它一般有一個獨立的CPU ,且具有獨立的通訊軟件,用來處理通信協議棧。應用處理模塊用來完成除基本通訊功能之外的各種功能,比如存儲管理、多媒體播放等等,也有一個自己的CPU ,相對于通訊模塊來說,它的CPU 更加強勁一些。 本文所提及的智能手機操作系統以及各種應用程序也就運行在這個CPU 上面。應用處理模塊和通訊模塊之間靠通訊控制模塊相連。結構示意圖如圖1 所示。 CAR 構件技術 構件技術 隨著軟件復雜度的與日俱增,傳統的把整個軟件的源程序拿來靜態編譯的方法顯然不適合了。在這個前提下, 產生了軟件拼裝模式,把軟件分成一個個相對獨立的目標代碼模塊, 稱之為構件 。 軟件開發人員只需要做和自己相關的構件,編譯通過,就能夠拿來和其他模塊組裝在一起使用了。通過裝卸實現某個功能的構件,就可以實現對系統的靈活升級。 如今,已經成熟且廣為使用的構件技術有微軟的COM(Component Object Model) ,OMG 組織的CORBA (Common Object Request Broker Architecture) 等等,用它們生成的構件都是基于二進制目標代碼的。現在大行其道的Java 和. NET ,雖然生成的程序都是基于中間代碼的,但也處處體現著構件技術的思想。在本文中,所提及的構件都是指的二進制構件。 面向對象技術實現了軟件源代碼層次的復用,提高了軟件開發人員的生產率。構件技術是對面向對象技術的深化,實現了二進制層次上軟件的復用,進一步提升了軟件開發的效率。根據構件技術,軟件系統可以拆分成相對獨立的構件,構件之間通過約定的接口進行數據交換和信息傳遞。構件可以用不同的語言編寫,只要符合一組二進制規范即可,這樣大大提高了開發的靈活度。 CAR 構件技術 CAR(Caref ree Application Run - Time) 構件技術是面向構件編程的編程模型,它規定了一組構件間相互調用的標準,使得二進制構件能夠自描述,能夠在運行時動態鏈接。微軟的COM 技術是廣為應用的一種構件技術, CAR 兼容微軟的COM。但是和微軟COM 相比,CAR 刪除了COM中過時的約定,禁止用戶定義COM 的非自描述接口;完備了構件及其接口的自描述功能,實現了對COM 的擴展;對COM 的用戶界面進行了簡化包裝,易學易用。 CAR 技術能夠動態加載構件,最大程度支持軟件的二進制復用,進行系統升級的時候也只需要升級相關的構件即可,具有可靠性、容錯性、安全性,代表了軟件工廠化生產的方向。 CAR 技術采用C/ C + + 語言來編寫構件,所以生成的構件直接是以目標平臺的二進制代碼運行,相比J ava 、. NET 技術的中間代碼和虛擬機機制,在速度上占有明顯的優勢,更適合系統級構件的編寫以及嵌入式系統中的應用。 “和欣”操作系統簡介 “和欣”(英文名為Elastos) 是科泰世紀公司研制的一個完全面向構件技術的操作系統,基于靈活內核,具有多進程、多線程、搶占式、基于線程的多優先級任務調度等特性。“和欣”里面集成了CAR構件運行環境,能對軟件構件進行充分的支持,且已經廣泛地用在各種嵌入式領域中,特別是智能手機等掌上設備領域之中。 CAR 構件技術在智能掌上設備操作系統中的應用 智能掌上設備對構件技術的需求 智能掌上設備在擁有較強的運算功能的同時,具有便攜性等特點,通常為用戶隨身攜帶。隨著技術的進步,集成了許多功能的掌上設備逐步取代了那些功能單一的設備。在新的環境下,用戶往往要求掌上設備在保持便攜性的同時能夠帶來更多的功能。所以, 針對智能掌上設備提出了下面的要求: (1) 可以動態加載應用程序。動態加載應用程序是在因特網時代的需要,因為智能掌上設備的功能越來越多,不能像以前那樣由廠家把所有的功能都做好固定在里面,所以必須要求用戶能夠自己根據自己的興趣,有選擇地從網上下載應用程序。 (2) 隨時和動態地實現軟件升級。智能掌上設備的功能也是在不斷增強的,開發商不必為了添加部分功能而重新發布整套軟件,只需要升級部分的功能即可。 (3) 靈活的模塊結構,便于移植和裁減。因為掌上設備的配置可能差異非常之大,所以需要針對不同的硬件配置緊湊高效的系統,且添加和刪除功能模塊也要相當容易。 如果在操作系統中采用構件技術,能夠很好地解決上述問題。特別地,利用CAR 構件技術,把應用程序按模塊劃分做成一個個構件,能夠方便地實現網上下載,動態加載,自動升級,且具有結構靈活等特點。CAR 構件的設計初衷,就是面向消費類電子市場,且實現用戶零維護的功能,這點從它的名字就可以看出來。下文以“和欣”操作系統為例,講解了CAR 構件在智能掌上設備中的應用方案。 智能掌上設備操作系統的結構 為了能夠很好地支持構件技術,需要在操作系統內部建立對構件技術的支持。在“和欣”中,采用了完全構件化的技術來搭建整個系統應用框架,從操作系統底層就開始支持構件機制,對智能掌上設備來說,形成了一個靈活而高效的解決方案。 圖2 描述的是一個采用GPRS 功能的智能手 機的軟件構成圖。其中智能手機操作系統直接控制的是圖2 右邊的應用模塊。從圖中可以看出,CAR 構件平臺運行在操作系統內核之上,一方面,它與內核聯系緊密,替內核接管了負責整個系統中應用程序運行的任務;另一方面,它又是一個相對獨立的模塊,這樣能夠方便地進行移植,讓更多的系統都能運行CAR 構件,保持著CAR 構件的軟件平臺無關性。CAR 構件運行平臺支持系統級和應用級兩個層次的構件的運行。同時,該系統也提供了一些函數庫,比如C 的庫函數,在一定程度上兼容以前編寫的一些應用軟件。另外,如今的智能手機都支持豐富的JAVA 應用程序,所以該系統也提供了專門的構件來運行K- J ava 程序。 圖2 左邊的通訊模塊是相對獨立的一部分,雖然不由操作系統直接控制,但是通過它提供的一組通訊協議,可以對它進行全方位的操作。打電話、發短信、收發電子郵件,都是由相應的應用構件通過控制通訊模塊來完成的。從功能上來說,可以把GPRS 通訊模塊看成一個無線網卡,各個應用構件,就是通過這個無線網卡來實現網絡應用的。 CAR 構件運行平臺 在“和欣”中,就是由CAR 構件運行平臺來提供對構件運行的支持。它讓系統中的各種構件天衣無縫地搭配在一起,實現自己的功能,同時又針對掌上設備的硬件特點進行了優化,且提供給構件的是完全的二進制運行環境,所以能夠保證系統的高效運行。 每個構件只關心自己的功能實現,構件之間的相互聯系由約定的接口來實現 。對于同一個進程內的構件,由于共享同一個地址空間,其方法可以直接調用。但是,對于不同進程的構件,則必須通過代理構件來實現。代理構件由CAR 構件運行平臺動態地生成,它可以看成是中間件的一個特例,既解決了跨進程,甚至跨機器的構件通信和方法調用,而且還提供了許多有用的特性。代理構件能對構件的運行狀態進行干預和控制,給系統提供了強大的安全保護機制,能對軟件的訪問權限進行有效地控制,對于加密、解密、防黑客、防病毒的設計提供了必要的條件,為信息系統的安全性提供了堅實的基礎。圖3 描述了CAR 構件運行平臺通過自動生成代理構件來對實際的構件模塊進行調用的模型。 系統構件庫和應用構件庫 有了CAR 構件平臺,還必須具有完善的構件庫,操作系統的功能才能真正發揮出來。根據實現的功能,一般把構件庫分為系統構件庫和應用構件庫兩大類。系統構件庫與操作系統內核聯系緊密,提供一些通用的功能供應用程序調用,是應用程序的必要支持。應用構件庫里的構件與用戶直接進行交互,用來實現智能掌上設備里的豐富的應用功能。 “和欣”提供了一套全面的系統構件庫,這些構件庫在智能掌上設備中不可缺少,為各種應用構件的運行提供了完整的支持。該構件庫分為以下幾類: 圖形系統構件庫:提供圖形用戶操作界面,因為用于掌上設備,所以是一套小巧、緊湊的圖形系統。 設備驅動構件庫:用于各種輸入輸出設備的驅動,主要包括LCD 顯示屏驅動、觸摸屏驅動、聲卡驅動、攝像頭驅動等等。 文件系統構件庫: 提供對各種文件系統的支持,尤其是對采用最為廣泛的FAT 文件系統的支持。還提供了對FLASH 存儲器等掌上設備最常用的外存儲器的支持。 網絡系統構件庫:用于對TCP/ IP 協議的網絡支持,針對無線網絡的特性,對協議進行了優化。同時提供了常用的網絡應用工具。 CAR 構件對自動下載運行機制的支持 自動下載運行機制是構件技術在智能掌上設備中的典型應用。在傳統的計算機中,往往要求事先把應用程序安裝在操作系統中,然后才能正常使用它。這種安裝機制比較繁瑣,而且那些對計算機的操作不是很熟練的人們,使用起來有一定的難度。智能掌上設備作為一種消費類電子產品,面向的是更為普通的消費者,所以要求對它的操作更加簡化。考慮到這一點,方便地從網上獲取應用程序構件,無需安裝就自動運行,就成了CAR 構件的一個重要特性。 CAR 構件都提供了一個屬性uunm(UniversalUnique Name) ,用來標識構件在互聯網上的地址。uunm 是唯一存在的,所以每個構件都有一個唯一的互聯網地址。CAR 構件無需在應用程序啟動的時候就裝載到內存之中,只有當用到它的時候,才會動態加載。需要加載某個CAR 構件的時候,CAR 構件環境會得到這個構件的uunm。根據uunm ,就能從網上把這個構件下載下來,然后開始自動運行。 同時,由于通過網絡進行構件下載,按目前的網絡速度需要消耗一定的時間,所以自動下載運行機制針對效率問題進行了優化。對于下載的構件,系統會把它自動放到本機的一個專用目錄當中,該目錄稱作構件緩存。下一次裝載這個構件的時候,首先在構件緩存中進行尋找,如果有的話,就直接加載本機的這份拷貝,不用啟動網絡,大大加快了運行的速度;如果沒有找到該構件,則通過uunm從網上下載。當緩存裝滿的時候,系統會根據一定的算法來清理其中的構件。 CAR 構件的自動下載運行機制,完全不用用戶干預而自動執行,方便了用戶的使用。此外,通過在構件中加入相應的數字簽名機制,解決了自動下載運行的安全性問題。 總結 構件技術是今年來最為重要的軟件技術之一,促進了軟件生產方式的飛躍,也帶來了軟件應用模型的重大變化。智能掌上設備作為后PC 時代的一個標志性嵌入式設備,完美地結合了計算機技術和無線通訊技術,且普及程度越來越高。作為當今的構件技術的一個典型代表,CAR構件技術具有自動運行下載等眾多優勢,用在智能掌上設備操作系統之中,給用戶帶來了種種新特性,也給智能掌上設備的發展帶來了新的契機。 |