新四季網

一種插件管理方法及其系統的製作方法

2023-10-09 10:58:04 3

專利名稱:一種插件管理方法及其系統的製作方法
技術領域:
本發明涉及插件管理技術,具體涉及一種如何在跨平臺的環境中實現 插件管理的技術領域。
背景技術:
插件(plugin),指的是共享庫。共享庫在被調用過程中,無論被多少個 正在運行的程序同時調用,共享庫在內存中只存在一個副本,程序運行過 程中對共享庫的代碼和只讀數據段復用,達到節省系統內存資源的目的。
代表共享庫發展方向的是動態加載共享庫,通常狹義的插件就是指的 是此類共享庫。動態加載通過把對插件的連結和加載與調用程序的連結和 加載過程剝離,使對插件的連結和加載延後到程序啟動時、甚至程序運行 以後,這樣就可以不改變調用程序的本身代碼,更進一步的可以在程序正 在運行的狀態下對插件進行改變和更新,從而調整和升級程序功能,使應 用程序具有了靈活性和可擴展性。
動態共享庫這種特性的實現,依賴於系統的文件格式,也需要連結器
和加載器的支持,也就是說不同的作業系統,對於動態共享庫的實現,有 各自不同的文件編碼格式,使用的是不同的編譯連結加載器,在編碼過程 中對於不同系統也是使用迥異的調用接口 。這是支持動態加載作業系統之 間的插件管理和使用的差異。
在受限環境下,如某些手機的嵌入式環境,作業系統可能並不支持共 享庫的動態加載,這樣插件必須以靜態共享庫方式進行實現。靜態共享庫 的連結和加載與調用程序本身的連結和加載聯繫緊密不可分開。這是靜態共享庫與動態共享庫之間的差異。
目前在使用與管理插件的過程中,對於不同的插件實現方式是靜態 共享庫還是動態共享庫實現,如果是動態共享庫,具體又是在何種操作系 統下實現,只能用不同的使用和管理機制,這就損害了程序的跨平臺的擴 展性,給程序的移植帶來了困難。
可見,現有技術中存在一定的問題,需要進一步地改進。

發明內容
本發明的目的在於提供一種插件管理方法及其系統,其具備統一管理 及可擴展性,適用於使用插件的跨平臺開發。
本發明提供了 一種插件管理方法,所述管理方法包括以下步驟
A、 將插件的操作接口抽象出來,封裝成一上層調用接口;
B、 加載被調用插件時,存儲獲得的插件句柄並在內存中標記,並建立 該插件句柄與插件管理信息的對應關係;
C、 通過所述上層調用接口及所述內存中的插件句柄與插件管理信息的 對應關係,對被調用插件進行加載、卸載、或查找操作。
所述方法,其中,所述插件管理信息至少包含插件名,插件句柄, 插件被調用計數,以及常駐內存屬性位。
所述方法,其中,在所述內存中建立插件存儲結構體,用於存儲所述 插件句柄與插件管理信息的對應關係。
所述方法,其中,所述插件存儲結構體以單鍊表的形式保存在內存中, 每一個插件存儲結構體對應存儲一個被調用插件的管理信息,多個插件存 儲結構體順次構成所述單鍊表。
所述方法,其中,若系統採用的是靜態共享庫,則所述方法的步驟A 之前還包括
建立靜態插件資源配置文件,用於存儲被調用插件庫內部符號調用地
5址和符號調用字符串的對應關係信息。
本發明還提供了一種插件管理系統,其特徵在於,所述系統包括 對外接口模塊,用於將插件的操作接口抽象出來,封裝成一用於與上
層應用軟體進行通信的上層調用接口 ;
對內接口模塊,用於加載被調用插件時,將獲得的插件句柄在內存中 的標記,並建立該插件句柄與插件管理信息的對應關係;
所迷對內接口模塊通過對外接口模塊的封裝函數來調用。
所述系統,其中,所述對內接口模塊包括在所述內存中建立的用於 存儲所述插件句柄與插件管理信息對應關係的插件存儲結構體。
所述系統,其中,所述插件存儲結構體以單鍊表的形式保存在內存中, 每一個插件存儲結構體對應存儲一個被調用插件的管理信息,多個插件存 儲結構體順次構成所述單鍊表。
所述系統,其中,所述對內接口模塊還包括
在所述內存中建立的靜態插件資源配置文件,用於存儲被調用插件庫 內部符號調用地址和符號調用字符串的對應關係信息。
發明效果本發明完成了對插件進行了統一存儲、操作和管理。特別 針對是解決了共享庫靜態加載與動態加載之間的差別,延伸了程序對插件 使用的範圍,提高了程序跨平臺的擴展性,方便了程序的移植。


