詹秋芳+李笑瀾



摘要:隨著互聯網的發展,作為用戶登錄互聯網的主要入口,瀏覽器在用戶的日常應用中起著越來越重要的作用。國產龍芯平臺不僅僅體現在一款高性能的處理器上,更體現在與之相配套的軟硬件體系上。文章針對國產龍芯平臺,系統研究了Firefox瀏覽器插件,對基于國產自主指令系統開展瀏覽器的移植與功能擴展工作進行探索,實現了國產龍芯平臺FFirefox瀏覽器插件功能和性能。
關鍵詞:國產龍芯平臺;瀏覽器;插件;封裝
當前隨著社會信息化程度的提高,網上辦公、公文流轉等信息系統越來越盛行,隨之引發的信息系統安全可靠問題也日益嚴重,“自主可控”的呼聲也越來越高。核心處理器硬件平臺和操作系統作為信息系統的基礎,其自主可控特性顯然極為重要。
國產關鍵軟硬件的推廣是未來的發展趨勢。瀏覽器作為信息系統交互的關鍵和核心元素,其在國產自主可控領域的發展及應用非常重要。目前,Firefox瀏覽器已經基本在國產平臺上得到適配,但是由于瀏覽器插件基于插件廠家維護,譬如Flash插件,基本只提供X86架構實現,所以在國產平臺無法直接使用,嚴重影響了信息的展示和使用。
針對這一現狀,本文將研究瀏覽器插件在國產平臺的實現方法,以提高國產自主可控平臺瀏覽器系統性能,針對國產龍芯平臺,系統研究Firefox瀏覽器插件,探索基于國產自主指令系統開展瀏覽器的移植與功能擴展。
1國產化平臺
國產化計算平臺包括國產硬件、國產操作系統以及其他國產基礎軟件的一個集合。國產硬件主要包括龍芯、飛騰和申威,其中又以龍芯的市場化做得最好,而國產操作系統則包括中標麒麟、中科方德。中標麒麟操作系統無論在民口還是軍口都占有比較大的市場比重。目前在軍事信息系統領域基本采用龍芯硬件平臺和中標麒麟操作系統。
1.1龍芯處理器介紹
處理器設計技術是信息技術領域的核心技術,在社會經濟和國家安全領域發揮重要作用。經過10年的不斷積累,我國自主研發的龍芯處理器設計己達到國際先進水平。2002年,龍芯課題組發布國內第一款32位通用處理器龍芯1號。2003年,發布國內第一款64位通用處理器龍芯2B。繼龍芯2C,2E在性能上實現了“三級跳式”的增長之后,2008年龍芯課題組發布產品級芯片龍芯2F,實現與MIPS-Ⅲ指令兼容,采用90nm CMOS工藝,1.0GHz主頻時功耗僅3~5瓦。2010年,發布國內首款多核處理器龍芯3A,4核可擴展架構,采用65nm CMOSZ藝,1GHz時功耗小于15瓦。從2006年開始,龍芯邁出產業化步伐。
目前龍芯擁有3個系列的產品,涵蓋了廣泛的應用領域:龍芯1號處理器及其IP系列主要面向嵌入式應用;龍芯2號超標量處理器及其IP系列主要面向桌面應用;龍芯3號多核處理器系列主要面向高端服務器及高性能機應用。未來,龍芯仍將致力于研發高集成度的個人計算機以及高通量可擴展的服務器用芯片,支撐國家信息產業,不斷引領信息技術進步。龍芯處理器是基于MIPS-Ⅲ指令集的,并在其基礎上增加部分龍芯特有的指令,因此具有其自身的平臺特殊性。Windows不是開源的操作系統,其源代碼由微軟掌握,無法將其移植到龍芯的硬件平臺之上。
1.2中標麒麟操作系統介紹
中標麒麟操作系統(NeoKylin)是中標軟件有限公司與國防科大聯合打造的國產操作系統品牌,其特點既滿足了民口市場需求,又具有較強的安全特色。中標麒麟操作系統相對于windows系統可以做到版本升級、代碼備案、產品路線圖等方面的完全自主可控,從而滿足某些特殊領域對定型、列裝的自主可控需求;在安全技術方面,中標麒麟操作系統是首家通過公安部計算機信息系統安全產品質量監督檢查中心第四級結構化保護級檢測和中國人民解放軍信息安全測評中心軍用B+級安全認證的是目前國內安全等級最高的操作系統。經過多年的技術發展,中標麒麟操作系統無論在安全性、功能的完整性、穩定性和可靠性上都得到顯著提升。經過市場驗證,中標麒麟操作系統己基本達到了國外同類產品水平。目前,中標麒麟系統在工信部信息化建設項目、國產軟硬件應用示范項目中,甚至國防領域得到廣泛應用部署,成為國產的操作系統品牌。
2瀏覽器插件
瀏覽器是瀏覽網頁的主要手段,可以解析網頁上大部分內容,目前主流瀏覽器有IE,Firefox,Chrome等。瀏覽器工作原理是將解析的數據請求提交給后臺萬維網(Web)服務器,并從服務器端接收發來的超文本信息和多媒體數據,再一一進行解析、顯示和播放。網頁多為html腳本語言,展示能力有限,為了更加豐富地顯示頁面內容,譬如圖像、視頻等,就需要對瀏覽器進行擴展開發,以便定制瀏覽器的某些功能響應。通常采用2種技術手段:一種技術手段是Applet,采用Java語言開發,其調用方式與瀏覽器類型差別不大;另一種是插件開發,瀏覽器插件一般是一段獨立于瀏覽器的代碼模塊,可以支持一種或幾種數據類型的處理,顯示網頁己注冊類型的數據,能夠接收鍵盤和鼠標事件并作出相應的響應。
不同的瀏覽器,其插件開發接口以及調用方式都不盡相同。下面主要對IE瀏覽器和Firefox瀏覽器插件進行簡單說明。
IE瀏覽器插件表現為ActiveX控件,采用組件對象模型(COM),需支持IDispatch和IConnectionPoint接口。IDispatch接口定義控件的方法和屬性,而IConnectionPoint接口定義控件的事件。ActiveX開發支持多種語言,譬如:C++,Visual Basic及VBScript腳本語言。
Firefox瀏覽器與插件通過NPAPI(NetscapeApplication Interface網景應用程序接口)進行交互。NPAP1由插件需定義的接口、瀏覽器支持的接口和共享數據結構集3部分構成。其中插件需定義的接口以“NPP”為前綴,瀏覽器支持的接口以“NPN”為前綴,共享數據結構集主要用于兩方數據流的傳遞,以“NP”為前綴。Firefox瀏覽器插件多采用C/C++語言進行開發。
3國產龍芯平臺瀏覽器插件解決方案實現
該方案基于Native插件及插件運行時環境、封裝插件、插件查看器4個部分構成。其中Native插件是插件功能的實現主體,其文件格式是非龍芯平臺的二進制動態庫,通常為X86平臺文件格式;插件運行時環境是確保Native插件能夠正常加載的最小運行環境,如果Native插件為X86平臺二進制動態庫,那么插件運行時環境也是X86平臺的;封裝插件是一個簡單的瀏覽器插件,具備龍芯平臺的二進制動態庫文件格式,能夠被龍芯平臺上的瀏覽器正常加載;而插件查看器是龍芯平臺二進制可執行文件格式。
3.1系統結構圖
國產龍芯平臺瀏覽器插件解決方案總體結構如圖1所示,系統主要由2部分構成:網頁為交互層,用來顯示信息,接收用戶點擊事件,并將事件響應結果展示出來;對用戶請求事件的處理則由插件完成。封裝插件層,包含提供插件的一些基本信息,如果用戶僅僅是查看插件信息而不需要運行插件功能時,系統自動激活該功能,從而減少運行開支;插件查看器創建插件運行環境,加載插件,并且創建插件和頁面交互的通信通道,確保功能的順利執行。
3.2封裝插件
封裝插件主要有2個用途,首先它屬于瀏覽器插件,可運行在國產龍芯平臺上,能夠被瀏覽器識別且加載。同時它具備的功能非常有限,僅僅只提供對應Native插件基本信息,譬如插件名稱、插件描述信息、插件注冊類型、版本信息、啟用狀態和對應Native插件在系統中的安裝位置、需要加載的方式等。封裝插件與網頁交互流程如圖2所示。
3.3插件查看器
Native插件基本都是以C/C++發布的動態鏈接庫,與運行平臺密切相關,故Native插件基本都不能直接在國產龍芯平臺上加載運行,需要借助于插件查看器。首先,插件查看器根據插件運行時環境在其進程空間中為Native插件創建可運行的環境;然后將Native插件加載到該運行環境中,同時還與瀏覽器進程約定創建進程間通信管道;最后,頁面將用戶的要求通過通信管道傳遞給插件查看器,插件查看器激活Native插件的功能,根據要求進行顯示或者計算,并將運行結果通過管道返回給用戶。插件查看器與網頁交互流程如圖3所示。
4結語
文中重點介紹了Native插件在國產龍芯平臺下的解決方案,論述了Native瀏覽器插件不能在國產龍芯平臺下運行的根本原因以及解決辦法,最后給出了通過封裝插件開發框架開發的解決方案。經過試驗證實該方案不僅支持常用的Adobe Flash插件運行在國產龍芯平臺上的Firefox瀏覽器,還包括其他Native插件,如手寫批注插件、文檔編輯與查看插件等,對于國產自主指令系統開展瀏覽器的移植與功能擴展工作具有重要的學術意義和應用價值。