詹秋芳+李笑瀾



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