国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      模塊生命周期管理方法

      文檔序號(hào):6520605閱讀:237來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):模塊生命周期管理方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計(jì)算機(jī)操作系統(tǒng)領(lǐng)域,特別涉及操作系統(tǒng)模塊管理領(lǐng)域,具體是指一種模塊生命周期管理方法。
      背景技術(shù)
      模塊,在計(jì)算機(jī)操作系統(tǒng)中均指可執(zhí)行映像文件(包括可執(zhí)行文件和動(dòng)態(tài)庫(kù))在操作系統(tǒng)中的表示形式。
      傳統(tǒng)操作系統(tǒng)模塊的生命周期是由模塊裝載器控制的,例如微軟是通過(guò)LoadLibrary API進(jìn)行模塊的裝載,通過(guò)FreeLibrary API進(jìn)行模塊的卸載。這些實(shí)現(xiàn)方法都需要用戶(hù)主動(dòng)調(diào)用系統(tǒng)API卸載模塊。這將導(dǎo)致無(wú)法引用另一進(jìn)程的模塊資源,因?yàn)闊o(wú)法得知那個(gè)進(jìn)程的模塊何時(shí)被卸載。另外,如果模塊指針傳遞給多個(gè)用戶(hù)后,將很難決定該何時(shí)卸載該模塊。如果是提前卸載,會(huì)導(dǎo)致正在使用該模塊的用戶(hù)出錯(cuò);如果是最后卸載,會(huì)使得沒(méi)有用戶(hù)使用時(shí)仍占用內(nèi)存等資源。

      發(fā)明內(nèi)容
      本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)中的缺點(diǎn),提供一種基于引用計(jì)數(shù)的模塊生命周期管理方法,可以進(jìn)行一次性裝載,對(duì)外部引用可進(jìn)行自動(dòng)計(jì)數(shù)控制,并在最終無(wú)外部引用時(shí)安全卸載。
      為了實(shí)現(xiàn)上述的目的,本發(fā)明的模塊生命周期管理方法如下該模塊生命周期管理方法,包括模塊在操作系統(tǒng)中的裝載過(guò)程和卸載過(guò)程,其主要特點(diǎn)是,所述的裝載過(guò)程包括以下步驟
      (1)應(yīng)用程序向操作系統(tǒng)提出裝載模塊的請(qǐng)求;(2)操作系統(tǒng)根據(jù)應(yīng)用程序的請(qǐng)求查找系統(tǒng)全局資源,如果該模塊不存在,則進(jìn)行該模塊對(duì)象的裝載處理;如果該模塊已存在,則進(jìn)行增加該模塊對(duì)象引用計(jì)數(shù)處理;(3)操作系統(tǒng)根據(jù)該模塊的依賴(lài)關(guān)系為應(yīng)用程序創(chuàng)建相應(yīng)的模塊視圖;(4)操作系統(tǒng)向用戶(hù)程序返回相應(yīng)模塊的接口指針。
      所述的卸載過(guò)程包括以下步驟(1)應(yīng)用程序向操作系統(tǒng)提出減少相應(yīng)模塊引用記數(shù)的請(qǐng)求;(2)操作系統(tǒng)根據(jù)應(yīng)用程序的請(qǐng)求進(jìn)行相應(yīng)的減少模塊對(duì)象引用計(jì)數(shù)處理,如果該模塊對(duì)象引用計(jì)數(shù)符合卸載條件,則刪除模塊視圖,并進(jìn)行模塊對(duì)象的卸載處理。
      該模塊生命周期管理方法的模塊對(duì)象的裝載處理包括以下步驟(1)操作系統(tǒng)根據(jù)應(yīng)用程序請(qǐng)求裝載的模塊名從存儲(chǔ)系統(tǒng)中讀取指定的模塊對(duì)象,并將其載入系統(tǒng);(2)將該模塊對(duì)象保存的引用記數(shù)初始設(shè)定為1;(3)若該模塊不依賴(lài)引用其他模塊,則完成該模塊對(duì)象的裝載處理;(4)若該模塊依賴(lài)引用其他模塊,則操作系統(tǒng)查找系統(tǒng)全局資源,如果該被依賴(lài)模塊不存在,則遞歸進(jìn)行從所述步驟(1)開(kāi)始的該被依賴(lài)模塊對(duì)象的裝載處理;如果該被依賴(lài)模塊已存在,則進(jìn)行增加該被依賴(lài)模塊對(duì)象引用計(jì)數(shù)處理,直至所有被依賴(lài)模塊均處理完畢,則完成該模塊對(duì)象的裝載處理。
      該模塊生命周期管理方法的存儲(chǔ)系統(tǒng)可以為文件系統(tǒng),也可以為其他存儲(chǔ)設(shè)備。
      該模塊生命周期管理方法的增加模塊對(duì)象引用計(jì)數(shù)處理包括以下步驟(1)如果另一個(gè)模塊對(duì)象對(duì)該模塊對(duì)象進(jìn)行依賴(lài)引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)增加1;(2)如果一個(gè)應(yīng)用程序建立模塊視圖對(duì)該模塊對(duì)象進(jìn)行引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)增加1。
      該模塊生命周期管理方法的模塊對(duì)象的卸載處理包括以下步驟(1)將該模塊對(duì)象從系統(tǒng)中卸載并回收其所占用的系統(tǒng)資源;(2)若該模塊不依賴(lài)引用其他模塊,則完成該模塊對(duì)象的卸載處理;(3)若該模塊依賴(lài)引用其他模塊,則操作系統(tǒng)進(jìn)行減少被依賴(lài)模塊對(duì)象引用計(jì)數(shù)處理,并判斷該被依賴(lài)模塊對(duì)象引用計(jì)數(shù)是否符合卸載條件,如果符合卸載條件,則遞歸進(jìn)行從所述步驟(1)開(kāi)始的該被依賴(lài)模塊對(duì)象的卸載處理,直至所有被依賴(lài)模塊均處理完畢,則完成該模塊對(duì)象的卸載處理。
      該模塊生命周期管理方法的模塊對(duì)象卸載條件為該模塊對(duì)象保存的的引用計(jì)數(shù)為0。
      該模塊生命周期管理方法的減少模塊對(duì)象引用計(jì)數(shù)處理包括以下步驟(1)如果另一個(gè)模塊對(duì)象取消對(duì)該模塊對(duì)象的依賴(lài)引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)減少1;(2)如果一個(gè)應(yīng)用程序刪除模塊視圖取消對(duì)該模塊對(duì)象的引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)減少1。
      該模塊生命周期管理方法的模塊為操作系統(tǒng)中的可執(zhí)行文件或者動(dòng)態(tài)鏈接庫(kù)。
      采用了該發(fā)明的模塊生命周期管理方法,由于模塊是裝載于全局空間中,并采用模塊視圖方式對(duì)其進(jìn)行引用,因此只需一次性裝載;同時(shí)由于該方法是基于引用計(jì)數(shù)的,因此模塊只在沒(méi)有任何引用時(shí),才會(huì)被卸載,使得模塊不會(huì)提前被卸載,并且在沒(méi)有用戶(hù)使用時(shí)會(huì)立即被卸載,同時(shí)還可允許引用其它的模塊資源,從而有效地利用已有資源。


      圖1為模塊對(duì)象與模塊視圖關(guān)系示意圖。
      圖2為本發(fā)明的模塊裝載過(guò)程的流程圖。
      圖3為本發(fā)明的模塊卸載過(guò)程的流程圖。
      圖4為有依賴(lài)關(guān)系的模塊對(duì)象之間及其與模塊視圖之間的關(guān)系示意圖。
      具體實(shí)施例方式
      為了能夠更清楚地理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實(shí)施例詳細(xì)說(shuō)明。
      請(qǐng)參閱圖1所示,模塊生命周期管理中主要資源有兩個(gè)模塊對(duì)象(Module),模塊視圖(Module View)。模塊對(duì)象是系統(tǒng)內(nèi)的全局資源,當(dāng)進(jìn)程加載模塊時(shí),需要引用全局的模塊對(duì)象并把它映射到進(jìn)程的虛擬地址空間中,我們把進(jìn)程對(duì)模塊對(duì)象的這種引用關(guān)系稱(chēng)為模塊視圖。
      模塊對(duì)象與模塊視圖是一對(duì)多的關(guān)系,一個(gè)模塊可能同時(shí)被多個(gè)進(jìn)程加載,但同一個(gè)模塊對(duì)象在卸載之前實(shí)際只會(huì)被加載一次(第一次加載),以后的進(jìn)程加載請(qǐng)求只是使模塊對(duì)象的引用計(jì)數(shù)增加。但不同的進(jìn)程在加載同一模塊時(shí)都會(huì)在進(jìn)程中創(chuàng)建各自的模塊視圖,這些模塊視圖保留了對(duì)模塊對(duì)象的引用。
      再請(qǐng)參閱圖2所示,該圖為模塊裝載過(guò)程,其中應(yīng)用程序通過(guò)調(diào)用系統(tǒng)APIEzLoadModule()向操作系統(tǒng)提出裝載模塊的請(qǐng)求。操作系統(tǒng)根據(jù)請(qǐng)求裝載的模塊名從文件系統(tǒng)或其他設(shè)備中裝載指定的模塊,并返回該模塊的接口指針。這時(shí),模塊的引用記數(shù)是1。
      如果把模塊接口指針傳給其他用戶(hù)使用,則每傳遞一個(gè)用戶(hù)就要對(duì)模塊的引用記數(shù)加1。當(dāng)不再需要使用模塊接口指針時(shí),要減少一次模塊的引用記數(shù)。
      如果模塊的引用記數(shù)為0,就會(huì)進(jìn)入模塊卸載過(guò)程。
      在裝載過(guò)程中如有依賴(lài)其他模塊,則會(huì)引起遞歸地裝載所依賴(lài)的模塊,并保留所依賴(lài)模塊的一個(gè)引用記數(shù)(對(duì)所依賴(lài)模塊的引用記數(shù)加1)。
      再請(qǐng)參閱圖3所示,該圖為模塊卸載過(guò)程,其中,如果減少模塊引用記數(shù)的時(shí)候發(fā)現(xiàn)本模塊的引用記數(shù)為0,就會(huì)進(jìn)行模塊卸載。
      卸載過(guò)程大概可分兩步(1)卸載本模塊并回收系統(tǒng)資源;
      (2)對(duì)所依賴(lài)的模塊減少一次引用記數(shù)。
      對(duì)于第(2)步(減少所依賴(lài)模塊的引用記數(shù)),有可能導(dǎo)致連鎖的模塊卸載。
      “和欣”操作系統(tǒng)是通過(guò)EzLoadModule API進(jìn)行模塊的裝載,每多一個(gè)引用就對(duì)其引用記數(shù)加1(調(diào)用IModule接口的AddRef方法),每少一個(gè)引用就對(duì)其引用記數(shù)減1(調(diào)用IModule接口的Release方法)。當(dāng)引用記數(shù)為0時(shí),自動(dòng)進(jìn)行模塊的卸載工作。
      再請(qǐng)參閱圖4所示,該圖表明了這種模塊間及模塊與模塊視圖間的引用關(guān)系,模塊對(duì)象的生命周期基于引用計(jì)數(shù)管理。一個(gè)模塊對(duì)象可能被兩方面引用到一是模塊視圖,二是依賴(lài)于該模塊對(duì)象的其它模塊對(duì)象。
      從圖中可以看出,對(duì)于c.dll的模塊對(duì)象,它的引用計(jì)數(shù)由模塊對(duì)象b.dll以及模塊視圖c.dll保留,模塊對(duì)象b.dll的引用計(jì)數(shù)由模塊對(duì)象a.dll和模塊視圖b.dll保留,而模塊對(duì)象a.dll的引用計(jì)數(shù)則由模塊視圖a.dll保留。
      同時(shí),模塊視圖之間也使用類(lèi)似的引用計(jì)數(shù)關(guān)系,模塊視圖b.dll保留了模塊視圖c.dll的引用計(jì)數(shù),模塊視圖a.dll保留了模塊視圖b.dll的引用計(jì)數(shù),而模塊視圖a.dll的引用計(jì)數(shù)則由裝載a.dll的請(qǐng)求者保留。
      上述引用計(jì)數(shù)關(guān)系保證了模塊對(duì)象及模塊視圖能夠按照引用計(jì)數(shù)關(guān)系被正確的加載和卸載。當(dāng)模塊視圖a.dll的引用計(jì)數(shù)為零時(shí),它將釋放掉模塊視圖b.dll以及模塊對(duì)象a.dll的引用計(jì)數(shù),從而在引用計(jì)數(shù)鏈上引起連鎖引用計(jì)數(shù)反應(yīng),最終卸載掉整個(gè)模塊鏈。
      在此說(shuō)明書(shū)中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說(shuō)明書(shū)和附圖應(yīng)被認(rèn)為是說(shuō)明性的而非限制性的。
      權(quán)利要求
      1.一種模塊生命周期管理方法,包括模塊在操作系統(tǒng)中的裝載過(guò)程和卸載過(guò)程,其特征在于,所述的裝載過(guò)程包括以下步驟(1)應(yīng)用程序向操作系統(tǒng)提出裝載模塊的請(qǐng)求;(2)操作系統(tǒng)根據(jù)應(yīng)用程序的請(qǐng)求查找系統(tǒng)全局資源,如果該模塊不存在,則進(jìn)行該模塊對(duì)象的裝載處理;如果該模塊已存在,則進(jìn)行增加該模塊對(duì)象引用計(jì)數(shù)處理;(3)操作系統(tǒng)根據(jù)該模塊的依賴(lài)關(guān)系為應(yīng)用程序創(chuàng)建相應(yīng)的模塊視圖;(4)操作系統(tǒng)向用戶(hù)程序返回相應(yīng)模塊的接口指針。所述的卸載過(guò)程包括以下步驟(1)應(yīng)用程序向操作系統(tǒng)提出減少相應(yīng)模塊引用記數(shù)的請(qǐng)求;(2)操作系統(tǒng)根據(jù)應(yīng)用程序的請(qǐng)求進(jìn)行相應(yīng)的減少模塊對(duì)象引用計(jì)數(shù)處理,如果該模塊對(duì)象引用計(jì)數(shù)符合卸載條件,則刪除模塊視圖,并進(jìn)行模塊對(duì)象的卸載處理。
      2.根據(jù)權(quán)利要求1所述的模塊生命周期管理方法,其特征在于,所述的模塊對(duì)象的裝載處理包括以下步驟(1)操作系統(tǒng)根據(jù)應(yīng)用程序請(qǐng)求裝載的模塊名從存儲(chǔ)系統(tǒng)中讀取指定的模塊對(duì)象,并將其載入系統(tǒng);(2)將該模塊對(duì)象保存的引用記數(shù)初始設(shè)定為1;(3)若該模塊不依賴(lài)引用其他模塊,則完成該模塊對(duì)象的裝載處理;(4)若該模塊依賴(lài)引用其他模塊,則操作系統(tǒng)查找系統(tǒng)全局資源,如果該被依賴(lài)模塊不存在,則遞歸進(jìn)行從所述步驟(1)開(kāi)始的該被依賴(lài)模塊對(duì)象的裝載處理;如果該被依賴(lài)模塊已存在,則進(jìn)行增加該被依賴(lài)模塊對(duì)象引用計(jì)數(shù)處理,直至所有被依賴(lài)模塊均處理完畢,則完成該模塊對(duì)象的裝載處理。
      3.根據(jù)權(quán)利要求2所述的模塊生命周期管理方法,其特征在于,所述的存儲(chǔ)系統(tǒng)為文件系統(tǒng)或者其他存儲(chǔ)設(shè)備。
      4.根據(jù)權(quán)利要求1、2或3所述的模塊生命周期管理方法,其特征在于,所述的增加模塊對(duì)象引用計(jì)數(shù)處理包括以下步驟(1)如果另一模塊對(duì)象對(duì)該模塊對(duì)象進(jìn)行依賴(lài)引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)增加1;(2)如果一應(yīng)用程序建立模塊視圖對(duì)該模塊對(duì)象進(jìn)行引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)增加1。
      5.根據(jù)權(quán)利要求1所述的模塊生命周期管理方法,其特征在于,所述的模塊對(duì)象的卸載處理包括以下步驟(1)將該模塊對(duì)象從系統(tǒng)中卸載并回收其所占用的系統(tǒng)資源;(2)若該模塊不依賴(lài)引用其他模塊,則完成該模塊對(duì)象的卸載處理;(3)若該模塊依賴(lài)引用其他模塊,則操作系統(tǒng)進(jìn)行減少被依賴(lài)模塊對(duì)象引用計(jì)數(shù)處理,并判斷該被依賴(lài)模塊對(duì)象引用計(jì)數(shù)是否符合卸載條件,如果符合卸載條件,則遞歸進(jìn)行從所述步驟(1)開(kāi)始的該被依賴(lài)模塊對(duì)象的卸載處理,直至所有被依賴(lài)模塊均處理完畢,則完成該模塊對(duì)象的卸載處理。
      6.根據(jù)權(quán)利要求1或5所述的模塊生命周期管理方法,其特征在于,所述的模塊對(duì)象卸載條件為該模塊對(duì)象保存的的引用計(jì)數(shù)為0。
      7.根據(jù)權(quán)利要求1或5所述的模塊生命周期管理方法,其特征在于,所述的減少模塊對(duì)象引用計(jì)數(shù)處理包括以下步驟(1)如果另一模塊對(duì)象取消對(duì)該模塊對(duì)象的依賴(lài)引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)減少1;(2)如果一應(yīng)用程序刪除模塊視圖取消對(duì)該模塊對(duì)象的引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)減少1。
      8.根據(jù)權(quán)利要求6所述的模塊生命周期管理方法,其特征在于,所述的減少模塊對(duì)象引用計(jì)數(shù)處理包括以下步驟(1)如果另一模塊對(duì)象取消對(duì)該模塊對(duì)象的依賴(lài)引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)減少1;(2)如果一應(yīng)用程序刪除模塊視圖取消對(duì)該模塊對(duì)象的引用,則將該模塊對(duì)象所保存的引用計(jì)數(shù)減少1。
      9.根據(jù)權(quán)利要求1所述的模塊生命周期管理方法,其特征在于,所述的模塊為操作系統(tǒng)中的可執(zhí)行文件或者動(dòng)態(tài)鏈接庫(kù)。
      全文摘要
      本發(fā)明涉及一種模塊生命周期管理方法,包括模塊裝載過(guò)程和卸載過(guò)程,其中所述的裝載過(guò)程包括應(yīng)用程序提出裝載模塊請(qǐng)求、操作系統(tǒng)根據(jù)情況進(jìn)行該模塊對(duì)象的裝載處理或者進(jìn)行增加該模塊對(duì)象引用計(jì)數(shù)處理、應(yīng)用程序根據(jù)該模塊的接口指針創(chuàng)建相應(yīng)的模塊視圖;卸載過(guò)程包括應(yīng)用程序刪除模塊視圖并提出卸載模塊請(qǐng)求、操作系統(tǒng)根據(jù)減少模塊對(duì)象引用計(jì)數(shù)、根據(jù)情況進(jìn)行模塊對(duì)象的卸載處理。采用該種結(jié)構(gòu)的模塊生命周期管理方法,只需一次性裝載;同時(shí)模塊只在沒(méi)有任何引用時(shí)才會(huì)被卸載,使得模塊不會(huì)提前被卸載,并且在沒(méi)有用戶(hù)使用時(shí)會(huì)立即被卸載,同時(shí)還可允許引用其它的模塊資源,從而有效地利用已有資源。
      文檔編號(hào)G06F9/46GK1645327SQ20051002325
      公開(kāi)日2005年7月27日 申請(qǐng)日期2005年1月12日 優(yōu)先權(quán)日2005年1月12日
      發(fā)明者梁宇洲, 蘇翼鵬, 陳榕 申請(qǐng)人:上海科泰世紀(jì)科技有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1