国产精品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>

      基于動態(tài)內(nèi)核實現(xiàn)跨地址空間創(chuàng)建構(gòu)件對象的方法

      文檔序號:6606426閱讀:151來源:國知局
      專利名稱:基于動態(tài)內(nèi)核實現(xiàn)跨地址空間創(chuàng)建構(gòu)件對象的方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種計算機操作系統(tǒng)動態(tài)內(nèi)核的實現(xiàn)機制,尤其是一種基于動態(tài)內(nèi)核實現(xiàn)跨地址空間創(chuàng)建構(gòu)件對象的方法。屬于計算機技術(shù)領(lǐng)域。
      背景技術(shù)
      由于計算機硬件的快速發(fā)展和用戶要求的提高,以及因特網(wǎng)時代的到來,操作系統(tǒng)的復(fù)雜性與日俱增,系統(tǒng)的體系結(jié)構(gòu)對系統(tǒng)性能的影響也越來越明顯。大多數(shù)的操作系統(tǒng)采用兩種體系結(jié)構(gòu)之一一個是整體內(nèi)核(Monolithickernel or Macro-kernel)操作系統(tǒng),另一個是微內(nèi)核(Micro-kernel)操作系統(tǒng)。
      早期的操作系統(tǒng)基本上采用的是整體內(nèi)核技術(shù),此類系統(tǒng)的系統(tǒng)服務(wù)和驅(qū)動程序都在內(nèi)核空間,分別定義成不同的功能模塊;任何模塊可以遵循特定的接口規(guī)范來調(diào)用其它模塊;所有模塊必須連接在一起,形成一個可執(zhí)行文件,使用時整個文件都應(yīng)完整裝載到計算機的內(nèi)存中。微內(nèi)核是從功能上說,它由操作系統(tǒng)最基礎(chǔ)的抽象模塊構(gòu)成的,整體內(nèi)核系統(tǒng)中包含的許多系統(tǒng)服務(wù)以及驅(qū)動程序都被放在了核外,核內(nèi)一般只包括進(jìn)程管理、I/O處理、內(nèi)存管理、進(jìn)程間通訊等。整體內(nèi)核和微內(nèi)核的特點分別為整體內(nèi)核的效率高但穩(wěn)定性比較差,而微內(nèi)核恰好相反,效率低而穩(wěn)定性好。究其原因微內(nèi)核效率低的原因是因為大量使用了進(jìn)程間通訊造成的。整體內(nèi)核的系統(tǒng)功能大部分是在內(nèi)核中實現(xiàn)的,從而降低了系統(tǒng)的穩(wěn)定性。從技術(shù)上講,要從根本上解決效率和穩(wěn)定性這對矛盾即解決微內(nèi)核和整體內(nèi)核的矛盾是不可能的。
      構(gòu)件技術(shù)已經(jīng)廣泛應(yīng)用于應(yīng)用軟件的開發(fā)過程中,在系統(tǒng)軟件設(shè)計中運用構(gòu)件技術(shù)已經(jīng)成為研究的熱點,特別是分布式系統(tǒng)的發(fā)展,為構(gòu)件技術(shù)提供了廣闊的施展空間。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種基于動態(tài)內(nèi)核實現(xiàn)跨地址空間創(chuàng)建構(gòu)件對象的方法,其靈活內(nèi)核技術(shù)是將構(gòu)件技術(shù)融入到系統(tǒng)內(nèi)核中,實現(xiàn)從系統(tǒng)級支持構(gòu)件技術(shù),從而能夠靈活地動態(tài)配置應(yīng)用構(gòu)件在用戶空間或內(nèi)核空間的運行狀態(tài)。
      本發(fā)明的又一目的在于提供一種基于動態(tài)內(nèi)核實現(xiàn)跨地址空間創(chuàng)建構(gòu)件對象的方法,其系統(tǒng)功能接口的構(gòu)件化,通過系統(tǒng)構(gòu)件API創(chuàng)建構(gòu)件對象,并實現(xiàn)跨地址空間的創(chuàng)建構(gòu)件。
      本發(fā)明的再一目的在于提供一種基于基于動態(tài)內(nèi)核實現(xiàn)跨地址空間創(chuàng)建構(gòu)件對象的方法,基于用戶—中間件——服務(wù)的三層結(jié)構(gòu)體系,由內(nèi)核的構(gòu)件支持部件自動建立作為中間件的構(gòu)件對象的存根代理構(gòu)件,使用構(gòu)件對象的存根代理構(gòu)件跨進(jìn)程訪問構(gòu)件。
      本發(fā)明的還一目的在于提供一種基于基于動態(tài)內(nèi)核實現(xiàn)跨地址空間創(chuàng)建構(gòu)件對象的方法,對于同一構(gòu)件,可以二進(jìn)制載體形式直接運行在用戶空間或內(nèi)核空間。
      為此,本發(fā)明通過如下技術(shù)方案實現(xiàn)上述目的一種計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,將計算機操作系統(tǒng)的系統(tǒng)功能抽象為對象并用構(gòu)件技術(shù)封裝成獨立的構(gòu)件模塊,提供系統(tǒng)級構(gòu)件技術(shù)支持,將該系統(tǒng)功能接口以構(gòu)件對象接口的形式體現(xiàn),用戶可根據(jù)需要動態(tài)地配置模塊運行狀態(tài),將構(gòu)件模塊配置在內(nèi)核態(tài)運行或置于用戶態(tài)運行。并且,用戶構(gòu)件在內(nèi)核態(tài)與用戶態(tài)可以使用同樣的方法獲取系統(tǒng)功能構(gòu)件對象的接口,而且調(diào)用方法相同。
      具體地,內(nèi)核態(tài)構(gòu)件模塊包括內(nèi)存管理、進(jìn)程/線程管理以及控制裝載的設(shè)備管理器。如果需要,也可包括擴(kuò)展構(gòu)件,用于針對具體的設(shè)備或應(yīng)用設(shè)置相對固定的對應(yīng)應(yīng)用構(gòu)件,以及文件系統(tǒng)構(gòu)件或圖形系統(tǒng)構(gòu)件或網(wǎng)絡(luò)服務(wù)構(gòu)件或設(shè)備驅(qū)動程序構(gòu)件。
      作為用戶態(tài)構(gòu)件模塊,包括擴(kuò)展構(gòu)件或文件系統(tǒng)構(gòu)件或圖形系統(tǒng)構(gòu)件或網(wǎng)絡(luò)服務(wù)構(gòu)件或設(shè)備驅(qū)動程序構(gòu)件。
      為用戶通過該中間構(gòu)件完成跨地址空間的構(gòu)件調(diào)用,內(nèi)核態(tài)構(gòu)件模塊包括邏輯抽象層一構(gòu)件運行平臺,利用該運行平臺生成跨地址空間的創(chuàng)建構(gòu)件對象的中間件構(gòu)件。
      而中間件為代理構(gòu)件對象、存根構(gòu)件對象;其中存根構(gòu)件對象設(shè)置在被創(chuàng)建的構(gòu)件對象端;代理構(gòu)件對象設(shè)置在對象的創(chuàng)建者端。
      本發(fā)明的一種基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,在于通過系統(tǒng)提供給用戶的API,用戶可以選擇在內(nèi)核空間或用戶空間創(chuàng)建構(gòu)件對象。
      針對在內(nèi)核空間使用系統(tǒng)功能接口,直接調(diào)用系統(tǒng)功能接口;而在用戶空間調(diào)用系統(tǒng)功能接口,通過中間件到實際對象,從用戶空間獲取某個系統(tǒng)功能接口時,系統(tǒng)自動創(chuàng)建對應(yīng)于該接口的代理構(gòu)件/存根構(gòu)件,然后把代理對象的接口返回給用戶。
      進(jìn)一步地,在用戶空間創(chuàng)建用戶態(tài)構(gòu)件對象步驟為步驟1在用戶空間調(diào)用創(chuàng)建函數(shù),其中設(shè)置參數(shù),在同一地址空間中創(chuàng)建構(gòu)件對象;步驟2在用戶空間創(chuàng)建構(gòu)件的類廠,然后使用類廠創(chuàng)建構(gòu)件對象;步驟3返回構(gòu)件對象的接口,使用該接口直接訪問該構(gòu)件對象。
      在用戶空間創(chuàng)建內(nèi)核態(tài)構(gòu)件對象步驟為步驟1在用戶空間調(diào)用創(chuàng)建函數(shù),其中設(shè)置參數(shù),表示內(nèi)核地址空間中創(chuàng)建構(gòu)件對象;步驟2使用內(nèi)核中的構(gòu)件運行支持部件的功能,陷入到內(nèi)核中,在內(nèi)核中創(chuàng)建構(gòu)件的類廠,然后使用類廠創(chuàng)建構(gòu)件對象,生成構(gòu)件對象的存根對象,并返回到用戶態(tài);步驟3返回到用戶空間,系統(tǒng)發(fā)現(xiàn)該系統(tǒng)功能調(diào)用應(yīng)返回一遠(yuǎn)程對象的接口,則相應(yīng)創(chuàng)建一個和存根對象對應(yīng)的代理對象;步驟4使用代理對象接口,通過進(jìn)程間通信實現(xiàn)對真實構(gòu)件對象的訪問。
      當(dāng)然,用戶可以跨地址空間在用戶空間創(chuàng)建構(gòu)件對象??绲刂房臻g創(chuàng)建構(gòu)件對象是由系統(tǒng)自動創(chuàng)建中間件的存根構(gòu)件/代理構(gòu)件,創(chuàng)建過程通過自動化散列集實現(xiàn)。
      具體地,在跨地址空間的構(gòu)件調(diào)用中,代理對象負(fù)責(zé)進(jìn)程間通信,生成遠(yuǎn)程對象的本地代理;被調(diào)用構(gòu)件對象所在的地址空間生成一存根對象,與代理對象匹配,通過存根對象向代理對象返回調(diào)用結(jié)果。其中創(chuàng)建存根構(gòu)件對象時,獲取對應(yīng)構(gòu)件對象的相應(yīng)接口的元數(shù)據(jù),根據(jù)元數(shù)據(jù)構(gòu)造存根的接口形式,即建立存根的虛表,同時存根還有保存指向真實對象的指針和接口地址等信息;創(chuàng)建代理構(gòu)件對象時,首先也要獲取對應(yīng)構(gòu)件對象的相應(yīng)接口的元數(shù)據(jù),根據(jù)元數(shù)據(jù)構(gòu)造代理的接口形式,并保存接口地址等信息。
      為此,存根和代理還都會保存一個系統(tǒng)動態(tài)生成的標(biāo)識符,系統(tǒng)通過此標(biāo)識符來匹配一對代理和存根。代理/存根是對應(yīng)于接口的,一個擁有多個接口的構(gòu)件對象在作遠(yuǎn)程調(diào)用時,系統(tǒng)為每個接口建立一對代理/存根對象。
      這樣,在跨地址空間的通道建立后,代理與存根運行步驟為步驟1當(dāng)代理創(chuàng)建后返回一個指向代理對象的智能指針,對于智能指針方法的調(diào)用便轉(zhuǎn)換為對代理對象方法的調(diào)用;步驟2代理對象調(diào)用通過IPC跳轉(zhuǎn)到內(nèi)核空間;步驟3系統(tǒng)在內(nèi)核空間另外起一個線程,在該線程中使用IPC過程中復(fù)制的棧,調(diào)用存根對象;步驟4存根對象調(diào)用真實對象,真實的構(gòu)件對象在完成調(diào)用之后,返回到存根調(diào)用;步驟5存根調(diào)用返回到IPC,在IPC中會根據(jù)接口方法的元數(shù)據(jù)將返回值和返回參數(shù)復(fù)制到代理對象所在的空間;步驟6IPC返回到代理調(diào)用;步驟7代理調(diào)用返回給調(diào)用者。
      上述步驟2包括在IPC過程中,通過代理對象中的接口地址獲取對應(yīng)該接口的元數(shù)據(jù),根據(jù)元數(shù)據(jù)將代理調(diào)用的??截惖絻?nèi)核空間。
      本發(fā)明操作系統(tǒng)把部分系統(tǒng)功能用構(gòu)件技術(shù)封裝成獨立的構(gòu)件模塊,例如文件系統(tǒng)和圖形系統(tǒng)。用戶可以根據(jù)需要動態(tài)地配置這些模塊運行狀態(tài),也就是說可以根據(jù)用戶的需要,將一些來源值得信賴或?qū)\行效率要求高的構(gòu)件模塊配置于內(nèi)核態(tài),而另一些不太穩(wěn)定的模塊置于用戶態(tài)運行,在一個系統(tǒng)中同時滿足穩(wěn)定性、安全性與實時性的特殊要求。這樣的體系結(jié)構(gòu)不必區(qū)分是整體內(nèi)核還是微內(nèi)核,事實上所謂的“內(nèi)核”可大可小,完全依據(jù)系統(tǒng)自身的需求動態(tài)決定。這就是本發(fā)明獨創(chuàng)性的“靈活內(nèi)核”體系結(jié)構(gòu),利用構(gòu)件技術(shù)解決了長期以來困擾操作系統(tǒng)體系結(jié)構(gòu)設(shè)計者的整體內(nèi)核和微內(nèi)核在性能、效率兩者之間不能兩全其美的矛盾。


      圖1為本發(fā)明操作系統(tǒng)的三層結(jié)構(gòu)示意圖,圖1中,1為動態(tài)鏈接庫函數(shù)調(diào)用;2為構(gòu)件對象接口方法調(diào)用;圖2為本發(fā)明構(gòu)件運行平臺共享代碼動態(tài)鏈接庫映射機制示意圖;圖3為本發(fā)明基于構(gòu)件化內(nèi)核在用戶空間創(chuàng)建構(gòu)件對象接口結(jié)構(gòu)示意圖;圖4為本發(fā)明基于構(gòu)件運行平臺共享代碼動態(tài)鏈接庫在內(nèi)核空間創(chuàng)建構(gòu)件對象接口結(jié)構(gòu)示意圖;圖5為本發(fā)明基于構(gòu)件運行平臺共享代碼動態(tài)鏈接庫在用戶空間創(chuàng)建構(gòu)件對象接口結(jié)構(gòu)示意圖;圖6為本發(fā)明代理與存根生成流程圖;
      圖7為本發(fā)明跨地址空間創(chuàng)建構(gòu)件對象時代理與存根運行步驟流程圖;圖8為本發(fā)明內(nèi)核機制實現(xiàn)流程圖;圖9為本發(fā)明構(gòu)件接口方法調(diào)用流程圖。
      具體實施例方式
      如圖1-9所示,本發(fā)明的本質(zhì)是將構(gòu)件技術(shù)引進(jìn)到內(nèi)核,因而內(nèi)核是構(gòu)件化,目的是實現(xiàn)系統(tǒng)的靈活多變。構(gòu)件化內(nèi)核是將計算機操作系統(tǒng)的系統(tǒng)功能抽象為對象并用構(gòu)件技術(shù)封裝成獨立的構(gòu)件模塊,提供系統(tǒng)級構(gòu)件技術(shù)支持。另外,本發(fā)明操作系統(tǒng)利用構(gòu)件技術(shù)的優(yōu)勢在系統(tǒng)層面實現(xiàn)了“三層結(jié)構(gòu)”(Client/Middleware/Server)計算模型,完全把構(gòu)件技術(shù)的使用融入到系統(tǒng)內(nèi)核中,由于構(gòu)件、中間件技術(shù),可以做到構(gòu)件運行環(huán)境對用戶和構(gòu)件制造者透明,例如構(gòu)件可以不加修改運行于不同地址空間。
      內(nèi)核態(tài)構(gòu)件模塊包括進(jìn)程構(gòu)件對象、線程構(gòu)件對象、同步(Mutex,Monitor等)構(gòu)件對象和虛擬內(nèi)存構(gòu)件對象以及控制裝載的設(shè)備管理器。如果需要,也可包括擴(kuò)展構(gòu)件,用于針對具體的設(shè)備或應(yīng)用設(shè)置相對固定的對應(yīng)應(yīng)用構(gòu)件,以及文件系統(tǒng)構(gòu)件或圖形系統(tǒng)構(gòu)件或網(wǎng)絡(luò)服務(wù)構(gòu)件或設(shè)備驅(qū)動程序構(gòu)件;作為用戶態(tài)構(gòu)件模塊,包括擴(kuò)展構(gòu)件或文件系統(tǒng)構(gòu)件或圖形系統(tǒng)構(gòu)件或網(wǎng)絡(luò)服務(wù)構(gòu)件或設(shè)備驅(qū)動程序構(gòu)件。
      用戶構(gòu)件在內(nèi)核態(tài)與用戶態(tài)可以使用同樣的方法獲取系統(tǒng)功能構(gòu)件對象的接口,而且調(diào)用方法相同。
      參見圖2、4、5,本發(fā)明作為中間件的構(gòu)件運行平臺與底層操作系統(tǒng)密不可分,在某種程度上構(gòu)件運行平臺是底層操作系統(tǒng)的一個抽象層,構(gòu)件運行平臺為客戶程序與操作系統(tǒng)的交互界面,為客戶程序提供相關(guān)的函數(shù)調(diào)用及構(gòu)件服務(wù),同時隱藏了底層操作系統(tǒng)的特征。構(gòu)件運行平臺為內(nèi)核共享代碼生成的虛擬動態(tài)鏈接庫,通過該內(nèi)核共享代碼的映射機制,用戶程序直接共享這些代碼,在加載用戶進(jìn)程時,通過自動在用戶空間注冊該虛擬的動態(tài)鏈接庫,將二進(jìn)制載體直接運行操作。同時,構(gòu)件運行平臺還包括應(yīng)用函數(shù)API,API是指動態(tài)鏈接庫提供的系統(tǒng)調(diào)用函數(shù),如進(jìn)程處理、線程管理、類對象等,提供用戶基本的構(gòu)件庫服務(wù)和/或支持函數(shù),共享代碼表中的共享代碼與API一一對應(yīng)。
      在本發(fā)明操作系統(tǒng)中,內(nèi)核代碼及用戶代碼都將被加載到共享地址空間(內(nèi)核私有代碼被加以保護(hù),禁止用戶進(jìn)程直接訪問),編譯器將內(nèi)核共享代碼生成一個虛擬的動態(tài)鏈接庫,通過內(nèi)核共享代碼的映射機制,所有用戶程序共享這些代碼,操作系統(tǒng)在加載用戶進(jìn)程的初始化時通過自動在用戶空間注冊該虛擬的動態(tài)鏈接庫。動態(tài)鏈接庫的引出API表與內(nèi)核共享代碼API表一一對應(yīng)。動態(tài)鏈接庫的引出API是提供給用戶基本的構(gòu)件庫的服務(wù)及其他一些支持函數(shù)。
      本發(fā)明內(nèi)核代碼映射由動態(tài)鏈接庫的機制加以體現(xiàn),由于都在共享地址空間,用戶進(jìn)程無需陷入到內(nèi)核空間只需要一個長跳轉(zhuǎn)指針就可以共享該部分代碼資源,這樣減少了切換CPU狀態(tài)的系統(tǒng)消耗,并且該部分代碼由所有進(jìn)程共享(內(nèi)核也是一個進(jìn)程)可以最大程度的減少用戶目標(biāo)代碼大小,以符合嵌入式市場對應(yīng)用上的要求。標(biāo)準(zhǔn)函數(shù)庫是完全基于系統(tǒng)功能接口實現(xiàn)的。
      具體地,如圖3、6所示,系統(tǒng)功能接口的使用在內(nèi)核空間使用系統(tǒng)功能接口,是直接的接口調(diào)用;在用戶空間調(diào)用系統(tǒng)功能接口,也是通過代理/存根到實際對象,從用戶空間獲取某個系統(tǒng)功能接口時,系統(tǒng)會自動創(chuàng)建對應(yīng)于該接口的代理/存根,然后把代理對象的接口返回給用戶。
      文件系統(tǒng)作為例子來說明。將一個構(gòu)件加載在內(nèi)核態(tài)和用戶態(tài),具體流程如下1、首先編寫一個構(gòu)件A;2、編寫一個用戶程序,在用戶態(tài)創(chuàng)建構(gòu)件A的對象,并調(diào)用其中的方法;3、編寫一個用戶程序,在內(nèi)核態(tài)創(chuàng)建構(gòu)件A的對象,并調(diào)用其中的方法;其運行結(jié)果一致。
      本發(fā)明用戶態(tài)使用系統(tǒng)功能接口要跨越地址空間,在內(nèi)核中使用系統(tǒng)功能接口則無需跨越地址空間,這其間的差異完全被系統(tǒng)所做的工作覆蓋了。
      下面說明在用戶態(tài)和內(nèi)核態(tài)獲取系統(tǒng)功能接口的流程。
      以創(chuàng)建進(jìn)程為例,參見圖5、8,在用戶態(tài)獲取系統(tǒng)功能接口的流程1、調(diào)用相應(yīng)的API函數(shù);2、API函數(shù)調(diào)用系統(tǒng)功能接口,通過進(jìn)程間通信(IPC)陷入到內(nèi)核態(tài)創(chuàng)建一個新的進(jìn)程,并創(chuàng)建一個對應(yīng)于新進(jìn)程構(gòu)件對象接口的存根對象;3、IPC返回到用戶空間,系統(tǒng)發(fā)現(xiàn)該系統(tǒng)功能調(diào)用應(yīng)該返回一個遠(yuǎn)程對象的接口,則會相應(yīng)創(chuàng)建一個和存根(存根)對象對應(yīng)的代理(代理)對象;4、使用獲取的代理對象接口,通過進(jìn)程間通信實現(xiàn)對真實構(gòu)件對象的訪問。
      以創(chuàng)建進(jìn)程為例,參見圖4,在內(nèi)核態(tài)獲取系統(tǒng)功能接口的流程1、調(diào)用相應(yīng)的API函數(shù);2、API函數(shù)會調(diào)用系統(tǒng)功能接口,由于已經(jīng)處于內(nèi)核中,因此直接創(chuàng)建一個新的進(jìn)程;3、直接返回新進(jìn)程的接口;4、直接調(diào)用進(jìn)程對象的接口。
      對于構(gòu)件對象的創(chuàng)建,本發(fā)明系統(tǒng)功能接口的調(diào)用和使用者所處于的運行狀態(tài)無關(guān),這樣,基于本發(fā)明的系統(tǒng)功能接口開發(fā)的構(gòu)件可以在不同運行狀態(tài)下創(chuàng)建和使用,也就是說同樣的二進(jìn)制代碼可以絲毫不變地運行于內(nèi)核態(tài)和用戶態(tài),而且接口使用也不會受到運行空間的影響。
      甚至可以說運行于內(nèi)核態(tài)的構(gòu)件看上去就像擴(kuò)展的系統(tǒng)功能一樣,但與系統(tǒng)功能接口不同的是系統(tǒng)功能接口是系統(tǒng)運行必須的構(gòu)件,而用戶構(gòu)件可以加載也可以不加載;另外,系統(tǒng)功能接口背后的系統(tǒng)構(gòu)件對象是系統(tǒng)用根據(jù)需要創(chuàng)建的,用戶一般不會介入到系統(tǒng)構(gòu)件對象的創(chuàng)建過程中,而用戶構(gòu)件則有比較顯示的創(chuàng)建過程。
      無論將用戶構(gòu)件創(chuàng)建在用戶態(tài)還是內(nèi)核態(tài),對使用者來說都是透明的,在使用者看上去任何時候都像是在同真實的對象交互。本發(fā)明操作系統(tǒng)把內(nèi)核看成是一個進(jìn)程,通過本發(fā)明提供給用戶的API,可以選擇在用戶空間還是內(nèi)核空間創(chuàng)建構(gòu)件對象。
      在用戶空間創(chuàng)建內(nèi)核態(tài)構(gòu)件對象的流程為1、在用戶空間調(diào)用創(chuàng)建函數(shù),其中設(shè)參數(shù),表示在內(nèi)核地址空間中創(chuàng)建構(gòu)件對象;2、使用內(nèi)核中的構(gòu)件運行支持部件的功能,陷入到內(nèi)核中,在內(nèi)核中創(chuàng)建構(gòu)件的類廠,然后使用類廠創(chuàng)建構(gòu)件對象,生成構(gòu)件對象的存根對象,并返回到用戶態(tài);3、返回到用戶空間,系統(tǒng)發(fā)現(xiàn)該系統(tǒng)功能調(diào)用應(yīng)該返回一個遠(yuǎn)程對象的接口,則會相應(yīng)創(chuàng)建一個和存根(存根)對象對應(yīng)的代理(代理)對象;4、使用代理對象接口,通過進(jìn)程間通信實現(xiàn)對真構(gòu)件對象的訪問。
      在用戶空間創(chuàng)建構(gòu)件對象的流程為1、在用戶空間調(diào)用創(chuàng)建函數(shù),其中設(shè)參數(shù),表示在同一個地址空間中創(chuàng)建構(gòu)件對象;2、創(chuàng)建函數(shù)會在用戶空間創(chuàng)建構(gòu)件的類廠,然后使用類廠創(chuàng)建構(gòu)件對象;3、直接返回構(gòu)件對象的接口,使用該接口即可直接訪問構(gòu)件對象。
      本發(fā)明內(nèi)核中的構(gòu)件運行環(huán)境,是靈活內(nèi)核技術(shù)在使用中的外在體現(xiàn)。本發(fā)明系統(tǒng)實現(xiàn)靈活內(nèi)核技術(shù)的根本在于將構(gòu)件技術(shù)融入到內(nèi)核當(dāng)中,并且系統(tǒng)能夠自動為跨地址空間的接口創(chuàng)建存根代理對象,并且實現(xiàn)了自動化散列集(marshaling)。
      在跨地址空間的調(diào)用中,要考慮調(diào)用參數(shù)和返回值的傳輸問題,列集是指把方法的參數(shù)打包,準(zhǔn)備傳輸?shù)搅硪粋€地址空間;散集在另一端把收到的數(shù)據(jù)包打開,散集和列集合稱散列集。散列集的過程中必須掌握數(shù)據(jù)的格式,包括數(shù)據(jù)的尺寸以及數(shù)據(jù)的擺放形式。這些描述數(shù)據(jù)的信息可以稱作元數(shù)據(jù),本發(fā)明中準(zhǔn)確地說元數(shù)據(jù)是指用于描述構(gòu)件信息的數(shù)據(jù),包括構(gòu)件功能和接口形式。獲取元數(shù)據(jù)通常有兩種方式。一種方式是把這些信息靜態(tài)地注冊到系統(tǒng)中,在需要的時候,進(jìn)行查詢并獲取。另外一種方式是把元數(shù)據(jù)直接封裝到構(gòu)件中,這種方式可以降低系統(tǒng)成本。
      具體地,本發(fā)明存根代理構(gòu)件的創(chuàng)建是在跨地址空間的構(gòu)件調(diào)用中,因調(diào)用者與被調(diào)用者不在同一個地址空間,無法實現(xiàn)直接的調(diào)用,代理對象就是為完成進(jìn)程間通信而生成的遠(yuǎn)程對象的本地代理。與之相對應(yīng),被調(diào)用構(gòu)件對象所在的地址空間也會生成一個存根對象與代理對象匹配,通過存根對象向代理對象返回調(diào)用結(jié)果。在有多個地址同時對一個構(gòu)件進(jìn)行調(diào)用時,被調(diào)用構(gòu)件對象會為每個地址生成一個存根構(gòu)件(與每個進(jìn)程調(diào)用生成的代理構(gòu)件對象相對應(yīng));另外,創(chuàng)建存根構(gòu)件對象時,首先要獲取對應(yīng)構(gòu)件對象的相應(yīng)接口的元數(shù)據(jù),根據(jù)元數(shù)據(jù)構(gòu)造存根的接口形式。亦即建立存根的虛表,同時存根還有保存指向真實對象的指針和接口地址等信息。
      而在創(chuàng)建代理構(gòu)件對象時,首先也要獲取對應(yīng)構(gòu)件對象的相應(yīng)接口的元數(shù)據(jù),根據(jù)元數(shù)據(jù)構(gòu)造代理的接口形式。并保存接口地址等信息。
      此外存根和代理還都會保存一個系統(tǒng)動態(tài)生成的標(biāo)識符,系統(tǒng)通過此標(biāo)識符來匹配一對代理和存根。
      應(yīng)該強調(diào)的是,代理/存根是對應(yīng)于接口的,一個擁有多個接口的構(gòu)件對象在作遠(yuǎn)程調(diào)用時,系統(tǒng)會為每個接口建立一對代理/存根對象。
      參見圖7,針對存根代理的運作,本發(fā)明是在跨地址通道建立起來以后,進(jìn)行如下運作流程步驟1當(dāng)代理創(chuàng)建后會返回一個指向代理對象的智能指針,對于智能指針方法的調(diào)用便轉(zhuǎn)換為對代理對象方法的調(diào)用;步驟2代理對象調(diào)用會通過IPC跳轉(zhuǎn)到內(nèi)核空間。在IPC過程中,通過代理對象中的接口地址獲取對應(yīng)該接口的元數(shù)據(jù),根據(jù)元數(shù)據(jù)將代理調(diào)用的??截惖絻?nèi)核空間;
      步驟3系統(tǒng)在內(nèi)核空間另外起一個線程,在該線程中使用IPC過程中復(fù)制的棧,調(diào)用存根對象;步驟4從存根對象調(diào)用真實構(gòu)件對象,真實的構(gòu)件對象在完成調(diào)用之后,返回到存根調(diào)用;步驟5存根調(diào)用返回到IPC,在IPC中會根據(jù)接口方法的元數(shù)據(jù)將返回值和返回參數(shù)復(fù)制到代理對象所在的空間;步驟6IPC返回到代理調(diào)用;步驟7代理調(diào)用返回給調(diào)用者。
      最后所應(yīng)說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
      權(quán)利要求
      1.一種計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于將計算機操作系統(tǒng)的系統(tǒng)功能抽象為對象并用構(gòu)件技術(shù)封裝成獨立的構(gòu)件模塊,提供系統(tǒng)級構(gòu)件技術(shù)支持,將該系統(tǒng)功能接口以構(gòu)件對象接口的形式體現(xiàn),用戶可根據(jù)需要動態(tài)地配置模塊運行狀態(tài),將構(gòu)件模塊配置在內(nèi)核態(tài)運行或置于用戶態(tài)運行。
      2.根據(jù)權(quán)利要求1所述的計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于用戶構(gòu)件在內(nèi)核態(tài)與用戶態(tài)可以使用同樣的方法獲取系統(tǒng)功能構(gòu)件對象的接口,而且調(diào)用方法相同。
      3.根據(jù)權(quán)利要求1所述的計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于內(nèi)核態(tài)構(gòu)件模塊包括內(nèi)存管理、進(jìn)程/線程管理以及設(shè)備管理器。
      4.根據(jù)權(quán)利要求3所述的計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于內(nèi)核態(tài)構(gòu)件模塊還包括擴(kuò)展構(gòu)件,用于針對具體的設(shè)備或應(yīng)用設(shè)置相對固定的對應(yīng)應(yīng)用構(gòu)件。
      5.根據(jù)權(quán)利要求3或4所述的計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于內(nèi)核態(tài)構(gòu)件模塊還包括文件系統(tǒng)構(gòu)件或圖形系統(tǒng)構(gòu)件或網(wǎng)絡(luò)服務(wù)構(gòu)件或設(shè)備驅(qū)動程序構(gòu)件。
      6.根據(jù)權(quán)利要求1所述的計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于用戶態(tài)構(gòu)件模塊包括擴(kuò)展構(gòu)件或文件系統(tǒng)構(gòu)件或圖形系統(tǒng)構(gòu)件或網(wǎng)絡(luò)服務(wù)構(gòu)件或設(shè)備驅(qū)動程序構(gòu)件。
      7.根據(jù)權(quán)利要求1或3或4所述的計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于內(nèi)核態(tài)構(gòu)件模塊包括邏輯抽象層一構(gòu)件運行平臺,利用該運行平臺為跨地址空間的構(gòu)件對象生成中間件構(gòu)件,用戶通過該中間件構(gòu)件完成跨地址空間的構(gòu)件調(diào)用。
      8.根據(jù)權(quán)利要求7所述的計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于中間件為代理構(gòu)件對象、存根構(gòu)件對象;其中存根構(gòu)件對象設(shè)置在被訪問的構(gòu)件對象端;代理構(gòu)件對象設(shè)置在對象的訪問者端。
      9.根據(jù)權(quán)利要求8所述的計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于在多個地址空間同時對一個構(gòu)件進(jìn)行調(diào)用時,被調(diào)用的構(gòu)件為每個地址空間的調(diào)用者生成一個存根構(gòu)件對象,該構(gòu)件與調(diào)用者一端的代理構(gòu)件對象相對應(yīng)。
      10.根據(jù)權(quán)利要求8所述的計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,其特征在于構(gòu)件運行平臺還包括應(yīng)用函數(shù)API,API提供用戶基本的構(gòu)件庫服務(wù)和/或支持函數(shù),共享代碼與API一一對應(yīng)。
      11.一種基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于通過系統(tǒng)提供給用戶的API,用戶可以選擇在內(nèi)核空間或用戶空間創(chuàng)建構(gòu)件對象。
      12.根據(jù)權(quán)利要求11所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于在內(nèi)核空間使用系統(tǒng)功能接口,直接調(diào)用系統(tǒng)功能接口。
      13.根據(jù)權(quán)利要求11所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于在用戶空間調(diào)用系統(tǒng)功能接口,通過中間件到實際對象,從用戶空間獲取某個系統(tǒng)功能接口時,系統(tǒng)自動創(chuàng)建對應(yīng)于該接口的代理構(gòu)件/存根構(gòu)件,然后把代理對象的接口返回給用戶。
      14.根據(jù)權(quán)利要求11所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于在用戶空間創(chuàng)建用戶態(tài)構(gòu)件對象步驟為步驟1在用戶空間調(diào)用創(chuàng)建函數(shù),其中設(shè)置參數(shù),在同一地址空間中創(chuàng)建構(gòu)件對象;步驟2在用戶空間創(chuàng)建構(gòu)件的類廠,然后使用類廠創(chuàng)建構(gòu)件對象;步驟3返回構(gòu)件對象的接口,使用該接口直接訪問該構(gòu)件對象。
      15.根據(jù)權(quán)利要求11所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于在用戶空間創(chuàng)建內(nèi)核態(tài)構(gòu)件對象步驟為步驟1在用戶空間調(diào)用創(chuàng)建函數(shù),其中設(shè)置參數(shù),表示內(nèi)核地址空間中創(chuàng)建構(gòu)件對象;步驟2使用內(nèi)核中的構(gòu)件運行支持部件的功能,陷入到內(nèi)核中,在內(nèi)核中創(chuàng)建構(gòu)件的類廠,然后使用類廠創(chuàng)建構(gòu)件對象,生成構(gòu)件對象的存根對象,并返回到用戶態(tài);步驟3返回到用戶空間,系統(tǒng)發(fā)現(xiàn)該系統(tǒng)功能調(diào)用應(yīng)返回一遠(yuǎn)程對象的接口,則相應(yīng)創(chuàng)建一個和存根對象對應(yīng)的代理對象;步驟4使用代理對象接口,通過進(jìn)程間通信實現(xiàn)對真實構(gòu)件對象的訪問。
      16.根據(jù)權(quán)利要求11所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于用戶可以跨地址空間創(chuàng)建構(gòu)件對象跨地址空間創(chuàng)建構(gòu)件對象是由系統(tǒng)自動創(chuàng)建中間件的存根構(gòu)件/代理構(gòu)件,創(chuàng)建過程通過自動化散列集實現(xiàn)。
      17.根據(jù)權(quán)利要求16所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于在跨地址空間的構(gòu)件調(diào)用中,代理對象負(fù)責(zé)進(jìn)程間通信,生成遠(yuǎn)程對象的本地代理;被調(diào)用構(gòu)件對象所在的地址空間生成一存根對象,與代理對象匹配,通過存根對象向代理對象返回調(diào)用結(jié)果。
      18.根據(jù)權(quán)利要求17所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于創(chuàng)建存根構(gòu)件對象時,獲取對應(yīng)構(gòu)件對象的相應(yīng)接口的元數(shù)據(jù),根據(jù)元數(shù)據(jù)構(gòu)造存根的接口形式,即建立存根的虛表,同時存根還有保存指向真實對象的指針和接口地址等信息。
      19.根據(jù)權(quán)利要求17所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于創(chuàng)建代理構(gòu)件對象時,首先也要獲取對應(yīng)構(gòu)件對象的相應(yīng)接口的元數(shù)據(jù),根據(jù)元數(shù)據(jù)構(gòu)造代理的接口形式,并保存接口地址等信息。
      20.根據(jù)權(quán)利要求17所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于存根和代理還都會保存一個系統(tǒng)動態(tài)生成的標(biāo)識符,系統(tǒng)通過此標(biāo)識符來匹配一對代理和存根。
      21.根據(jù)權(quán)利要求17所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于代理/存根是對應(yīng)于接口的,一個擁有多個接口的構(gòu)件對象在作遠(yuǎn)程調(diào)用時,系統(tǒng)為每個接口建立一對代理/存根對象。
      22.根據(jù)權(quán)利要求13-21之一所述的基于上述系統(tǒng)功能內(nèi)核構(gòu)件化的構(gòu)件對象創(chuàng)建方法,其特征在于在跨地址空間的通道建立后,代理與存根運行步驟為步驟1當(dāng)代理創(chuàng)建后返回一個指向代理對象的智能指針,對于智能指針方法的調(diào)用便轉(zhuǎn)換為對代理對象方法的調(diào)用;步驟2代理對象調(diào)用通過IPC跳轉(zhuǎn)到內(nèi)核空間;步驟3系統(tǒng)在內(nèi)核空間另外起一個線程,在該線程中使用IPC過程中復(fù)制的棧,調(diào)用存根對象;步驟4從存根對象調(diào)用真實構(gòu)件對象,真實的構(gòu)件對象在完成調(diào)用之后,返回到存根調(diào)用;步驟5從存根調(diào)用返回到IPC,在IPC中會根據(jù)接口方法的元數(shù)據(jù)將返回值和返回參數(shù)復(fù)制到代理對象所在的空間;步驟6IPC返回到代理調(diào)用;步驟7代理調(diào)用返回給調(diào)用者。
      23.根據(jù)權(quán)利要求22所述的基于上述系統(tǒng)內(nèi)核功能構(gòu)件化的跨地址空間構(gòu)件對象創(chuàng)建方法,其特征在于步驟2包括在IPC過程中,通過代理對象中的接口地址獲取對應(yīng)該接口的元數(shù)據(jù),根據(jù)元數(shù)據(jù)將代理調(diào)用的棧拷貝到內(nèi)核空間。
      全文摘要
      一種計算機操作系統(tǒng)構(gòu)件化靈活內(nèi)核實現(xiàn)的方法,將計算機操作系統(tǒng)的系統(tǒng)功能抽象為對象并用構(gòu)件技術(shù)封裝成獨立的構(gòu)件模塊,將該系統(tǒng)功能接口以構(gòu)件對象接口的形式體現(xiàn),根據(jù)需要動態(tài)地配置模塊運行狀態(tài),將構(gòu)件模塊配置在內(nèi)核態(tài)運行或置于用戶態(tài)運行。用戶構(gòu)件在內(nèi)核態(tài)與用戶態(tài)可以使用同樣的方法獲取系統(tǒng)功能構(gòu)件對象的接口,調(diào)用方法相同。為用戶通過該中間構(gòu)件完成跨地址空間的構(gòu)件調(diào)用,內(nèi)核態(tài)構(gòu)件模塊包括邏輯抽象層一構(gòu)件運行平臺,利用該運行平臺生成跨地址空間的創(chuàng)建構(gòu)件對象的中間件構(gòu)件。本發(fā)明靈活內(nèi)核技術(shù)是將構(gòu)件技術(shù)融入到系統(tǒng)內(nèi)核中,實現(xiàn)從系統(tǒng)級支持構(gòu)件技術(shù),從而能夠靈活地動態(tài)配置應(yīng)用構(gòu)件在用戶空間或內(nèi)核空間的運行狀態(tài)。
      文檔編號G06F9/34GK1514353SQ0216013
      公開日2004年7月21日 申請日期2002年12月31日 優(yōu)先權(quán)日2002年12月31日
      發(fā)明者陳榕, 杜永文, 林清洪, 榕 陳 申請人:北京科泰世紀(jì)科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1