圖1為本發明方法的流程圖; 圖2為本發明支持靜態庫的方法流程圖; 圖3為整個插件管理系統的實現框架示意圖; 圖4為整個插件管理方法的使用框架示意圖; 圖5為插件存儲結構體的單鍊表結構示意圖。
具體實施例方式
如圖1所示,本發明提供了一種插件管理方法,該方法包括以下步驟
A、 將插件的操作接口抽象出來,封裝成一上層調用接口;
B、 加載被調用插件時,存儲獲得的插件句柄並在內存中標記,建立該 插件句柄與插件管理信息的對應關係;這裡的插件管理信息至少包含插 件名,插件句柄,插件被調用計數,以及常駐內存屬性位。
C 、通過所述上層調用接口及所述內存中的插件句柄與插件管理信息的 對應關係,對被調用插件進行加載、卸載、或查找操作。
為了便於存儲上述插件句柄與插件管理信息的對應關係,本發明在所 述內存中建立插件存儲結構體,用於存儲所述插件句柄與插件管理信息的 對應關係;所述插件存儲結構體以單鍊表的形式保存在內存中,每一個插 件存儲結構體對應存儲一個被調用插件的管理信息,多個插件存儲結構體 順次構成所述單鍊表,其具體結構可參見圖5。
從上述方法可以看出,本發明提供了插件的統一管理,其包括以下幾 方面1、統一的4妄口將插件的加載,插件符號查找,插件卸載,常駐插 件等插件操作接口抽象出來,形成統一的上層調用接口。 2、統一的存儲 打開插件後返回的句柄是插件在內存中的標記,將它與插件名字字符串, 調用次數等其他必要管理信息統一新建結構體進行存儲。3、通過統一的接 口、統一的存儲,向上屏蔽了不同作業系統的實現細節完成了使用插件的 跨平臺。
基於上述幾個優點,本發明可擴展到不同的作業系統中。在插件管理 內部對不同作業系統的插件應用接口也統一進行封裝成插件加裁、符號查 找、插件卸載接口。這樣就將不同作業系統的實現的差異和插件的統一管 理相分離。插件管理要對新的作業系統進行擴展,只需要使用系統接口完 成插件加載、符號查找、插件卸載接口的封裝,就可實現插件管理的擴展。
插件是通過字符串來調用插件中的符號資源,本發明的方法可以廣泛的應用到支持動態加載的作業系統。可能有些作業系統不支持靜態共享庫 的使用,考慮到靜態庫本身沒有字符串到符號資源的對應調用關係,則為
了使本發明的方法適應使用靜態庫的形式,如圖2所示,在上述步驟A之 前增加以下步驟建立靜態插件資源配置文件,用於存儲被調用插件庫內 部符號調用地址和符號調用字符串的對應關係信息。這裡使用靜態插件資 源配置文件,完成字符串到符號資源的關係儲存。並且依照動態加載的方 式相同將插件加載、符號查找、插件卸載接口進行實現並封裝,實現了插 件的靜態加載。
基於上述方法,本發明還提供了一種插件管理系統,如圖3所示,其 包括對外接口模塊,用於將插件的操作接口抽象出來,封裝成一用於與 上層應用軟體進行通信的上層調用接口;對內接口模塊,用於加載被調用 插件時,將獲得的插件句柄存儲並在內存中的標記,同時建立該插件句柄 與插件管理信息的對應關係;所述對內接口模塊通過對外接口模塊的封裝 函數來調用。
其原理是如圖3所示,根據上述插件管理方法,將整個插件管理分 為兩層
一層是對外接口模塊面向上層應用,將插件管理的各平臺操作的相同 處抽象出來。為插件使用抽象出插件加載,符號查找,插件卸載,常駐插 件等接口,將插件管理的共性管理操作在這些接口中實現,並使用統一的
結構體存儲句柄、插件名、調用次數、常駐內存屬性位等信息,實現統一 管理統一存儲。
另 一層是對內接口模塊由作業系統實現,將插件管理的各平臺相異之 處封裝起來,使用不同系統的應用程式接口實現相同的插件加載、符號查 找、插件卸載功能供對外接口調用。這樣,如果需要將插件管理在新系統 中擴展,也只需要將系統應用程式接口封裝成統一形式即可。靜態加載系 統,同其他動態加載系統一樣也在該層封裝,只是將插件加載和符號定位的功能使用靜態插件信息配置文件與查找函數結合的方式實現了 。基於此 說明可見,上述對內接口模塊包括
在所述內存中建立的用於存儲所述插件句柄與插件管理信息對應關係
的插件存儲結構體;所述插件存儲結構體以單鍊表的形式保存在內存中, 每一個插件存儲結構體對應存儲一個^L調用插件的管理信息,多個插件存 儲結構體順次構成所述單鍊表,其具體結構可參見圖5。
以及在所述內存中建立的靜態插件資源配置文件,用於存儲被調用插 件庫內部符號調用地址和符號調用字符串的對應關係信息。這裡的靜態插 件資源配置文件主要應用於支持靜態共享庫的作業系統。
以下將結合附圖4和5, AUV、下幾個方面詳細描述利用本發明的方法和 系統是如何進行插件管理的,即對被調用插件進行加載、卸載、或查找操 作。
首先,應用插件在作業系統平臺上的加載操作,其過程如下 第一步,創建用於存儲被調用插件管理信息的插件存儲結構體,這個 結構體作為不同作業系統的共有信息的載體,用來存儲被調用插件的 一些 管理信息,比如插件名,插件句柄,插件被調用計數,以及常駐內存屬性
位等等;
第二步,通過調用上層調用接口,完成加載被調用插件得工作並且對 上述插件存儲結構體進行初始化,即獲得被調用插件的插件句柄,存儲到 插件存儲結構體中,作為後繼操作被調用插件的標識。如圖5所示,當程 序調用到多個插件時,插件結構在內存中以單鍊表的形式進行存儲,存儲 新打開的插件信息的插件存儲結構體被添加在單鍊表的表頭。每一個插件 存儲結構體對應存儲一個被調用插件的管理信息,多個插件存儲結構體順 次構成所述單鍊表。具體插件的加載過程通過調用作業系統相異的系統接 口來完成。
如圖4和5所示,上述第一步中所提到的插件存儲結構體中包含以下插件管理信息
(1) 插件名(Name),用來搜索插件;
(2) 插件句柄(handle),作為已加載待操作插件的標識;
(3) 插件被調用計數(Ref_count),用來記錄調用該插件的運行程序的個數,當沒有任何程序調用該插件時,該插件才能被真正卸載;
(4 )常駐內存屬性位(Is—resident),用來表示插件在內存中的常駐屬性,根據此為可以判斷是否需要卸載或加載插件。根據實際情況設置插件被調用計數和常駐內存屬性位,可以在真正需要卸載或加載的時候,將插
件從內存中卸載或加載。比如,常駐內存屬性位為"r表示插件需要常駐
於內存,常駐內存屬性位設置為"0"時,表示插件不需要常駐於內存,可
以在不使用的時候進行卸載。
上述四個都是基本必須項,另外,在上述四個的基礎上,還可以包括插件解構函數入口 (Unload),用來指引作業系統將插件進行卸載。初始編程時,預設了解構函數,則將其入口地址記錄在所述插件存儲結構體的相應位置上,如果沒有預設解構函數,則採用默認方式對插件直接進行卸載。可見,本發明將插件實現的底層作業系統差異對上層程序進行了屏蔽,利用插件存儲解構體為上層程序提供了插件的統一使用接口 。這樣在以後程序在跨平臺移植時,不需要改變插件調用、管理方面的代碼,使之具備了可移植性。同時,本發明對插件的加載卸載定位符號,以及插件的常駐與返回插件名提供了管理接口,在系統的實現的基礎上,提供了額外的功能接口以及更完備的安全保護。方便了用戶的對插件的使用以及維護。
在加載完成插件後,下一步應用需要獲得插件內的符號。定位插件內的符號就需要直接處理符號的連結信息。如圖1所示,對於支持動態加載的作業系統,可以通過封裝函數調用不同作業系統提供的符號定位應用程式接口,直接進行符號定位。
對於不支持動態加載運用靜態共享庫實現插件的功能的系統,由於靜
10態共享庫,在程序連結前已經完成了連結操作,這就是說其實符號信息在應用連結完成以後已經加載到可執行文件中了 ,但是要實現插件調用的統一,就得需要字符串與符號資源地址的對應關係。動態插件庫包含此對應關係信息,而靜態庫本身不包含此信息,這裡就需要將此信息以靜態插件信息配置文件方式進行儲存,對應每個靜態庫,配置文件儲存插件名,符號總數,符號地址和符號名字字符串對應表三部分組成。所以,通過封裝函數調用靜態庫符號定位函數,通過此函數查找靜態共享庫提供者預先提供的符號定位配置信息,進行符號定位的方式來實現插件管理。這裡提到的符號定位配置信息文件記錄被調用插件庫內部符號調用地址和符號調用字符串的對應關係信息,可以預先設置。上述符號定位配置信息文件、封裝函數和符號定位應用程式接口 ,與存儲在所述插件存儲結構體中的插件句柄一起,完成符號定位的完整操作,所以,上述符號定位配置信息文件、封裝函數和符號定位應用程式接口 ,與存儲在所述插件存儲結構體中的插件句柄相關聯,保證能依據某一信息查找到其他的相關信息。為了完成上述插件符號定位配置信息,需要在建立靜態插件信息配置文件時封裝查找函數,實現插件的查找、以及插件內符號資源的查找和定位。可見,本發明完成動態作業系統中系統插件應用程式接口相同的功能,也就實現了插件管理在靜態夾在系統中的擴展。
當完成插件調用後,應用程式將釋放被調用插件。由於插件是共享庫,必須保證沒有其他任何程序在調用它時,才能實施真正的從內存的卸載動作。所以,首先根據插件存儲結構體中的常駐內存屬性位和插件被調用計數,判斷是否需要卸載所述被調用插件。根據具體情況,如果插件被調用計數顯示插件當前沒有被任何程序調用,且常駐內存屬性位顯示該插件不用在內存常駐,則插件可從內存中卸載。當所述被調用插件需要卸載時,查找所述插件存儲結構體,獲得被調用插件的插件句柄,並根據插件解構函數入口或默i^的方式,對所述^f皮調用插件進^f亍卸載。動態插件以解構函數或默認的方式將插件卸載,靜態插件不能卸載,則保留於內存。當被調用插件被卸載後,將該被調用插件所對應的插件存儲結構體從所述單鍊表中釋放,完成插件在內存中的生存周期。
通過上述描述可見,本發明通過內存中建立插件存儲結構體,存儲了所加載插件句柄等必要信息,並以鍊表的方式方便添加刪除查找等管理;內部對作業系統的應用程式接口進行了封裝,便於實現對新系統的可擴充
性;將靜態共享庫的配置信息,通過查找,存儲到插件存儲結構體中,屏蔽了動態與靜態共享庫的差異,保證了上層程序及插件管理機制的可移植性。
與現有技術相比,本發明定義了一種統一管理和使用插件的方法,其保證了用戶及上層調用插件的程序不用再知道下層插件是以如何方式實
現,無論是靜態還是動態,具體哪種動態,只是使用統一的接口對插件進行管理和使用。另外,將各種不同插件實現方式之間有共性的東西提取出
來用進行統一存儲與管理,將與作業系統相關的差異性部分剝離出來,進行針對性的處理,並且使用配置文件對作業系統進行適配,對於以後新添加的不同平臺的插件實現,只需要改變後一部分。從而徹底實現了軟體系統的可移植和可擴充性,實現了跨平臺的插件使用與管理的統一。
上述各具體步驟的舉例說明較為具體,並不能因此而認為是對本發明的專利保護範圍的限制,本發明的專利保護範圍應以所附權利要求為準。
1權利要求
1、一種插件管理方法,其特徵在於,所述管理方法包括以下步驟A、將插件的操作接口抽象出來,封裝成一上層調用接口;B、加載被調用插件時,存儲獲得的插件句柄並在內存中標記,並建立該插件句柄與插件管理信息的對應關係;C、通過所述上層調用接口及所述內存中的插件句柄與插件管理信息的對應關係,對被調用插件進行加載、卸載、或查找操作。
2、 根據權利要求1所述的方法,其特徵在於,所述插件管理信息至少 包含插件名,插件句柄,插件被調用計數,以及常駐內存屬性位。
3、 根據權利要求1或2所述的方法,其特徵在於,在所述內存中建立 插件存儲結構體,用於存儲所述插件句柄與插件管理信息的對應關係。
4、 根據權利要求3所述的方法,其特徵在於,所述插件存儲結構體以 單鍊表的形式保存在內存中,每一個插件存儲結構體對應存儲一個被調用 插件的管理信息,多個插件存儲結構體順次構成所述單鍊表。
5、 根據權利要求1或2所述的方法,其特徵在於,若系統採用的是靜 態共享庫,則所述方法的步驟A之前還包括建立靜態插件資源配置文件,用於存儲被調用插件庫內部符號調用地 址和符號調用字符串的對應關係信息。
6、 一種插件管理系統,其特徵在於,所述系統包括 對外接口模塊,用於將插件的操作接口抽象出來,封裝成一用於與上層應用軟體進行通信的上層調用接口 ;對內接口模塊,用於加載被調用插件時,將獲得的插件句柄存儲並在 內存中的標記,建立該插件句柄與插件管理信息的對應關係;所述對內接口模塊通過對外接口模塊的封裝函數來調用。
7、 根據權利要求6所述的系統,其特徵在於,所述對內接口模塊包括: 在所述內存中建立的用於存儲所述插件句柄與插件管理信息對應關係的插件存儲結構體。
8、 根據權利要求7所述的系統,其特徵在於,所述插件存儲結構體以 單鍊表的形式保存在內存中,每一個插件存儲結構體對應存儲一個被調用 插件的管理信息,多個插件存儲結構體順次構成所述單鍊表。
9、 根據權利要求7所述的系統,其特徵在於,所述對內接口模塊還包括在所述內存中建立的靜態插件資源配置文件,用於存儲被調用插件庫 內部符號調用地址和符號調用字符串的對應關係信息。
全文摘要
本發明公開了一種插件管理方法及其系統,其方法包括A.將插件的操作接口抽象出來,封裝成一上層調用接口;B.加載被調用插件時,存儲獲得的插件句柄並在內存中標記,建立該插件句柄與插件管理信息的對應關係;C.通過所述上層調用接口及所述內存中的插件句柄與插件管理信息的對應關係,對被調用插件進行加載、卸載、或查找操作。本發明完成了對插件進行了統一存儲、操作和管理。特別針對是解決了共享庫靜態加載與動態加載之間的差別,延伸了程序對插件使用的範圍,提高了程序跨平臺的擴展性,方便了程序的移植。
文檔編號G06F9/445GK101464805SQ20081024159
公開日2009年6月24日 申請日期2008年12月24日 優先權日2008年12月24日
發明者超 鄧 申請人:中興通訊股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