專利名稱:利用快速運(yùn)行時(shí)間識(shí)別計(jì)量軟件產(chǎn)品的使用的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域。更具體地說(shuō),本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)中軟件產(chǎn)品使用的計(jì)量(meter)。特別地,本發(fā)明目的在于簡(jiǎn)化系統(tǒng)上使用中的產(chǎn)品的運(yùn)行時(shí)間識(shí)別(run-time identification)。
背景技術(shù):
軟件產(chǎn)品(例如計(jì)算機(jī)程序)可被完美地復(fù)制無(wú)限份。這是希望保護(hù)他們的知識(shí)產(chǎn)權(quán)的產(chǎn)品發(fā)行人的主要關(guān)心的事;實(shí)際上,發(fā)行人一般接收每件產(chǎn)品的許可使用的特許費(fèi),從而產(chǎn)品的任何未計(jì)入的使用或分發(fā)導(dǎo)致未支付的特許費(fèi)。隨著因特網(wǎng)的普及,過(guò)去幾年中該問(wèn)題已被惡化,因特網(wǎng)進(jìn)一步簡(jiǎn)化了這種產(chǎn)品的無(wú)控分發(fā)。
避免軟件產(chǎn)品的未計(jì)入使用的最簡(jiǎn)單方式在于防止擅自復(fù)制和傳播。例如,一些產(chǎn)品嵌入限制可產(chǎn)生的副本的數(shù)目或者在經(jīng)過(guò)預(yù)定的一段時(shí)間之后,禁止該產(chǎn)品的運(yùn)行的控制代碼。另一種技術(shù)包括要求擁有運(yùn)行該產(chǎn)品的軟件或硬件密鑰。一種不同的解決方案包括提交每個(gè)產(chǎn)品,以便調(diào)用許可管理系統(tǒng),許可管理系統(tǒng)核實(shí)產(chǎn)品的使用是否被授權(quán),隨后據(jù)此允許產(chǎn)品啟動(dòng)或者迫使其停止。
但是,上述技術(shù)侵入性較大,因?yàn)樗鼈円蟀l(fā)行人修改每個(gè)產(chǎn)品。此外,這些解決方案并不具有通用性,在計(jì)量現(xiàn)有產(chǎn)品的使用方面完全無(wú)效。
一種不同的方法基于軟件目錄的使用。軟件目錄列舉(要被計(jì)量的)關(guān)心的所有產(chǎn)品;每個(gè)產(chǎn)品與一個(gè)或多個(gè)可執(zhí)行模塊相關(guān),當(dāng)運(yùn)行時(shí),所述一個(gè)或多個(gè)可執(zhí)行模塊指示產(chǎn)品的使用。這種情況下,在后臺(tái)工作的許可代理檢測(cè)正在運(yùn)行的模塊;許可代理隨后通過(guò)軟件目錄識(shí)別使用中的對(duì)應(yīng)產(chǎn)品。許可代理隨后中關(guān)閉與未被準(zhǔn)許運(yùn)行的產(chǎn)品對(duì)應(yīng)的任何過(guò)程(以便停止其執(zhí)行),并使該產(chǎn)品不能再次啟動(dòng)。另一方面,如WO-A-03038570中所述,許可代理檢測(cè)響應(yīng)產(chǎn)品的執(zhí)行請(qǐng)求而啟動(dòng)的任何新過(guò)程(例如,利用內(nèi)核掛斷技術(shù))。過(guò)程被暫停以便核實(shí)運(yùn)行對(duì)應(yīng)產(chǎn)品的授權(quán)。這種情況下,如果被給予授權(quán),那么恢復(fù)該過(guò)程,以使該產(chǎn)品能夠啟動(dòng);否則,過(guò)程被異常中斷,以便防止產(chǎn)品的使用(從而避免在過(guò)程正在執(zhí)行有潛在危險(xiǎn)的操作時(shí),關(guān)閉該過(guò)程)。
一般來(lái)說(shuō),依據(jù)多個(gè)屬性(例如其名稱、大小和檢查和)在軟件目錄中識(shí)別每個(gè)模塊。這樣,能夠高度準(zhǔn)確地識(shí)別使用中的產(chǎn)品(大大降低誤識(shí)別的概率)。此外,多個(gè)屬性允許區(qū)分相同產(chǎn)品的不同版本(它們一般基于具有同樣名稱的模塊)。
上述解決方案的問(wèn)題在于許可代理必須訪問(wèn)在系統(tǒng)上運(yùn)行的每個(gè)模塊,以便取回其屬性(例如,打開模塊,并計(jì)算必需的信息)。該操作需要知道運(yùn)行模塊的完整路徑,以便通過(guò)每個(gè)文件系統(tǒng)的典型樹形結(jié)構(gòu),到達(dá)運(yùn)行模塊。然而,由于性能的原因,在多數(shù)操作系統(tǒng)中,通過(guò)對(duì)應(yīng)的位置識(shí)別運(yùn)行模塊;位置直接指向運(yùn)行模塊,而不必遍歷整個(gè)樹形結(jié)構(gòu)。但是,這種情況下,不能直接地從其位置得到運(yùn)行模塊的路徑(因?yàn)橥ǔ2荒軓倪\(yùn)行模塊到其根節(jié)點(diǎn)反向遍歷樹形結(jié)構(gòu))。
于是,許可代理必須掃描整個(gè)樹形結(jié)構(gòu),以識(shí)別與每個(gè)運(yùn)行模塊的位置相關(guān)聯(lián)的路徑(以便訪問(wèn)該運(yùn)行模塊,取回所需的屬性)。該過(guò)程非常費(fèi)時(shí),并且浪費(fèi)大量的系統(tǒng)資源。
當(dāng)許可代理定期檢測(cè)運(yùn)行模塊時(shí),上述缺陷尤其嚴(yán)重。事實(shí)上,這種情況下,不能高度準(zhǔn)確地(關(guān)于運(yùn)行模塊的授權(quán))對(duì)其進(jìn)行核實(shí)。這對(duì)計(jì)量使用中的產(chǎn)品的過(guò)程的準(zhǔn)確性存在不利影響。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提出使位置與路徑相關(guān)聯(lián),以便實(shí)現(xiàn)對(duì)應(yīng)模塊的快速運(yùn)行時(shí)間識(shí)別的思想。
具體地說(shuō),本發(fā)明的一方面提供一種計(jì)量數(shù)據(jù)處理系統(tǒng)中的軟件產(chǎn)品的使用的方法。該方法從提供全局目錄開始;全局目錄使要計(jì)量的每個(gè)產(chǎn)品與一個(gè)或多個(gè)可執(zhí)行模塊相關(guān)聯(lián),當(dāng)運(yùn)行時(shí),所述一個(gè)或多個(gè)可執(zhí)行模塊指示所述產(chǎn)品的使用。產(chǎn)生使路徑(用于訪問(wèn)包括在全局目錄中的安裝于系統(tǒng)上的每個(gè)模塊)與位置(用于識(shí)別運(yùn)行時(shí)的模塊)的局部目錄(local catalogue)。該方法隨后包含檢測(cè)在系統(tǒng)上運(yùn)行的每個(gè)模塊的位置的步驟?,F(xiàn)在根據(jù)局部目錄確定與每個(gè)運(yùn)行模塊的位置相關(guān)的路徑。通過(guò)對(duì)應(yīng)的路徑,可訪問(wèn)每個(gè)運(yùn)行模塊,以便根據(jù)全局目錄,識(shí)別與運(yùn)行模塊相關(guān)的產(chǎn)品。
這樣,可直接訪問(wèn)每個(gè)運(yùn)行模塊(而不需要掃描系統(tǒng),取回(retrieve)與對(duì)應(yīng)位置相關(guān)聯(lián)的路徑)。從而該過(guò)程(process)很快,并且不浪費(fèi)大量的系統(tǒng)資源。
在不有損其通用性的情況下,提出的解決方案允許頻繁地定期(關(guān)于運(yùn)行模塊的授權(quán))核實(shí)運(yùn)行模塊,而不會(huì)不利地影響系統(tǒng)的性能。這大大提高了計(jì)量正在使用的產(chǎn)品的過(guò)程的準(zhǔn)確性。
下面描述的本發(fā)明的不同實(shí)施例提供另外的優(yōu)點(diǎn)。
例如,當(dāng)定期確定在系統(tǒng)上執(zhí)行的過(guò)程的列表,以便確定運(yùn)行模塊的位置時(shí),本發(fā)明的解決方案特別有利。
事實(shí)上,這種情況下,沒(méi)有備選技術(shù)可用于取回對(duì)應(yīng)的路徑(除了掃描系統(tǒng)之外)。
提出的解決方案專用于其中利用一個(gè)或多個(gè)屬性,在全局目錄中定義每個(gè)模塊的應(yīng)用。
這允許直接取回每個(gè)運(yùn)行模塊的屬性(用于識(shí)別每個(gè)運(yùn)行模塊)。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,通過(guò)掃描系統(tǒng)的大容量存儲(chǔ)器(用于檢測(cè)每個(gè)安裝模塊的路徑和位置),創(chuàng)建局部目錄;如果安裝的模塊包括在全局目錄中,那么隨后把該信息加入到局部目錄中。
可離線進(jìn)行提出的過(guò)程。
作為另一改進(jìn),每當(dāng)運(yùn)行模塊的位置未包括在局部目錄中時(shí),掃描大容量存儲(chǔ)器(mass memory),檢測(cè)對(duì)應(yīng)的路徑;如果運(yùn)行模塊被包括在全局目錄中,那么把其路徑和位置加入到局部目錄中。
這使得能夠在運(yùn)行時(shí)間,關(guān)于創(chuàng)建局部目錄之后安裝的任何模塊,更新局部目錄。
一種進(jìn)一步改進(jìn)該解決方案的另一方式是(關(guān)于運(yùn)行模塊的位置),確定與從局部目錄抽取的路徑相關(guān)聯(lián)的實(shí)際位置,以便核實(shí)這種關(guān)聯(lián)是否仍然有效。
這種附加特征提高了識(shí)別的準(zhǔn)確性(因?yàn)樗苊饬嗽趧?chuàng)建局部目錄之后,運(yùn)行模塊已被移動(dòng)時(shí)的錯(cuò)誤結(jié)論);在不顯著影響性能的情況下獲得該結(jié)果(因?yàn)楦鶕?jù)路徑確定位置的操作很快)。
有利的是,如果關(guān)聯(lián)不再有效,那么從局部目錄中除去信息;隨后掃描大容量存儲(chǔ)器,以便檢測(cè)與運(yùn)行模塊的位置相關(guān)聯(lián)的路徑,并把其路徑和位置加入到局部目錄中(如果運(yùn)行模塊包括在全局目錄內(nèi)的話)。
這允許使局部目錄始終保持最新(即使任何運(yùn)行模塊已被移動(dòng))。
本發(fā)明的另一方面提供一種執(zhí)行上述方法的計(jì)算機(jī)程序。
本發(fā)明的另一方面提供一種包含該計(jì)算機(jī)程序的計(jì)算機(jī)產(chǎn)品。
本發(fā)明的另一方面提供對(duì)應(yīng)的數(shù)據(jù)處理系統(tǒng)。
在附加的權(quán)利要求中陳述了本發(fā)明的特征。但是,結(jié)合附圖,參考下面只是作為非限制性指示給出的詳細(xì)說(shuō)明,將更好地理解發(fā)明本身,及其其它特征和優(yōu)點(diǎn)。
圖1a是其中適用根據(jù)本發(fā)明的實(shí)施例的解決方案的數(shù)據(jù)處理系統(tǒng)的示意方框圖;圖1b表示該系統(tǒng)的類屬工作站的功能塊;圖2舉例表示工作站的例證文件系統(tǒng)的結(jié)構(gòu);圖3描述可被用于實(shí)踐根據(jù)本發(fā)明的實(shí)施例的解決方案的主要軟件組件;
圖4a-4d描述與根據(jù)本發(fā)明的實(shí)施例的解決方案的例證實(shí)現(xiàn)相關(guān)聯(lián)的動(dòng)作流程。
具體實(shí)施例方式
參見(jiàn)圖1a,圖中描述了具有分布式體系結(jié)構(gòu)的數(shù)據(jù)處理系統(tǒng)100。系統(tǒng)100包括多個(gè)工作站(WS)105w,所述多個(gè)工作站105w被分成多個(gè)組;一個(gè)特許服務(wù)器105s與每組工作站105w相關(guān)聯(lián)。特許服務(wù)器105s和對(duì)應(yīng)的工作站105w通過(guò)網(wǎng)絡(luò)110(例如LAN)相互連接。不同的特許服務(wù)器105s通過(guò)一個(gè)不同的網(wǎng)絡(luò)120(例如,基于因特網(wǎng)的網(wǎng)絡(luò))與遠(yuǎn)程管理服務(wù)器115通信;管理服務(wù)器115實(shí)現(xiàn)中央儲(chǔ)存庫(kù),在所述中央儲(chǔ)存庫(kù)中,收集和管理系統(tǒng)100的使用、采購(gòu)和庫(kù)存數(shù)據(jù)。
如圖1b中所示,類屬工作站105w由并行與系統(tǒng)總線153連接的幾個(gè)單元形成。具體地說(shuō),微處理器(μP)156控制工作站105w的操作;RAM 159被微處理器156直接用作工作存儲(chǔ)器,ROM 162保存工作站105w的基本自引導(dǎo)代碼。外圍單元在局部總線165周圍被群集(利用相應(yīng)的接口)。具體地說(shuō),大容量存儲(chǔ)器由硬盤168和讀取CD-ROM 174的驅(qū)動(dòng)器171組成。此外,工作站105w包括輸入裝置177(例如鍵盤和鼠標(biāo)),和輸出裝置180(例如,監(jiān)視器和打印機(jī))。網(wǎng)絡(luò)接口卡(NIC)183被用于連接工作站105w與網(wǎng)絡(luò)。橋接器186使系統(tǒng)總線153與局部總線165連接。微處理器156和橋接器186能夠起請(qǐng)求訪問(wèn)系統(tǒng)總線153,以便傳送信息的主代理的作用。判優(yōu)器189管理對(duì)系統(tǒng)總線153的互斥訪問(wèn)的批準(zhǔn)。
現(xiàn)在參見(jiàn)圖2,上述工作站的操作系統(tǒng)一般實(shí)現(xiàn)具有分層結(jié)構(gòu)的文件系統(tǒng)。特別地,文件系統(tǒng)被組織成樹形結(jié)構(gòu)200,從定義(物理或邏輯)設(shè)備的根節(jié)點(diǎn)205開始,也稱為根目錄。每個(gè)中站節(jié)點(diǎn)210(具有一個(gè)或多個(gè)從屬于其的子節(jié)點(diǎn))定義子目錄。葉節(jié)點(diǎn)(不具有從屬于其的任何子節(jié)點(diǎn))或者是空的子目錄或者是文件215。
根目錄205和每個(gè)子目錄210包括指向?qū)?yīng)子節(jié)點(diǎn)(由子目錄210或文件215構(gòu)成)的一個(gè)或多個(gè)正向指針220;每個(gè)子目錄210還包括指向其父節(jié)點(diǎn)(即,另一子目錄210或根目錄205)的反向指針222。指針220允許從上到下(從根目錄205到任何所需的文件215)遍歷樹形結(jié)構(gòu)200。特別地,借助始于根目錄205,并通過(guò)介入的子目錄(如果有的話)到達(dá)文件215的對(duì)應(yīng)路徑,訪問(wèn)每個(gè)文件215。例如,在從屬于根目錄i°MyRoot的子目錄i°MyDir中列舉的稱為i°MyFile的文件由路徑i°MyRoot\MyDir\MyFile識(shí)別。
由于性能的原因,工作站的操作系統(tǒng)借助另一指針225(代替其路徑)內(nèi)部識(shí)別每個(gè)文件215。指針225定義硬盤上文件215的(邏輯)位置;這樣,操作系統(tǒng)能夠直接訪問(wèn)文件215,而不必經(jīng)過(guò)整個(gè)樹形結(jié)構(gòu)200。例如,位置可由識(shí)別邏輯磁盤的數(shù)字(也稱為文件系統(tǒng)ID)和文件系統(tǒng)唯一的數(shù)字(也稱為i-node)組成。應(yīng)注意文件215不包括指向?qū)?yīng)父節(jié)點(diǎn)的反向指針;于是,不能從任何文件215到根目錄205地穿過(guò)樹形結(jié)構(gòu)200。每個(gè)文件215的位置225不能被用于獲得其路徑;從而,對(duì)(調(diào)用其服務(wù)的任何應(yīng)用)從操作系統(tǒng)外部訪問(wèn)文件215來(lái)說(shuō),位置225不起作用。
參見(jiàn)圖3,用附圖標(biāo)記300整體表示可用于實(shí)踐(根據(jù)本發(fā)明一個(gè)實(shí)施例的)方法的主要軟件組件。信息(程序和數(shù)據(jù))一般保存在硬盤上,當(dāng)程序運(yùn)行時(shí),被載入(至少部分地)對(duì)應(yīng)的工作存儲(chǔ)區(qū)中。程序最初從CD-ROM安裝到硬盤上。
具體考慮類屬許可服務(wù)器105s,對(duì)應(yīng)的管理器305控制相關(guān)的工作站。許可管理器305訪問(wèn)授權(quán)目錄310,授權(quán)目錄310包含和不同軟件產(chǎn)品的授權(quán)的使用條件有關(guān)的信息;例如,授權(quán)目錄310規(guī)定每個(gè)軟件產(chǎn)品可在其上運(yùn)行的工作站的工作存儲(chǔ)區(qū)的最大處理能力或最大容量,產(chǎn)品的許可證的數(shù)目(定義允許同時(shí)運(yùn)行的軟件產(chǎn)品的實(shí)例的最大數(shù)目)等等。許可管理器305還控制運(yùn)行表315中信息的輸入,運(yùn)行表315列舉在工作站上同時(shí)使用的產(chǎn)品。另外,許可管理器305從對(duì)應(yīng)的工作站收集信息(例如,和安裝的程序,使用未授權(quán)或未知產(chǎn)品的任何嘗試等有關(guān)的信息);該信息被保存在對(duì)應(yīng)的日志320中。
許可服務(wù)器105s還保存全局軟件目錄325,全局軟件目錄325被分發(fā)給所有相關(guān)工作站(例如,定期地或者當(dāng)其發(fā)生任何變化時(shí))。全局目錄325列舉系統(tǒng)中所有要被計(jì)量的已知產(chǎn)品。每個(gè)產(chǎn)品由簽名識(shí)別,所述簽名由一個(gè)或多個(gè)可執(zhí)行的模塊組成,當(dāng)運(yùn)行時(shí),所述一個(gè)或多個(gè)可執(zhí)行模塊指示產(chǎn)品的使用。在全局目錄325中利用多個(gè)屬性指定每個(gè)模塊;一般地,用其名稱、大小和檢查和來(lái)識(shí)別模塊(以便提高識(shí)別的準(zhǔn)確性)。
現(xiàn)在研究類屬工作站105w,操作系統(tǒng)330提供一個(gè)軟件平臺(tái),任何應(yīng)用可在該軟件平臺(tái)上運(yùn)行。特別地,許可工具335被用于控制任何軟件產(chǎn)品340的使用。具體地說(shuō),許可工具335包括從許可服務(wù)器105s接收的全局目錄325。掃描器345訪問(wèn)全局目錄325。模塊345(通過(guò)操作系統(tǒng)330提供的對(duì)應(yīng)服務(wù))掃描工作站105w的大容量存儲(chǔ)器,以便檢測(cè)安裝在工作站105w上的每個(gè)模塊的路徑和位置。掃描器345產(chǎn)生局部目錄350,局部目錄350包括包含在全局目錄中的每個(gè)安裝模塊的一個(gè)條目;該條目使安裝模塊的路徑與對(duì)應(yīng)的位置相關(guān)聯(lián)。為此,局部目錄350最好由把路徑保存為數(shù)據(jù),并使用位置作為關(guān)鍵字的散列表組成;這樣,通過(guò)簡(jiǎn)單地訪問(wèn)由位置的散列值(使用用于插入路徑的相同散列函數(shù)來(lái)計(jì)算)尋址的條目,能夠很快地抽取與每個(gè)位置相關(guān)聯(lián)的路徑。
這樣獲得的局部目錄350由處理程序(handler)355保持。在后臺(tái)持續(xù)運(yùn)行的計(jì)量代理360(通過(guò)處理程序355)訪問(wèn)局部目錄350,以及全局目錄325。計(jì)量代理360與監(jiān)視器365通過(guò)界面連接。監(jiān)視器365詢問(wèn)操作系統(tǒng)330,以便獲得正在工作站105w上執(zhí)行的過(guò)程的列表;對(duì)于每個(gè)過(guò)程,監(jiān)視器365取回正在運(yùn)行的對(duì)應(yīng)模塊的位置(在被操作系統(tǒng)330內(nèi)部保存的情況下,該信息立即可用)。運(yùn)行模塊的位置隨后被傳送給計(jì)量代理360。計(jì)量代理360再(利用局部目錄350)確定與每個(gè)運(yùn)行模塊的位置相關(guān)的路徑。這樣,計(jì)量代理360能夠訪問(wèn)每個(gè)運(yùn)行模塊,以便(借助全局目錄325)識(shí)別對(duì)應(yīng)的產(chǎn)品340。這樣獲得的信息由計(jì)量代理360傳送給許可管理器305。許可管理器305(利用授權(quán)目錄310和運(yùn)行表315)批準(zhǔn)或拒絕使用每個(gè)產(chǎn)品的授權(quán)。該操作的結(jié)果被保存在日志320中,并被返回給計(jì)量代理360(如果需要的話,更新運(yùn)行表315);計(jì)量代理360隨后據(jù)此控制產(chǎn)品340的執(zhí)行。
現(xiàn)在考慮圖4a-4d,圖中用方法400表示在上述系統(tǒng)中實(shí)現(xiàn)的計(jì)量方法的邏輯流程圖。該方法始于掃描器的泳道(swim-lane)中的黑色開始圓402。延緩到方框404,通過(guò)載入全局目錄,啟動(dòng)工作站的大容量存儲(chǔ)器的掃描;例如,每當(dāng)從許可服務(wù)器下載新的全局目錄,或者預(yù)定的超時(shí)期滿(例如每周)時(shí),進(jìn)行該操作。該方法隨后進(jìn)行到方框406,從上到下(從根目錄開始)遍歷文件系統(tǒng)的整個(gè)樹形結(jié)構(gòu);每當(dāng)?shù)竭_(dá)一個(gè)葉節(jié)點(diǎn)并且發(fā)現(xiàn)一個(gè)可執(zhí)行模塊時(shí),在方框408進(jìn)行測(cè)試,以核實(shí)該模塊是否包括在全局目錄中;最好,通過(guò)簡(jiǎn)單地搜索具有相同名稱的模塊(而不考慮其屬性),執(zhí)行該操作。如果這樣的話,那么在方框410確定安裝的模塊的位置,并且關(guān)于安裝模塊的路徑和位置的條目被加入到新版本的局部目錄中。流程隨后轉(zhuǎn)到方框412;如果安裝模塊未包括在全局目錄中,那么直接從方框408轉(zhuǎn)到方框412。在方框412,所述方法核實(shí)大容量存儲(chǔ)器的掃描是否已結(jié)束(即,已遍歷樹形結(jié)構(gòu)的所有分支,從而到達(dá)其每個(gè)葉節(jié)點(diǎn))。如果不是,那么流程返回方框406,繼續(xù)大容量存儲(chǔ)器的掃描。相反,用獲得的新版本局部目錄替換局部目錄(如果有的話)。
同時(shí)(完全同步地),每個(gè)預(yù)定的超時(shí)期滿(例如每分鐘)時(shí),計(jì)量代理進(jìn)入方框416;在該階段,確定正在工作站上執(zhí)行的過(guò)程的列表。隨后對(duì)每個(gè)過(guò)程執(zhí)行一個(gè)循環(huán)(從第一個(gè)過(guò)程開始);所述循環(huán)開始于方框418,在方框418中,獲得與該過(guò)程相關(guān)聯(lián)的運(yùn)行模塊的位置。計(jì)量代理隨后在方框420核實(shí)運(yùn)行模塊的位置是否包含在局部目錄中(即,對(duì)于對(duì)應(yīng)的散列值,存在一個(gè)條目)。如果核實(shí)結(jié)果是否定的,那么執(zhí)行方框422-428,否則執(zhí)行方框430-445;在這兩種情況下,該方法隨后都轉(zhuǎn)到方框446。
現(xiàn)在考慮方框422,當(dāng)運(yùn)行模塊未包括在局部目錄中時(shí),到達(dá)方框422;例如,如果在局部目錄的最新更新之后,把運(yùn)行模塊安裝在工作站上,那么會(huì)發(fā)生這種情況。在該階段中,掃描大容量存儲(chǔ)器,直到找到該運(yùn)行模塊為止(從而獲得對(duì)應(yīng)的路徑)?,F(xiàn)在在方框424進(jìn)行測(cè)試,以核實(shí)運(yùn)行模塊是否包括在全局目錄中(只根據(jù)其名稱和/或任何其它屬性)。如果是,那么在方框426,把關(guān)于該運(yùn)行模塊的路徑和位置的條目加入到局部目錄中。相反,在方框428,把運(yùn)行模塊設(shè)置成未知模塊;最好,在該階段中,可從運(yùn)行模塊的位置獲得的任何信息(例如名稱,有時(shí)還有其大小)和(未知的)運(yùn)行模塊的位置一起被保存,以便簡(jiǎn)化其識(shí)別(例如由管理人員識(shí)別)。這兩種情況下,流程隨后都轉(zhuǎn)到方框446。
參見(jiàn)方框43(運(yùn)行模塊包含在局部目錄中),從局部目錄抽取與運(yùn)行模塊的位置對(duì)應(yīng)的路徑。轉(zhuǎn)到方框432,計(jì)量代理訪問(wèn)與抽取的路徑對(duì)應(yīng)的模塊,以便確定其位置(很快的操作)。隨后在方框434,比較確定的位置與運(yùn)行模塊的位置。如果比較的結(jié)果是否定的,那么執(zhí)行方框436-444,否則執(zhí)行方框445;在這兩種情況下,該方法隨后轉(zhuǎn)到方框446。
現(xiàn)在考慮方框436,當(dāng)與局部目錄中的運(yùn)行模塊的位置相關(guān)的路徑不再有效時(shí),到達(dá)方框436;例如,如果在局部目錄的最后更新之后,運(yùn)行模塊已被移動(dòng),那么會(huì)發(fā)生這種情況。這種情況下,在方框436,把關(guān)于運(yùn)行模塊的位置的無(wú)效條目從局部目錄中除去。該方法隨后轉(zhuǎn)到方框438,掃描大容量存儲(chǔ)器,直到找到該運(yùn)行模塊為止(從而獲得對(duì)應(yīng)的路徑)。隨后在方框444進(jìn)行測(cè)試,以便核實(shí)該運(yùn)行模塊是否包含在全局目錄中。如果是,那么在方框442,把關(guān)于該運(yùn)行模塊的路徑和位置的條目加入到局部目錄中。相反,在方框444,把該運(yùn)行模塊設(shè)置成未知模塊(連同可獲得的任何相關(guān)信息),因?yàn)槠涫褂貌辉俦挥?jì)量。在這兩種情況下,流程隨后都轉(zhuǎn)到方框446。
參見(jiàn)方框445(與運(yùn)行模塊的位置相關(guān)的路徑仍然有效),該路徑被接受為訪問(wèn)該運(yùn)行模塊的正確路徑。所述方法隨后轉(zhuǎn)到方框446。
從而,局部目錄被自動(dòng)更新,以反映任何新產(chǎn)品的安裝(方框426),或者與已安裝的任何產(chǎn)品相關(guān)的模塊的移動(dòng)(方框436和442)??傊@些事件不太頻繁(尤其是模塊的移動(dòng)),從而大容量存儲(chǔ)器的對(duì)應(yīng)(慢速)掃描將很少發(fā)生。應(yīng)注意上述算法不能從局部目錄中除去與已被卸載的任何產(chǎn)品對(duì)應(yīng)的條目(因?yàn)樗鼈兊哪K不再運(yùn)行);但是,當(dāng)重新產(chǎn)生局部目錄(方框414)時(shí),該陳舊信息被定期除去。
現(xiàn)在考慮方框446,現(xiàn)在可通過(guò)這樣獲得的路徑訪問(wèn)運(yùn)行模塊(假定它不是未知的模塊);這樣,能夠抽取在全局目錄中指定的運(yùn)行模塊的每種屬性(討論中的例子中的模塊的大小和檢查和)。隨后在方框448,比較抽取的屬性與在全局目錄中關(guān)于具有相同名稱(由于上述邏輯流程的結(jié)果,總是可以獲得該名稱)的模塊(或多個(gè)模塊)指定的對(duì)應(yīng)值。如果運(yùn)行模塊的屬性與在全局目錄中指示的屬性相符,那么在方框450識(shí)別對(duì)應(yīng)的產(chǎn)品。相反,在方框452,把該產(chǎn)品設(shè)置成未知產(chǎn)品(連同任何可用信息)。隨后在方框453進(jìn)行測(cè)試,核實(shí)所有的過(guò)程是否已被分析。如果否,那么該方法返回方框418,對(duì)下一過(guò)程的運(yùn)行模塊重復(fù)相同的操作。
一旦所有的運(yùn)行模塊已被處理,那么在方框454,把這樣獲得的信息通知許可管理器。作為響應(yīng),在方框456,許可管理器核實(shí)工作站上的每個(gè)被識(shí)別產(chǎn)品的執(zhí)行是否遵守保存在授權(quán)目錄中的使用條件(例如,運(yùn)行環(huán)境是否滿足授權(quán)的配置,已運(yùn)行的產(chǎn)品的實(shí)例的數(shù)目是否未達(dá)到許可的最大值);相反,任何未知產(chǎn)品被默認(rèn)為未經(jīng)授權(quán)(或者提示管理人員定義運(yùn)行時(shí)間時(shí)該未知產(chǎn)品的授權(quán))。在方框458記錄核實(shí)結(jié)果;同時(shí),任何批準(zhǔn)的授權(quán)也被加入到運(yùn)行表中。在該階段中,還可向管理人員通知任何關(guān)鍵條件(例如,當(dāng)任何產(chǎn)品的可用許可證的數(shù)目低于某一閾值時(shí),或者當(dāng)許可服務(wù)器已用完特定產(chǎn)品的許可證時(shí))。隨后在方框460,把對(duì)應(yīng)的響應(yīng)返回給計(jì)量代理。
隨后對(duì)每個(gè)過(guò)程執(zhí)行一個(gè)循環(huán)(從第一個(gè)過(guò)程開始);該循環(huán)始于方框461,在方框461中,檢查要運(yùn)行的對(duì)應(yīng)授權(quán)。如果授權(quán)未被批準(zhǔn)(方框464),那么在方框466關(guān)閉該過(guò)程(從而停止對(duì)應(yīng)產(chǎn)品的執(zhí)行);相反,不執(zhí)行任何操作(從而程序的執(zhí)行可以繼續(xù))??傊?,隨后在方框468進(jìn)行測(cè)試,以核實(shí)所有過(guò)程是否已被檢查。如果不是,那么該方法返回方框461,對(duì)下一過(guò)程重復(fù)相同的操作。相反,流程返回等待方框416。
自然地,為了滿足局部的特定要求,本領(lǐng)域的技術(shù)人員可對(duì)上述解決方案進(jìn)行許多修改和變更。特別地,雖然參考其優(yōu)選實(shí)施例較詳細(xì)地說(shuō)明了本發(fā)明,不過(guò)要明白形式和細(xì)節(jié)方面的各種省略、替換和改變以及其它實(shí)施例都是可能的;此外,明確地預(yù)期結(jié)合本發(fā)明的任何公開實(shí)施例描述的具體元件和/或方法步驟可作為設(shè)計(jì)選擇的一般物件包含在任何其它實(shí)施例中。
例如,預(yù)期提出的解決方案在不同于許可管理的語(yǔ)境中的使用。特別地,關(guān)于產(chǎn)品檢測(cè)的信息可以只被用于報(bào)告(而不存在它們的授權(quán)的任何核實(shí))。另一方面,產(chǎn)品總是被允許運(yùn)行(例如,只記錄它其使用未被授權(quán)時(shí)的例外)。
總之,本發(fā)明的方法可被用于計(jì)量任何類型的軟件產(chǎn)品(例如視頻游戲、多媒體作品等)。
類似的考慮適用于具有不同結(jié)構(gòu)或者基于等同部件的系統(tǒng);同樣地,每個(gè)工作站可具有另一結(jié)構(gòu),或者它可被任何數(shù)據(jù)處理實(shí)體(例如PDA、移動(dòng)電話機(jī)等)替代。此外,本發(fā)明的解決方案還適合于在工作站的控制被分散的系統(tǒng)中使用,或者甚至在獨(dú)立的計(jì)算機(jī)中使用。
應(yīng)注意本發(fā)明的原理并不局限于上面規(guī)定的路徑和位置,相反本發(fā)明的原理更一般地適用于(任何文件系統(tǒng)中)用于訪問(wèn)模塊以及當(dāng)運(yùn)行時(shí),用于所述模塊的識(shí)別的任何等同要素。
即使在上面的說(shuō)明中,引用了全局目錄和局部目錄,不過(guò)這并不是對(duì)本發(fā)明的限制;事實(shí)上,本發(fā)明的解決方案適合于由任何其它結(jié)構(gòu)實(shí)現(xiàn),甚至由單一目錄構(gòu)成(例如,通過(guò)把路徑加入到全局目錄的相關(guān)條目中)。
總之,可考慮等同的可執(zhí)行模塊(例如DLL);此外,可利用不同的屬性(例如它們的創(chuàng)建日期)在全局目錄中識(shí)別模塊。
另一方面,使用任何其它技術(shù)來(lái)掃描系統(tǒng)的大容量存儲(chǔ)器(當(dāng)需要時(shí))在本發(fā)明的范圍內(nèi)(例如,比較所有屬性,而不僅僅是比較相關(guān)模塊的名稱)。
如果按照不同的方式構(gòu)成實(shí)現(xiàn)上述解決方案的程序,或者如果提供另外的功能塊或函數(shù),那么類似的考慮事項(xiàng)也是適用的;同樣地,不同的存儲(chǔ)器結(jié)構(gòu)可以是不同的類型,或者可用等同的實(shí)體替代(不一定由物理存儲(chǔ)介質(zhì)組成)。此外,提出的解決方案可實(shí)現(xiàn)等同的方法(例如,具有類似或者另外的步驟)。
總之,能夠把程序分布在任何其它的計(jì)算機(jī)可讀介質(zhì)中(例如DVD)。
此外,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),提供其它優(yōu)點(diǎn)的附加特征顯然并不是實(shí)現(xiàn)本發(fā)明所必不可少的,它們可被省略或者用不同的特征替代。
例如,提出的解決方案還適合于當(dāng)在運(yùn)行時(shí)間中途截止每個(gè)模塊的起動(dòng)時(shí)被應(yīng)用(即使在這種情況下,備選技術(shù)也可用于獲得運(yùn)行模塊的路徑)。
在本發(fā)明的一個(gè)備選實(shí)施例中,產(chǎn)品的名稱被直接保存在局部目錄中(從而它們可被識(shí)別,而不必在運(yùn)行時(shí)間物理訪問(wèn)全局目錄)。
在不脫離本發(fā)明的原理的情況下,能夠遞增地創(chuàng)建局部目錄。例如,在最初的工作站上提供一個(gè)空的局部目錄,每當(dāng)安裝一個(gè)產(chǎn)品時(shí),插入一個(gè)新的條目(假定通知機(jī)構(gòu)就位);于是,任何運(yùn)行模塊的位置將總是被包括在局部目錄中。
但是,并不排除每當(dāng)在局部目錄中找不到產(chǎn)品時(shí),簡(jiǎn)單地把該產(chǎn)品設(shè)置成未知產(chǎn)品的簡(jiǎn)化實(shí)現(xiàn)。
另外,每當(dāng)與局部目錄中的運(yùn)行模塊的位置相關(guān)的路徑不再有效時(shí),產(chǎn)品也可被設(shè)置成未知產(chǎn)品。
另一方面,當(dāng)上述通知機(jī)構(gòu)就位時(shí),能夠響應(yīng)任何變化(例如,每個(gè)模塊的刪除或移動(dòng)),更新局部目錄。這樣,局部目錄中的任何關(guān)聯(lián)將始終有效;于是,能夠避免運(yùn)行時(shí)間時(shí),大容量存儲(chǔ)器的任何(慢速)掃描。
在不脫離本發(fā)明的原理的情況下,還可不經(jīng)任何核實(shí)地接受從局部目錄抽取的路徑(認(rèn)為模塊很少被移動(dòng),從而在多數(shù)實(shí)際情況下,具有無(wú)效關(guān)聯(lián)的概率是可以忽略的)。
如果程序被預(yù)先加載到硬盤上,通過(guò)網(wǎng)絡(luò)被發(fā)送給計(jì)算機(jī),被廣播,或者更一般地,以可直接載入計(jì)算機(jī)的工作存儲(chǔ)區(qū)中的任何其它形式提供,那么類似的考慮事項(xiàng)也適用。
最后,根據(jù)本發(fā)明的方法由硬件結(jié)構(gòu)(例如,半導(dǎo)體材料的集成芯片),或者由軟件和硬件的組合物實(shí)現(xiàn)。
權(quán)利要求
1.一種計(jì)量數(shù)據(jù)處理系統(tǒng)中軟件產(chǎn)品的使用的方法(400),所述方法包括下述步驟提供使每個(gè)要計(jì)量的產(chǎn)品與至少一個(gè)可執(zhí)行模塊相關(guān)聯(lián)的全局目錄,當(dāng)運(yùn)行時(shí),所述至少一個(gè)可執(zhí)行模塊指示所述產(chǎn)品的使用,創(chuàng)建(406-414)局部目錄,所述局部目錄使訪問(wèn)包含在全局目錄中的安裝在系統(tǒng)上的每個(gè)模塊的路徑與識(shí)別運(yùn)行時(shí)的模塊的位置相關(guān)聯(lián),檢測(cè)(416-418)正在系統(tǒng)上運(yùn)行的每個(gè)模塊的位置,根據(jù)局部目錄,確定(420-445)與每個(gè)運(yùn)行模塊的位置相關(guān)聯(lián)的路徑,和通過(guò)對(duì)應(yīng)的路徑訪問(wèn)(446-452)每個(gè)運(yùn)行模塊,以便根據(jù)全局目錄識(shí)別與運(yùn)行模塊相關(guān)聯(lián)的產(chǎn)品。
2.按照權(quán)利要求1所述的方法(400),其中檢測(cè)(416-418)每個(gè)運(yùn)行模塊的位置的步驟包括定期確定(416)在系統(tǒng)上執(zhí)行的過(guò)程的列表,每個(gè)過(guò)程與對(duì)應(yīng)運(yùn)行模塊的位置相關(guān)聯(lián),和獲得(418)與每個(gè)過(guò)程相關(guān)聯(lián)的運(yùn)行模塊的位置。
3.按照權(quán)利要求1或2所述的方法(400),其中利用至少一個(gè)屬性在全局目錄中定義每個(gè)模塊,訪問(wèn)(446-452)每個(gè)運(yùn)行模塊以便識(shí)別與運(yùn)行模塊相關(guān)聯(lián)的產(chǎn)品的步驟包括取回(446)運(yùn)行模塊的至少一個(gè)屬性,和搜索(448-452)和全局目錄中的運(yùn)行模塊的至少一個(gè)屬性相匹配的產(chǎn)品。
4.按照權(quán)利要求1-3任意之一所述的方法(400),其中創(chuàng)建(406-414)局部目錄的步驟包括掃描(406)系統(tǒng)的大容量存儲(chǔ)器,以便檢測(cè)每個(gè)安裝模塊的路徑和位置,核實(shí)(408)每個(gè)安裝模塊是否包括在全局目錄中,和響應(yīng)安裝模塊包括在全局目錄中的肯定核實(shí),把每個(gè)安裝模塊的路徑和位置加入(410)局部目錄中。
5.按照權(quán)利要求4所述的方法(400),其中確定(420-445)與每個(gè)運(yùn)行模塊的位置相關(guān)聯(lián)的路徑的步驟包括核實(shí)(420)運(yùn)行模塊的位置是否包括在局部目錄中,響應(yīng)運(yùn)行模塊的位置包括在局部目錄中的否定核實(shí),掃描(422)大容量存儲(chǔ)器,以便檢測(cè)與運(yùn)行模塊的位置相關(guān)聯(lián)的路徑,核實(shí)(424)運(yùn)行模塊是否包括在全局目錄中,和響應(yīng)運(yùn)行模塊包括在全局目錄中的肯定核實(shí),把運(yùn)行模塊的路徑和位置加入(426)局部目錄中。
6.按照權(quán)利要求4或5所述的方法(400),其中確定(420-445)與每個(gè)運(yùn)行模塊的位置相關(guān)聯(lián)的路徑的步驟還包括響應(yīng)運(yùn)行模塊的位置包括在局部目錄中的肯定核實(shí),從局部目錄中抽取(430)與運(yùn)行模塊的位置對(duì)應(yīng)的路徑,確定(432)通過(guò)抽取的路徑訪問(wèn)的模塊的位置,比較(434)確定的位置與運(yùn)行模塊的位置,和響應(yīng)肯定的比較結(jié)果,使抽取的路徑與運(yùn)行模塊的位置相關(guān)聯(lián)(445)。
7.按照權(quán)利要求6所述的方法(400),其中確定(420-445)與每個(gè)運(yùn)行模塊的位置相關(guān)聯(lián)的路徑的步驟還包括響應(yīng)否定的比較結(jié)果,從局部目錄中除去(436)具有對(duì)應(yīng)路徑的運(yùn)行模塊的位置,掃描(438)大容量存儲(chǔ)器,以便檢測(cè)與運(yùn)行模塊的位置相關(guān)聯(lián)的路徑,核實(shí)(440)運(yùn)行模塊是否包括在全局目錄中,和響應(yīng)運(yùn)行模塊包括在全局目錄中的肯定核實(shí),把運(yùn)行模塊的路徑和位置加入(442)局部目錄中。
8.一種包括程序代碼裝置的計(jì)算機(jī)程序(300),當(dāng)所述程序在系統(tǒng)上運(yùn)行時(shí),所述程序代碼裝置可直接裝入數(shù)據(jù)處理系統(tǒng)(105w)的工作存儲(chǔ)區(qū)(159)中,以便執(zhí)行按照權(quán)利要求1-7任意之一所述的方法。
9.一種包括計(jì)算機(jī)可讀介質(zhì)的程序產(chǎn)品(174),所述計(jì)算機(jī)可讀介質(zhì)包含按照權(quán)利要求8所述的程序(300)。
10.一種數(shù)據(jù)處理系統(tǒng)(105w),它包括計(jì)量系統(tǒng)中的軟件產(chǎn)品的使用的裝置(335),所述計(jì)量裝置包括使每個(gè)要計(jì)量的產(chǎn)品與至少一個(gè)可執(zhí)行模塊相關(guān)聯(lián)的全局目錄(325),當(dāng)運(yùn)行時(shí),所述至少一個(gè)可執(zhí)行模塊指示所述產(chǎn)品的使用,創(chuàng)建局部目錄(350)的裝置(345),所述局部目錄使訪問(wèn)包含在全局目錄中的安裝在系統(tǒng)上的每個(gè)模塊的路徑與識(shí)別運(yùn)行時(shí)的模塊的位置相關(guān)聯(lián),檢測(cè)正在系統(tǒng)上運(yùn)行的每個(gè)模塊(340)的位置的裝置(365),根據(jù)局部目錄,確定與每個(gè)運(yùn)行模塊的位置相關(guān)聯(lián)的路徑的裝置(355),和通過(guò)對(duì)應(yīng)的路徑訪問(wèn)每個(gè)運(yùn)行模塊,以便根據(jù)全局目錄識(shí)別與運(yùn)行模塊相關(guān)聯(lián)的產(chǎn)品的裝置(360)。
全文摘要
提出一種計(jì)量數(shù)據(jù)處理系統(tǒng)中軟件產(chǎn)品的使用的方法(300)。利用對(duì)應(yīng)的可執(zhí)行模塊(340)的多個(gè)屬性,在全局目錄(325)中識(shí)別要計(jì)量的產(chǎn)品;這些屬性的核實(shí)要求通過(guò)模塊的路徑訪問(wèn)所述模塊,在運(yùn)行時(shí)間,所述路徑是不可得到的(因?yàn)橛捎谛阅艿脑?,模塊直接由對(duì)應(yīng)的位置識(shí)別)。本發(fā)明的解決方案以創(chuàng)建局部目錄(350)的思想為基礎(chǔ),所述局部目錄(350)使安裝在系統(tǒng)上(包括在全局目錄中)的每個(gè)模塊的路徑與其位置相關(guān)聯(lián)。定期根據(jù)在系統(tǒng)上執(zhí)行的過(guò)程的列表,檢測(cè)(365)運(yùn)行模塊的位置。這樣,通過(guò)局部目錄(而不必掃描系統(tǒng)),能夠很快地獲得(355)與每個(gè)運(yùn)行模塊的位置對(duì)應(yīng)的路徑?,F(xiàn)在能夠訪問(wèn)(360)運(yùn)行模塊,以便抽取它的識(shí)別全局目錄中的對(duì)應(yīng)產(chǎn)品所需的屬性。
文檔編號(hào)G06F1/00GK1794259SQ20051012728
公開日2006年6月28日 申請(qǐng)日期2005年12月5日 優(yōu)先權(quán)日2004年12月21日
發(fā)明者伯納多·帕斯托里爾利, 瑪麗亞·G.·米科尼, 馬可·梅切利 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司