TWI276998B - Systems and methods for managing drivers in a computing system - Google Patents
Systems and methods for managing drivers in a computing system Download PDFInfo
- Publication number
- TWI276998B TWI276998B TW091137490A TW91137490A TWI276998B TW I276998 B TWI276998 B TW I276998B TW 091137490 A TW091137490 A TW 091137490A TW 91137490 A TW91137490 A TW 91137490A TW I276998 B TWI276998 B TW I276998B
- Authority
- TW
- Taiwan
- Prior art keywords
- driver
- application
- hardware
- computer
- instructions
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Description
1276998 ⑴ 玖、發明說明 _ (發明說明應敘明:發明所屬之技術領域、先前技術、内容、實施方式及圖式簡單說明) 技術領域: 本發明涉及管理計算系統中驅動程式的系統和方法。 先前技術: 就電腦系統設計而言,驅動程式是使硬體功能對作業系統 公開的軟體組件,以致作業系統進而可使那些功能對應用 程式公開。通常作業系統透過「裝置驅動程式介面」(「DDI」) 和驅動程式互動,謹慎定義的通訊協定啟動作業系統以:載 入驅動程式、詢問硬體提供的功能,並使那些功能供應用 程式使用。 作業系統提供給應用程式的軟體介面,即是「應用程式 設計介面」(「API」)。作業系統提供的API,使應用軟體抽 象化,但不一定類似基礎硬體的特性。大幅遠離基礎硬韹 的例子,=是為大量儲存所提供的目錄/檔案軟體抽象化。· 與基礎硬體不同的另一軟體抽象化是虛擬記憶體,這會使 應用程式通透地使用本機硬碟儲存體,如同它是隨機存取 記憶體一般。 當API導致硬體資源受到利用的時候,作業系統透過DDI 呼叫驅動程式利用那些資源。由於API和基礎硬體提供的 軟體抽象4匕=之間的差異,從API呼叫到DDI呼叫的轉譯,需 要處理大量的邏輯和程式碼。就這個規格而言,應用程一式 —層級APf和驅動程式一層級DDI之間的軟體,統稱為「執 行時間」。
應用程式、驅動程式等通常由高階語言撰寫,例如像C i
-6- 1276998 (2) 。這類語言通常主要由編譯實作為機器碼。 ,驅動程式與在系統上運作的應用程式和其 撰寫。然後應用程式和驅動程式,通常在安 應用程式執行時,動態(例如,DLL )連結在 統的優點是,編譯器可針對處理器的特定 將程式碼最佳化。但是,編譯器不能針對拍 例如PENTIUM 4和PENTIUM 3,將程式碼最佳化 器不會將其他系統參數包括驅動程式版本、 組件的程式碼最佳化,更不會考慮目標系統 制。而是,應用程式或執行時間層級系統, 昂貴的邏輯計算來判斷這類參數,而且由袁 以致於程式會佔用所有類別的電腦系統來^ 另一個適用的程式設計範例是在執行時 。及時(JIT)編譯器是這類系統的範例。其他 譯的系統,包括在說明狀態下立刻開始執行 統,但同時編譯程式碼並持續地使編譯最β 編譯器,當類別載入虛擬機器的時候,虛擬 法指標,會被指向JIT編譯器的指標所取代 次呼叫每個方法時,同時會叫用JIT編譯器 法。然後虛擬方法表格中的指標,以指 碼版本,以致於未來對方法的呼叫將跳到 JIT編譯系統,例如像JAVA位元碼,CLRT指令 間語言(IL)傳送程式碼給目標機器的優點。 成把IL轉換成本機處理器可執行的指令。因 發明說明續頁
在這類情況-下 他的程式分開 裝流程期間或 一起。這類系 類別(例如X86) 「定微處理器, 。而且,編譯 以及其他硬_體-的特定系統限 必須使用代價 、處理器限制, 九行編譯。 間編譯程式碼· 在執行時間編_ 的連續編譯系 .化。藉由及時 方法表中的方 。然後,第一 ,以編譯該方 向方法的機器 機器碼。這些 等等,有以中-編譯器被設計 此,相同的IL 1276998 (3) 發明說明續頁 指令可以送至具有不同本機處理器的電腦,但仍在目標i 理器上執行。 — 雖然這類中間語言編譯器,編譯在目標電腦系統上的中間 語言指令,但是他們也不會針對特定的目標電腦系統將程 式碼最佳化,包括解釋驅動程式版本和其他的硬體組件。 發明内容: 有鑑於前述内容,因此本發明提供包含應用程式和執行 時間、及/或驅動程式的管理程式碼。管理程式碼,由_具-有電腦系統精確硬體配置先驗知識的編譯器所編譯,正如 JIT編譯器具有用戶端上微處理器類型的先驗知識。在編 譯時,各種不同的硬體驅動程式的系統有效版本均為已知 ,因此,如果要管理應用程式和驅動程式,編譯器可以送 出一專為;特定驅動程式版本所調整的可執行檔。 因此,本發明包含的系統和方法,可管理程式碼,以編、 譯針對具有選定處理器的作業系統和與計算組件互動的 驅動程式所配置的程式碼。該系統包含以一中間語言編譯 器可讀取的中間語言所接收的複數個應用程式指令,以及 以一中間語言編譯器可讀取的中間語言所接收的複數個 執行時間指令。中間語言編譯器可將應用程式指令和執行 時間指令_」譯為處理器可執行的一組管理指令碼指令-, 以便與選取的驅動程式互動。驅動程式(或驅動程式的部 份)也可以=中間語言提供,並根據應用程式指令和執行時-間指令編譯為一組管理程式碼指令。 實施方式: 1276998 發明說明續頁 (4) 概覽 - 線上驅動程式模型的支持者表示,效能優越是合併API 實作至驅動程式之内的主要動機。這個合併有許多不受歡 迎的副作用,主要因為無法釋放後續的執行時間,以便在 執行時間的釋放之前,於驅動程式的最上方加入ΑΠ原則 的特性、效能改良或變更。 此處描述的本發明發現,管理程式碼,包括應用程式、 執行時間和驅動程式,應具有用戶端精確硬體配置的先驗-知識,正如JIT編譯器具有用戶端上微處理器類型的先驗 知識。例如,在JIT時,系統知道圖形驅動程式(DirectX 6.0 、DirectX 7.0等)的有效版本,因此,如果應用程式和驅動程 式被管理,JIT編譯器可以送出針對特定驅動程式版本調 整的可執:行檔。 範例網路-和分散式環境 - 本行業的專家可瞭解,電腦或其他用戶端或伺服器裝置 可以部署成電腦網路的一部份,或在分散式計算環境中運 作。就這點來看,本發明與具有任何數量的記憶體或儲存 單元的電腦系統有關,以及與在任何數量的儲存單元或容 量上發生的應用程式和流程有關。本發明可適用具有伺服 器電腦和_1_戶端電腦的環境,該電腦部署在網路環境或分 散式計算環境中,具有遠端或本機儲存裝置。本發明也可 套用到單機型的計算裝置,具有程式語言功能、解譯和執-行功能,用於產生、接收和傳送與服務相關的資訊。 分散式計算有助於在計算裝置和系統之間電腦資源和 1276998 發明說明續頁 (5) 服務的直-接交換。這些資源和服務包括檔案的資訊交換一、 快取儲存、和磁碟儲存。分散式計算利用網路連接,允許 用戶端善用他們的集體電力,以加惠整個企業。就這點來 看,不同裝置具有資料集以執行本發明影像邊界技術,是 眾人想要的技術。 圖1提供一範例網路或分散式計算環境的示意圖。分散 式計算環境包含計算物件l〇a、10b等,以及計算物件或裝 置110a、110b、110c等。這些物件可包含程式、方法、瓷料-儲存、可程式的邏輯等。該物件可包含相同或不同的裝置 部份,例如像PDA、電視、MP3播放機、電視、個人電腦等 。每個物件可以藉由通訊網路14與另一物件通訊。這個網 路它本身.可包含其他的計算物件和計算裝置,以提供服務 給圖1的系統。根據本發明的觀點,每一物件10或110可包 含執行影I剪輯或邊界定義所需要的資料。也希望比較來-自物件10或110的影像剪輯,與另一物件10或110的影像剪 輯。
在分散式計算架構中,電腦,傳統上可獨自作為用戶端 、彼此間直接通訊、並可同時擔任用戶端和伺服器,假設 任一角色對網路都是最有效率的。這減少伺服器的負載, 並允許所_亦_用戶端存取在其他用戶端上得到的資源,藉此 增加功能和整個網路的效率。 - 分散式計算可以超越地理上限制,更有效率地協助企業― 傳送服務和功能。而且,分散式計算可以將資料移動到比 較靠近使用的位置,當做網路快取機制。分散式計算也允 -10· 1276998 發明說明續頁 ⑹ 許計算網路使用智慧型代理裝置動態地共同工作。代理-裝 置位在對等電腦上,且與各種不同類型的資訊來回通訊、 代理裝置也可代表其他對等系統啟始工作。例如,智慧型 代理裝置可以用來優先執行在一網路上的工作、變更交通 流量、搜尋本機檔案、或決定例如像病毒判斷等異常的行 為,並在它影響網路之前制止它。也可同時注意其他所有 類型的服務。本發明的影像剪輯運算法可在這類環境中實 作。 —- 也可瞭解一物件,例如像110c,可裝載在另一計算裝置 10或110上。因此,雖然實體環境描述可顯示被連接的裝 置如電腦,這類圖例只是範例,實體環境可另一方面被描 述或描述包含各種不同的數位裝置,例如像PDA、電視、 MP3播放機等,軟體物件,例如像介面、COM物件等等。、 有支援汾散式計算環境的多種系統、組件和網路配置。-例如,計算系統可以透過區域網路或廣域網路,由有線或 無線系統連接在一起。目前,許多網路耦合到網際網路, 提供基礎結構給廣泛分散式的計算,並包含許多不同的網 路。 網際網路普遍稱為利用通訊協定TCP/IP組合的網路和閘 道的集合j 衾通訊協定在電腦網路中是眾所週知的。TCPAP 是「傳送控制通訊協定/介面程式」的縮寫。網際網路可描 述為一種她理分散式的遠端電腦網路的系統,與執行網路_ 通訊協定的電腦互連,並允許使用者透過網路互動及共用 資訊。由於這類普遍的資訊共用架構,遠端網路例如像網 1276998 發明說明續頁 ⑺ 際網路,因此進展為一種開放的系統,開發人員可以設計 用來執行特殊化操作或服務的軟體應用程式,本質上沒有 任何限制。 因此,網路基礎結構造成多種網路拓樸,例如像主從式 、對等共享、或拼合架構。「用戶端」是使用與它無關的 另一類別或群組服務的類別或群組的一個成員。因此,在 計算時,一個用戶端是一流程,簡單地說,也就是,要求 由另一程式提供服務的一組指令或工作。用戶端流程利_用-要求服務,不需「知道」另一程式或服務本身的任何工作 細節。在主從式架構中,特別一網路系統,用戶端通常是 存取由另一電腦,例如一伺服器,提供共用網路資源的一 台電腦。在圖1的範例中,電腦110a、110b等可以視為用戶 端,電腦dOa、10b等可視為伺服器,其中伺服器10a,10b等 負責維護。在用戶端電腦ll〇a、110b等中複製的資料。 _ 伺服器通常是可透過遠端網路,例如像網際網路,存取 的一種遠端電腦系統。用戶端流程可在一第一電腦系統中 作用,伺服器流程可在一第二電腦系統中作用,在一通訊 媒體上彼此通訊,因此提供分散式功能並允多個用戶端利 用伺服器的資訊收集功能。 用戶端何服器利用由一通訊協定層提供的功能,彼此 通訊。例如,「超文字傳送通訊協定」(HTTP)是與「全球實 訊網」(WWW)(或簡稱為「網路」(Web))有關的通用通訊協定-。通常,一電腦網路位址例如像通用資源定位器(URL)或 網際網路通訊協定(IP)位址,可用來辨識彼此的伺服器或 -12- 1276998 發明說明續頁 ⑻ 用戶端電腦。網路位址可稱為是「通用資源定位器」位址 。例如,通訊可以透過通訊媒體提供。特別是,用戶端和 伺服器可經由TCP/IP連接彼此耦合,以用於高容量通訊。
因此,圖1說明一範例網路或分散式環境,有一伺服器 經由網路/匯流排與用戶端電腦通訊,其中可使用本發明 。更詳細地說,根據本發明,許多伺服器10a、10b等,經 由通訊網路/匯流排14,可以是LAN、WAN、企業内部網路 、網際網路等,和許多用戶端或遠端計算裝置110a、JlOb 、110c、110d、110e等互連,該用戶端或遠端計算裝置例如 像可攜式電腦、掌上型電腦、薄型用戶端、網路裝置、或 其他裝置例如像攝錄影機、電視、烤箱、燈具、暖爐等等 。因此一般認為,本發明可適用任何要與另一計算裝置通 訊以進行·:影像剪輯或邊界定義服務相關的計算裝置。
在通訊鋼路/匯流排14是網際網路的網路環境中,例如_ ,伺服器10可以是Web伺服器,利用該伺服器用戶端110a 、110b、110c、110d、110e等,經由許多的已知通訊協定, 例如像超文字傳送通訊協定(HTTP),進行通訊。伺服器10 也可做為用戶端110,如同是一分散式計算環境的特徵。 通訊可以是視需要以有線或無線的方式。用戶端裝置110 不一定要孽:_由通訊網路/匯流排14通訊,就可以與其有獨 立的通訊。例如,假使有一台電視或攝錄影機,不一定匕乂 網路來控制。每一用戶端電腦110和伺服器電腦10可配備-各種不同的應用程式模組或物件135,並連接或存取各種 不同類型的儲存元件或物件,檔案可以儲存在其中,或是 -13 - 1276998 發明說明續頁 ⑺
部份檔案可下載或轉移至其中。任何電腦10a、10b、110a-、 110b等,負責根據本發明維護和更新資料庫20或其他儲# 元件,例如像資料庫20,用於儲存影像處理軟體,以便根 據本發明來處理影像。因此,本發明可用於具有用戶端電 腦110、110b等的電腦網路環境中,前述裝置可以存取並與 電腦網路/匯流排14和伺服器電腦10a、10b等互動,前述裝 置可以與用戶端電腦110a、110b等和其他裝置111和資料庫 20互動。 _ 範例計算裝置 圖2和下列討論,試圖簡單概略地說明適當的計算環境 ,其中本發明可實作為:但是,應該了解到,所有類型的 手持、可攜式和其他計算裝置和計算物件,都可與本發明 連結使用:。雖然一般用途電腦如下所述,但這僅是其中一 個範例,。-本發明可與具有網路/匯流排互通性和相互作用^ 的薄型用戶端一起實作。因此,本發明可實作於網路裝載 服務環境中,其中牽涉到十分小或極小部份的用_戶端資源 ,例如一網路環境,其中用戶端裝置只提供網路/匯流排 介面的服務,例如像放在一裝置内的物件。基本上,任何 可儲存資料的地方或可擷取資料的地方,都是操作本發明 影像剪輯_運_算法的適當環境。 - 雖然非必要,本發明可經由一作業系統實作,供裝置或 物件服務的開發人員使用,及/或包含在應用軟體内,以-協助處理影像資料。軟體可以電腦可執行指令的一般内容 來描述,例如像程式模組,由一或多個電腦執行,例如像 -14- 1276998 發明說明續頁 (10)
用戶端工作站、伺服器或其他裝置。一般而言,程式模_組 包括執行特殊工作或實施特殊抽象資料型別的常式、程式 、物件、組件、資料結構等等。通常,程式模組的功能可 視需要結合或者分散在各種不同的具體實施例中。而且, 本行業的專家將暸解,本發明可與其他電腦系統配置一起 實行。其他廣為人知的計算系統、環境、及/或適合與本 發明共同使用的配置包括,但不限於:個人電腦(PC)、自 動數鈔機、伺服器電腦、掌上型或膝上型電腦裝置、炙處-理器系統、以微處理器為基礎的系統、可程式的消費性電 子裝置、網路PC、裝置、燈具、環境控制元件、迷你電腦 、主機電腦等等。還可在分散式計算環境中實施本發明, 其中會由透過通訊網路/匯流排或其他資料傳輸媒體所連 結的遠端;處理裝置來執行工作。在分散式計算環境中,程 式模組可5位於本機和包括記憶體儲存裝置的遠端電腦儲, 存媒體,且用戶端節點可進而當做伺服器節點。
因此,圖2說明可實作本發明的適當計算系統環境100的 範例,雖然已詳述如上,計算系統環境100僅是一適當的 計算環境的範例,且不用來限制本發明的使用範疇或功能 。計算環境100也不應該解釋為,屬於或需要範例操作環 境100中所_就明的任何組件或該組件組合。 - 參見圖2,實作本發明的範例系統,包括一電腦110形式 的一般用途計算裝置。電腦110的組件可包括,但不限於-,一處理單元120、一系統記憶體130、和一系統匯流排121 ,將包括系統記憶體的各種不同的系統元件,耦合至處理 -15 - 1276998 (li) I發日續頁 單元120。系統匯流排121可以是任何類型的匯流排結構-, 包括一記憶體匯流排或記憶體控制器、一周邊匯流排、-和 使用各式匯流排架構的本機匯流排。藉著範例的方式說明 ,而不是限制,這類架構包括產業標準架構(ISA)匯流排、 微通道架構(MCA)匯流排、增強ISA(EISA)匯流排、視訊電子 學標準協會(VESA)本機匯流排、和週邊組件互連(pci)匯流 排(也就是夾層式(Mezzanine)匯流排)。 電腦110通常包括多種電腦可讀的媒體。電腦可讀丈媒— 體可以是任何電腦110可存取的可用媒體,包括非永久性 和永久性的媒體、可移動和不可移動的媒體。藉著範例的 方式說明,而不是限制,電腦可讀式媒體可包含電腦儲存 媒體和通訊媒體。電腦儲存媒體包括非永久性和永久性、 可移動和·:不可移動的媒體,實作於任何資訊儲存的方法 技術,例如像電腦可讀的指令、資料結構、程式模組或 他貝料。電腦儲存媒體包括,但不限於,RAM、 抹除可程式唯讀記憶體、快閃記憶體或其他記憶體技徐 CDROM,數位多功能磁碟(DVD)或其他光碟儲存器、磁性 τ、磁帶、磁性磁碟儲存器或其他磁性儲存裝置,或任 其他的媒體,可用來儲存電腦11〇可存取的資訊。通訊 體通常具,—化電腦可讀指令、資料結構、程式模組或在 .文貝料k號中的其他資料,例如像載波或其他傳送機帋 並包括任何資訊傳送媒體。「調變資料信號」一詞,音 具有一或多個其特性集、或以這類方法變更以便將信=
訊編碼的信號〇 J^ ^ , U 和者乾例的方式,而不是限制,通訊媒 -16- (12)^276998 發明說明續頁 t L接有線媒體,例如像有線網路或直接線路連接,以及 無' 绝 、'’媒體,例如像聲音、RF、紅外線和其他無線媒體。上 麵的組合亦涵蓋於電腦可讀式媒體的範疇中。
、系统記憶體130包括電腦儲存媒體,具有非永久性及/或 永A '性記憶體的形式,例如像唯讀記憶體(ROM) 131和隨機 存* I[又上 i 尤t思體(RAM) 132。基本輸出入系統133 (BIOS),包含協助 電嗎110之内元件之間傳送資訊基本常式,例如像在啟
/、间,通常儲存在ROM 131中。RAM 132通常包含資料义/-或年。斗 王式模組,可供處理單元120立即存取,及/或由處理單 在其上操作。藉著範例的方式,而不是限制,圖2說明 作業g 、 、 糸統134、應用程式135、其他程式模組136、和程式資 科 137 。 、 、兒鳩110也可包括其他可抽換/不可抽換式、非永久性/ 久性電斕儲存媒體。僅藉著範例的方式,圖2說明一辟 碟機、 ^' $ 141,從·不可抽換式、永久性磁性媒體讀取或寫入; 礤磲機151,從可抽換式、永久性磁碟152讀取或寫入; 光碟機155,從可抽換式、永久性光碟156讀取或寫入, 例如像CD ROM或其他的光學媒體。其他可用於範例操作 袤境的可抽換式/不可抽換式、非永久性/永久性電腦儲存 媒體,包梦二,·但不限於:磁性卡帶、快閃記憶體卡、數位 多功能磁碟、數位錄影帶、固態RAM、固態r〇m等等。硬 碟機141通考透過不可移動的記憶體介面連接到系統匯流〜 排121 ’上述介面例如像介面140,磁碟機151和光碟機155通 常連接到可移動的記憶體介面的系統匯流排121,例如像 -17- 1276998 發明說明續頁 (13) 介面150 。
磁碟/光碟機和之前曾討論過的圖2所述相關電腦儲存 媒體,提供電腦可讀取的指令、資料結構、程式模組和其 他資料儲存方式給電腦110。例如,圖2的硬碟機141包括作 業系統144、應用程式145、其他程式模組146、和程式資料 147。注意這些組件可以是相同或不同於作業系統134、應 用程式135、其他程式模組136、和程式資料137。此處的作 業系統144、應用程式145、其他程式模組146、和程式資_料-147都有不同的基本數量,以表示他們是不同的複本。使 用者可透過輸入裝置輸入命令和資訊進電腦110之内,例 如像鍵盤162和指標裝置161,通常稱為滑鼠,軌跡球或觸 控板。其他的輸入裝置(未顯示)可包括麥克風、遊戲操縱 桿、遊戲:板、碟形天線、掃描器、或類似事物。這些和其 他的輸入<裝置時常透過耦合到系統匯流排121的使用者輸-入介面160,連接到處理單元120,但是也可藉由其他的介 面和匯流排結構連接,例如像並列埠、遊戲埠或通用序列 匯流排(USB)。圖形介面182,例如像Northbridge,也可連接到 系統匯流排121。Northbridge是一種與CPU、或處理單元120主 機通訊,並負責AGP通訊的晶片組。一或多個圖形處理單 元(圖形>^理器)184可與圖形介面182通訊。在這一方面 圖形處理器184通常包括晶片上的記憶體儲存器,例如像 暫存儲存器和圖形處理器184與一影像記憶體186通訊。顯-示器191或其他類型的顯示裝置,經由一介面也連接到系 統匯流排121,例如像影像介面190,可進而與影像記憶體 -18 - 1276998 發明說明續頁 (14) 186通訊。除了顯示器191,電腦也包括其他的周邊輸出衮 置,例如像,p八197和印表機196,皆透過一輸出周邊介面 195加以連接。
電腦110可使用邏輯連接,在一網路或分散式環境中, 連接至一或多個遠端電腦,例如像遠端電腦180。遠端電 腦180可以是個人電腦、伺服器、路由器、網路PC、對等 裝置或其他通用的網路節點,通常包括許多或所有如上所 描述與電腦110相關的元件,但只有記憶體儲存裝置18】已-經在圖2中加以說明。圖2中描述的邏輯連接,包括一區域 網路(LAN) 171和一廣域網路(WAN) 173,但是也可包括其他的 網路/匯流排。這類網路環境常見於家庭、辦公室、企業 寬頻電腦網路、企業内部網路和網際網路中。 當用於:LAN網路環境時,電腦110透過轉接器170的網路介 面連接到。LAN 171。當用於WAN網路環境時,電腦110通常包-
括一數據機172或其他的裝置,以在WAN 173上建立通訊, 例如像網際網路。數據機172,可以是内部或外部,可經 由使用者輸入介面160,或其他適當機制連接到系統匯流 排12卜在網路環境中,與電腦110或上述裝置相關的程式 模組,可儲存在遠端記憶體儲存裝置中。藉著範例的方式 ,而不是|艮;_制,圖2中的遠端應用程式185位於記憶體裝置 181上。應了解到,所顯示的網路連接,是在可使用電腦 之間建立通信連結的範例和其他裝置。 範例分散式計算結構或架構 各種不同的分散式計算結構,已經且正在隨著個人計算 -19- 1276998 (15) I發明說明續頁 1置和網際網路而發展。同樣為個人和商用使用者,針谢 ” °式和w十异裝置’提供無缝的交互作用和Web啟動介 ’使得計算活動逐漸增加Web瀏覽器或網路導向。 J如’ MICROSOFT®的.Net平台,包括伺服器、建置組塊服 %例如像以網路為基礎的資料儲存和可下載的裝置軟體 為又而了 ’ .Net平台提供⑴使整個範圍的計算裝置共同 作並壤所有使用者資訊自動更新而且同步化的能力, ()為、祠站增加叉談功能,由功能更強的xml並非html此動― (3)、、泉上服務’其特色為自訂化的存取,以及從中央起始 點值… 、 运屋品和服務給使用者,以管理各種不同的應用程式 (例如像電子郵件)或軟體(例如像〇ffke n…,⑷集中的資料 儲存,將增加效率且使資訊的存取更容易,並讓使用者和 衣置义間·的貧訊同步化’⑺整合各種不同的通訊媒體,例 像%子-郵件、傳真和電話的能力,⑹用於開發人員,建― 二可再使用的模組,藉此增加生產力而且減少程式錯誤的 能力,以及⑺許多其他跨平臺的整合功能。 ~~2H___系、纟的驅動程式的營理 圖3A和3B是應用程式135、執行時間3〇2和驅動程式3〇3, 如何透過ΑΠ和DDI互動的簡單說明。 就圖形八—打^以部署而言,目前有兩個常見的驅動程式模 型·線上驅動程式模型和分層驅動程式模型。圖3A描述線 上驅動程式,本質上已完成一完整的Αρι實作,以便在特一 定硬體上執行,例如视訊介面19〇 (圖2)。利用線上驅動程 式模型的API範例,包括專有的圖形Αρι,例如像3Dfe卻如和 -20- 1276998 發明說明續頁 (16) ATI CIF、和OpenGL (開放式繪圖介面)。 一 分層驅動程式,如圖3B所示,介紹額外層級的間接方式 ,其中API實作在透過DDI呼叫驅動程式303之前實作一些邏 輯(例如像參數驗證)和程式碼(例如像幾何管線)。「分層 驅動程式」這個詞,不僅是指API在做工作之後呼叫DDI的 想法,而且也指根據硬體306所實作的功能數,驅動程式 303可實作不同「層級」的想法。例如,實作光柵化的圖形 硬體產品的DDI,會比實作轉換和照明以及光柵化的皇品— 低階。 支援多種分層驅動程式,可增加執行時間302實作的複 雜性。例如,Microsoft的DIRECTX 7.0,可支援硬體力口速白勺轉 換和照明.,必須確認基礎驅動程式303是否實作該功能。 如果是這:樣,應用程式135可以建立並且使用具有該功能 的裝置;·"否則,該功能必須由軟體的執行時間302所模擬-。因此,DIRECTX 7.0執行的程式碼路徑,根據它是在DIRECTX 7.0型的驅動程式或前DIRECTX 7.0驅動程式上執行,而截然 不同。
圖4進一步說明一系統中範例應用程式、執行時間和驅 動程式的層級。應用程式135、執行時間302和部份驅動程 式303,在爹二用者模式中運作,以寫入圖示命令至DMA記憶 體中硬體特定的命令緩衝區之内。在現今PC系統中,這些 寫入通常將會永久寫入AGP記憶體之内;如這個實作範例-所描述,應用程式135常駐於ΕΧΕ中,執行時間302和使用者 模式驅動程式303常駐於動態連結至應用程式135内的DLL -21 - 1276998 發明說明續頁 ⑼ 。系統的使用者模式部份的這些細節可以改變;明確的1¾ ,應用程式135,應用程式135和執行時間302、或應用程式 301、執行時間302和使用者模式驅動程式303可以是管理程 式碼。 為了要對抗未授權的使用者模式驅動程式(例如,303 ) 的取代,系統通常要求核心驅動程式405 (因為從安全的觀 點來看,核心程式碼是可信賴的)載入使用者模式驅動程 式 303 DLL。 _ * 命令緩衝區排程器404 (「排程器」)和核心驅動程式405 — 起在核心模式中工作,以對硬體406調度命令緩衝區(當核 心驅動程式405應排程器404的請求,指示硬體406調度命令 緩衝區的時候,排程器404會決定要調度的命令緩衝區)。 這種系統;認為大多數的驅動程式邏輯,將會常駐於使用者 模式驅動4呈式403 DLL而不是核心驅動程式405。當使用者-模式驅動程式403可以包含大量對應DDI層級呼叫至硬體 特定命令的程式碼的時候(該操作可能會複雜且易出錯, 尤其當編譯頂端及/或顏色較暗的程式的時候),核心驅動 程式405會較小且較簡單,以最大化系統的彈性。 圖5釐清當應用程式135在圖形操作範例中產生API呼叫 時所發生事件順序。命令緩衝區在圖5中並沒有特別描 述成硬體組件;根據圖4,使用者模式驅動程式303將硬體 特定命令窝入裝置目前的命令緩衝區之内,命令緩衝區排-程器(系統核心支援530的一部份),經由核心模式驅動程式 405將命令緩衝區分配給硬體306,結束的命令緩衝區,由 •22- 1276998 發明說明續頁 (18) 系統的應用程式135回收使用。應注意,多個應用程式Γ35 可能可以共用可用的命令緩衝儲存區,由系統核心支援 530仲裁該資源的共用。 當應用程式135最初建立圖示内容501的時候,系統核心 支援530檢查以了解是否可以建立新的命令緩衝區531。如 果是這樣,則建立新的命令緩衝區532並且進行初始化533 ,而且在應用程式135可以執行圖示呼叫502之前,執行緒 取得已初始化的命令緩衝區534。如果無法在第531步驟中-建立命令緩衝區,應用程式135必須等候,直到已初始化 的命令緩衝區變成可用534。一旦應用程式135獲得命令緩 衝區,應用程式135、執行時間302和使用者模式驅動程式 303進入在三個組件之間的典型相互作用,即會導致硬體 特定的命:令寫入命令緩衝區之内。應用程式135的圖示呼 叫502由執4亍時間302驗證511 ;然後檢查512判斷是否需要清-除目前的命令緩衝區。如果不,圖示命令會轉換成比較簡 單的標準DDI呼叫513,並傳給使用者模式驅動程式520。驅 動程式將DDI呼叫轉換成硬體特定的命令並嘗試將他們寫 入命令緩衝區之内。如果檢查滿溢522判斷沒有命令緩衝 區的空間,在寫入命令而且執行繼續之前,命令緩衝區必 須交付給_系__統核心支援530,而且以相同方式取得新的命 令緩衝區。如果執行時間302或使用者模式驅動程式303判 斷需要清除,根據步驟535,命令緩衝區會加入到等候佇-列。那時,系統核心可以檢查536命令緩衝區是否可以立 刻送出(通常因為沒有命令緩衝區正在執行)。如果不,命 -23 - 1276998 發明說明續頁 (19) 令緩衝區會留在等候作列中,而且必須取得一個新的命令 緩衝區534。應注意,這個功能性區塊,該區塊等到有適 當初始化命令緩衝區出現然後分配到裝置,與它可以開始 繪圖之前,應用程式135所需的操作相同。 當為了調度而選取備妥命令緩衝區540的時候,系統核 心支援530命令核心驅動程式405内容,將硬體切換到適當 的内容551並將命令緩衝區調度到硬體552。然後,硬體306 讀取並執行命令緩衝區561,直到先取得它或命令緩衡區— 結束。如果命令緩衝區正常完成563,硬體發出中斷信號 且中斷服務常式553會執行。此時ISR可能希望儲存硬體内 容554,雖然驅動程式可能希望將這操作延遲到内容切換 551,以防萬一硬體被要求在相同内容上運作的列中,執 行兩個命:令緩衝區。在這一個步驟554之後,核心系統支 援530可以。釋放該命令緩衝區需要的資源538,和發出信號-給任何通知機制,例如像讓感興趣的用戶端知道命令緩衝 區已完成的事件。在步驟538之後’核心系統支援有兩個 任務:它必須再初始化最近可用的命令緩衝區和把它加入 被初始化的儲存區533,並且它必須除去任何候補命令緩 衝區的障礙,和移動他們進入備妥彳宁列之内539。在步驟 539之後,遘取要調度的另一個命令緩衝區540。 - 圖4和5描述的中間流程通訊的複雜性,說明根據本發明 的觀點對管理程式碼的需求。特別是,圖5所描述的系統-,可利用管理程式碼,其中應用程式135、執行時間302及/ 或使用者模式驅動程式303的部份,以中間語言形式遞送 -24- 1276998 發明說明續頁 (20) ,並在用戶端上進行JIT編譯。三個組件將以中間語言充 式分別遞送至用戶端。然後JIT編譯器會將他們合成至包 括所有三個組件部份的統一目標碼之内。這類架構將啟動 一系統,其中將會執行最佳的目標碼。除此之外,在應用 程式135呼叫進入點中的常數,可傳播至執行時間302和使 用者模式驅動程式303之内,可能造成寫入一些常數字至 命令緩衝區之内,而不是跨越一些功能呼叫界限才能達成 相同的結果的目標碼。應用程式135的中間語言形式仍會— 是硬體獨立的,因為使用者模式驅動程式303是特別針對 用戶端上的圖形硬體所設計的。而且,所有的管理程式碼 都可能如以上圖1所描述,傳送至某個網路上的系統。 當產生.所有三個組件(也就是應用程式135、執行時間302 和使用者:模式驅動程式303 )的管理程式碼,應達到最佳潛 在效能改。良時,一系統可以應使應用程式135和執行時間-302受到管理,並與個別使用者模式驅動程式303互動,或 甚至只有應用程式135受到管理,並與個別執行時間302和 使用者模式驅動程式303互動。事實上,假使中間語言和 執行時間302及/或使用者模式驅動程式303的使用者模式 DLL形式兩者都存在的話,這類子系統可以和平共存。 該系統冬13"受益於最近繫結的管理程式碼,如以上所描 述:如果執行時間302受到管理,JIT可以執行最佳化,例 如像在執行時間檢查參數驗證。在圖4的系統中,由JIT產-生的統一物件程式碼,將標準命令緩衝區資料寫入可DMA 的記憶體之内,最後會送至硬體。在圖5的系統中,由ΉΤ -25- 1276998 發明說明續頁 (21) 產生的目標碼將會送出資料至由核心模式驅動程式405 一分 析和轉換的中間緩衝區之内。下面的區段更詳盡地描述本 發明管理程式碼觀點的系統和其優點。 管理程式碼 傳統軟體部署的機制,已需要寫原始程式碼,為特定類 型的電腦編譯原始程式碼為可執行的形式,並在用戶端電 腦上安裝可執行的程式碼,如此它才可以執行。另一種用 於.NET基礎結構的方法,將額外步驟力π入這個流程。詨原-始程式碼轉換為可安裝在用戶端電腦上一種現有相容的 中間形式。然後用戶端電腦使用JIT (「及時」)編譯器,將 中間程式碼轉換成本機可執行「管理」程式碼,因此它可 以執行。這個方式有一些優點。一優點是,中間程式碼是 平台獨立:;由於可執行程式碼的轉換在用戶端上發生,知 道該如何2編譯中間程式碼的任何用戶端,都可以執行應用-程式。一相關的優點是,當撰寫程式碼的時候,平台獨立 中間程式碼可以傳送至不存在的平台,並且在該平台上執 行。 但是,就本發明而言,JIT編譯的最重要的優點是:當管 理程式碼正產生的時候,JIT編譯器有目標電腦的精確性 質的先驗_知_識(也就是,JIT編譯器正在其上執行的用戶端) 。如果用戶端電腦有一特定類型的微處理器,JIT編譯器 可以送出該特定微處理器所熟悉’的程式碼。例如,Pentium Pro微處理器把有條件的移動指令加入x86指令集,而且 Pentium 3微處理器增加了預先擷取功能,以及在它之前舊 -26- (22) 1276998 發明說明續頁 版處理為上無法使用的其他快取管理指令。要支援傳統部 署軟體中這些微處理器特定的指令,需要開發人員撰寫使 用所有不同特性的原始程式碼,然後撰寫偵測軟體,猜測 出程式碼碰巧要執行的用戶端所執行的程式碼路徑。JIT 步驟使開發人員不需執行這項任務,甚至協助開發人員對 杬未來的改革。換句話說,包括將會對設計者應用程式有 益的新指令的電腦,可以包括知道該如何送出該指令的 JI丁編譯器;即使當該應用程式在發展時它還不存在,—應_ 用私式仍將k新的指令獲益。線上驅動程式模型的支持者 表示,效能優越是合併API實作至驅動程式之内的主要動 機。14個合併有許多不受歡迎的副作用,主要因為無法釋 放後續的執行時間,以便在執行時間的釋放之前,於驅動 程式的最上方加Λ API原則的特性、效能改良或變更。 DIRECTX的'歷史上有很多的前例,著重在使用驅動程式安 裝基礎的ΑΠ改良之運用。這些AP][改良可以從簡單易用的 圖示方法,例如像使用前DIRECTX 5.0驅動程式的dIrectx 5.〇
DrawPrimitive API;效能進步,例如像使用前direcTX 6.0驅動程 式的DIRECTX 6.0幾何管線;和API層級原則變更,例如像使 用前DIRECTX 6.0驅動程式的DIRECTX 6.0質材管理員。如果有 問題的驅j力—程式是線上驅動程式,這些類型的改良將很難 或無法傳送。 正如JIT編譯器有微處理器類型的先驗知識在,用戶端,〜 它也有用戶端精確硬體配置的先驗知識。特別是,它有用 戶端的圖形處理器和相關驅動程式類型的知識。例如,在 -27· 1276998 發明說明續頁 (23) JIT時,系統知道圖形驅動程式(DIRECTX 6·0、DIRECTX 7.0等) 的有效版本,因此,如果應用程式和驅動程式受到管理, JIT編譯器可以送出針對該驅動程式版本調整的可執行檔 。圖6描述這類系統。 應用程式135和執行時間302兩者都以例如像MICROSOF丁的 CLRT的中間語言形式(IL)所接收。JIT編譯器602採用應用程 式IL 135和執行時間IL 302,並合併他們至單一編譯的管理 應用程式604,該應用程式將會與上述的磁碟/光碟機303和-硬體306通訊。 圖6中描述以JIT為基礎的方式,可達成許多最佳化,包 括: --.由於在編譯時DDI類型為已知的,因此支援不同 的DDI,將會是更有效率的。這排除大量的狀況碼。 -- 如果在JIT時狀況為已知的,則可以排除狀況碼一-例如,保証有效的參數就可排除參數驗證。 -- 可以内嵌瑣碎的執行時間函數,以便在函數呼叫 時,啟動指令排程。 -- 可以特定主機處理器類型的可執行程式碼(同時 内嵌和在執行時間實作中)為目標。當微處理器代理 商修丨立_指令集增加速率時,處理器特定最佳化的重要 4生會增加。 一 這個架構的效能可以利用以中間語言(IL)為基礎的驅動.程-式,有進一步的改良。 圖7提供管理程式碼系統的交互具體實施例。在這裡, -28- (24)1276998 I構將啟動已 直接寫入命令 潛在利益包括 面的工作,並 式的正確性。 均以IL形式遞 式 604。 從過往經驗 其中執行時間 標記資料流。 就是,資料流 心模式,並將 動程式將:會剖 令,且通常將 用。 回頭參見圖 小的尺寸,只 DMA操作以使 。就圖4而言 述,應用,_式 近繫結的管理 會在編譯時知 否實作轉換和 的時候,它可 發明說明磧頁 編譯的應用程式135,以便將硬體特定命令 緩衝區或FIFO内。除了效能含意之外,其他 :減少IHV傳送跨平臺驅動程式所需工程方 具有較佳的啟動驗證用工具,以確保驅動程 應用程式135、執行時間302和驅動程式3〇3, 送到JIT 602。JIT 602將他們轉換為管理應用程 來看,DIRECTX已實作分層驅動程式模型,_ 將圖形和圖式命令轉換為簡化、硬體獨立的 當DIRECTX執行時間判斷需要清除的時候(也 的命令必須由硬體執行),它將會轉換為核 命令資料流傳遞至圖形驅動程式。然後,驅 析命令資料流,並將它轉換成硬體特定的命 那些命令寫記憶體緩衝區之内,以供硬體使 4以及圖6和7,核心模式驅動程式405將有最 夠實作足夠的程式碼,以初始化硬體、啟始 用已組成的命令緩衝區,並設定和控制中斷 ’實作本發明的方式有兩種。首先,如上所 135和執行時間302可能由JIT 602編譯,以致最 程式碼與驅動程式DLL 303互動。然後JIT 602 道驅動程式DLL 303的精確特性(例如,它是一 照明加速),和當為用戶端電腦產生目標碼 以利用該知識。 -29- 1276998 _ (25) 發明說明續頁 第二,圖4中實作本發明的「管理驅動程式」變數,將f 要承擔JIT 602所編譯的應用程式135、執行時間302和驅動程 式DLL 303,以致於統一的可執行程式碼從API執行轉換, 並將硬體特定的命令寫入DMA記憶體410。這個架構將分層 驅動程式模型的彈性和其他優點,結合上線上驅動程式模 型特定硬體所得到的效率。因此,這個「管理驅動程式模 型」與其他驅動程式架構相較,具有較大的潛力。 如上所述,已結合各種不同計算裝置和網路架構,來說-明本發明的範例具體實施例,基礎觀念可套用到任何計算 裝置或系統,其中希望能夠管理應用程式和驅動程式。因 此,根據本發明管理應用程式的技術,可套用到多種應用 程式和裝置。例如,本發明的優點可套用到計算裝置的圖 形系統,:例如裝置上的個別物件、另一物件的一部份、來 自伺服器啲可下載物件、裝置或物件和網路等之間的「中, 間者」。所產生的管理應用程式可加以儲存以供稍後使用 ,或輸出給其他獨立、附屬或相關的流程或服務。在此處 ,所選擇的範例程式語言、名稱和範例係作為各種不同選 項的代表,並不是要限制這些語言、名稱和範例。 此處描述的各種技術,可與硬體或軟體,或視需要與兩 者的組合_共_同實作。因此,本發明的方法和裝置,或某觀 點或上述部份,可採用在實體媒體中具體化的程式碼(也 就是,指令)的形式,例如像軟碟片、光碟、硬式磁碟機-或任何其他機器可讀取的儲存媒體,其中,當程式碼由機 器載入而且執行的時候,例如像電腦,該機器變成實行本 -30- 1276998 _ (26) I發明說明續頁
發明的一種裝置。假使程式碼在可程式的電腦上執行,該 計算裝置通常將包括一處理器,以及處理器可讀取的儲存 媒體(包括非永久性和永久性記憶體及/或儲存元件),至 少一輸入裝置,和至少一輸出裝置。可利用本發明的邊界 探索技術的一或多個程式,例如,透過資料處理ΑΠ或類 似事物的使用,較好以一高階程序或物件導向程式語言實 作,以便與電腦系統通訊。但是,程式可以組合語言或機 器語言實作,如果需要的話。無論如何,語言可以是一—編 譯或解譯語言,並可與硬體實作結合。
本發明的方法和裝置,也可經由通訊,該通訊透過傳輸 媒體傳輸的程式碼形式具體化,例如像透過電線或接線、 透過光纖、或經由傳輸的任何其他形式,其中,當程式碼 由機器接:收、載入並執行的時候,例如像EPROM、閘陣列 、可程式的邏輯裝置(PLD)、用戶端電腦、錄影機或類似事-物,或一接收機器,具有如上範例具體實施例所描述的驅 動程式技術,則變成實行本發明的一種裝置。當在一般用 途處理器上實作時,程式碼與處理器結合,提供一種可叫 用本發明功能的獨特裝置。此外,用於與本發明結合的任 何儲存技術,一定都是硬體和軟體的組合。 雖然已_結_合各圖式的較佳具體實施例來描述本發明,但 應了解也可使用其他類似的具體實施例,或對上述具體實 施例修改及增減,以執行本發明的相同功能,而仍不脫離一 其範疇。例如,當就網路環境的觀點來描述本發明範例網 路環境的時候,例如像對等網路環境,本行業的專家將發 -31 - 1276998 _ ^27) 發明說明續頁 現本發明不限於該環境,且本應用中所描述的方法,可I 用至任何計算裝置或環境,例如像遊戲主控台、掌上型電 腦、可攜式電腦及其他,不論是有線或無線均可,並可套 用到任何數量的這類經由通訊網路連接的計算裝置,並透 過網路互動。 此外,應強調多種電腦平台,包括手提裝置作業系統, 並思考其他應用特定的作業系統,尤其是無線網路裝置的 數量持續地在增加。並且,本發明可在或跨複數個處理-晶 片或裝置來實作,而且同樣也可以在複數個裝置上進行儲 存。因此,本發明不應該侷限於任何單一的具體實施例, 而是應根據附加的申請專利範圍的範®壽來加以解釋。 圖式簡單說明: 管理程:式碼的系統和方法,另參考隨附的圖式加以描述: 圖1是表示一範例網路環境的方媿圖,具有其中可實作-本發明的多種計算裝置; 圖2是表示一可實作本發明的範例非極限計算裝置的方 塊圖; 圖3A和3B說明各種不同計算系統的不同驅動程式模型; 圖4是電腦系統的方塊圖,具有根據本發明觀點的使用 者模式驅_動-程式DLL架構; 圖5說明當應用程式在範例圖形應用程式中產生API呼 叫時所發生的事件序列; 一 圖6根據本發明的觀點,說明應用程式和執行時間經過 JIT編譯的應用;以及 -32- 1276998 發明說明續頁 (28) 圖7根據本發明的觀點,說明應用程式、驅動程式和執 行時間經過JIT編譯的應用。 圖式代表符號說明: 10a, 10b 飼 服 器 物 件 14 通 訊 網 路 /匯 .流排 20 資 料 庫 100 計 算 系 統 環 境 110 物 件 110a 計 算 裝 置 110b 計 算 裝 置 110c 物 件 llOd 物 件 llOe 計 算 裝 置 120 處 理 單 元 121 系 統 匯 流 排 130 系 統 記 憶 體 131 唯 讀 記 憶 體 (ROM) 132 隨 機 存 取 記 憶體(RAM) 133 基 本 輸 出 入 系統 134 作 業 系 統 135 應 用 程 式 135a,135b,135c,135d, 135e 應 用 程 式 136 其 他 程 式 模 組 137 程 式 資 料
-33- (29) 發明說明續頁 非可抽換式、永久性記憶體介面 硬碟機 作業系統 應用程式 其他程式模組 程式資料
可抽換式、永久性記憶體介面 磁性磁碟機 - 可抽換式、永久性磁性磁碟 光碟機 可抽換式、永久性光碟 使用者輸入介面 指標裝置 鍵盤 介面或轉接器 區域網路(LAN)
數據機 區域網路(WAN) 遠端電腦 記憶體儲存裝置 圖形介面 處理單元(圖形處理器) 遠端應用程式 視訊記憶體 -34-
發明說明續頁 視訊介面 顯示器 輸出週邊介面 印表機 制ρ八
執行時間 驅動程式 執行時間/磁碟機 驅動程式DLL 硬體 命令緩衝區排程器 核心棱式驅動程式 DMA記憶體 接收 執行中 初始化
建立並且初始化裝置 圖示呼叫 驗證 檢查 轉換為DDI呼叫 轉換為硬體命令 檢查是否清除 系統核心支援 •35- (31) 發明說明續頁 是否可以建立新的命令緩衝區? 建立新的命令緩衝區 初始化新的命令緩衝區 執行緒取得初始化的命令緩衝區 命令緩衝區加入至等候7[宁列 檢查是否可送出命令緩衝區 釋放資源 標TF為備安 - 釋放資源 備妥仔列 選取要調度的備妥CB 告知用戶端先選取 内容切換 調度命令緩衝區 中斷服務常式 儲存内容步驟 硬體讀取和執行命令緩衝區 是否先取得? 命令緩衝區正常完成 JIT編譯器 已編譯的管理應用程式 -36-
Claims (1)
1276998 拾、申請專利範圍 1. 一種電腦系統,包括: 一處理器; 一作業系統,具有一與一計算組件互動的選取驅動 程式; 複數個應用程式指令,該等指令具有中間語言編譯 器可讀取的中間語言形式;以及 複數個執行時間指令,該等指令具有中間語言I譯 器可讀取的中間語言形式; 一中間語言編譯器,其中該中間語言編譯器可將應 用程式指令和執行時間指令,編譯為處理器可執行的 指令,以便與選取的驅動程式互動。 2. 如申請專利範圍第1項之電腦系統’其中該選取的驅動 程式包含複數個中間語言指令。 3. 如申請專利範圍第2項之電腦系統,其中該選取的驅動 程式分為使用者模式和核心模式指令。 4. 如申請專利範圍第3項之電腦系統,其中該選取驅動程 式的使用者模式指令,從裝置驅動程式介面指令轉換 為硬體特定命令。 5. 如申請_專利範圍弟4項之電腦系統^其中該選取的驅動 程式,將硬體特定命令寫入作業系統分配的緩衝區, 以送至硬體時間的排程器。 6. 如申請專利範圍第1項之電腦系統,其中該等複數個應 用程式指令和複數個執行時間指令,透過網路遞送到 1276998 _ 申請專利範圍續頁 該電腦系統。 7. 如申請專利範圍第2項之電腦系統,其中該選取的驅動 程式係透過網路遞送。 8. 如申請專利範圍第1項之電腦系統,其中該編譯器包含 一及時編譯器。 9. 一種與硬體進行軟體互動的方法,包含: 提供一具有中間程式語言形式的應用程式: 提供一具有中間程式語言形式的執行時間程式; 將該應用程式和執行時間程式編譯成單一可執行的 程式,以便在目標電腦系統上執行。 10. 如申請專利範圍第9項之方法,進一步包含提供一具有 中間程式語言形式的驅動程式,其中該驅動程式與該 應用程式和執行時間程式一起編譯為單一可執行的程 式。 11. 如申請專利範圍第10項之方法,其中該驅動程式包含 以可執行形式提供的核心模式部份。 12. 如申請專利範圍第11項之方法,其中該驅動程式包含 以中間語言形式提供的使用者模式部份。 13. 如申請專利範圍第12項之方法,其中該使用者模式部 份從裝置驅動程式介面指令轉換為硬體特定命令。 14. 如申請專利範圍第10項之方法,其中該驅動程式將硬 體特定命令寫入作業系統分配的緩衝區,以送至硬體一 時間的排程器。 15.如申請專利範圍第9項之方法,其中該應用程式和執行 1276998 _ 申請專利範圍續頁 時間程式,係透過網路遞送到目標電腦系統。 16. 如申請專利範圍第10項之方法,其中該驅動程式係透 過網路遞送。 17. 如申請專利範圍第9項之方法,其中該編譯器包含一及 時編澤為·。 18. —種電腦可讀式媒體,具有用於與硬體進行軟體互動 的電腦可執行指令,包含: 用於接收具有中間程式語言形式的應用程式的指令: 用於接收具有中間程式語言形式的執行時間程式的 指令; 用於將應用程式和執行時間程式編譯成單一可執行 的程式,以便在目標電腦系統上執行的指令。 19. 如申請專利範圍第18項之電腦可讀式媒體,進一步包 含用於接收具有中間程式語言形式的驅動程式的指令 ,其中該驅動程式與該應用程式和執行時間程式一起 編譯為單一可執行的程式。 20. 如申請專利範圍第19項之電腦可讀式媒體,其中該驅 動程式包含以可執行形式提供的核心模式部份,其中 接收到的指令包含使用者模式指令。 21. 如申請專利範圍第20項之電腦可讀式媒體,其中該使 用者模式指令包含中間語言指令。 22. 如申請專利範圍第21項之電腦可讀式媒體,其中該使一 用者模式指令從裝置驅動程式介面指令轉換為硬體特 定命令。 1276998 t#:專利範国讀頁 23. 如申請專利範圍第22項之電腦可讀式媒體,其中該驅 動程式將硬體特定命令寫入作業系統分配的緩衝區, 以送至該硬體時間的排程器。 24. 如申請專利範圍第18項之電腦可讀式媒體,其中該應 用程式和執行時間程式透過網路遞送到目標電腦系統 〇 25. 如申請專利範圍第19項之電腦可讀式媒體,其中該驅 動程式係透過網路遞送。 26. 如申請專利範圍第18項之電腦可讀式媒體,其中該編 譯器包含及時編譯器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/039,035 US7600222B2 (en) | 2002-01-04 | 2002-01-04 | Systems and methods for managing drivers in a computing system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200305823A TW200305823A (en) | 2003-11-01 |
TWI276998B true TWI276998B (en) | 2007-03-21 |
Family
ID=21903307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW091137490A TWI276998B (en) | 2002-01-04 | 2002-12-26 | Systems and methods for managing drivers in a computing system |
Country Status (10)
Country | Link |
---|---|
US (1) | US7600222B2 (zh) |
EP (1) | EP1326166A3 (zh) |
JP (1) | JP2003263326A (zh) |
CN (1) | CN100555223C (zh) |
AR (1) | AR039369A1 (zh) |
BR (1) | BR0300078A (zh) |
CA (1) | CA2415485A1 (zh) |
MX (1) | MXPA03000095A (zh) |
RU (1) | RU2304305C2 (zh) |
TW (1) | TWI276998B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI419005B (zh) * | 2007-08-02 | 2013-12-11 | Planty Net Co Ltd | 驗證應用程式及控制其執行的方法 |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6809736B1 (en) * | 2002-01-08 | 2004-10-26 | Apple Computer, Inc. | Virtualization of graphics resources |
US7015919B1 (en) * | 2002-01-08 | 2006-03-21 | Apple Computer, Inc. | Virtualization of graphics resources |
US7768522B2 (en) | 2002-01-08 | 2010-08-03 | Apple Inc. | Virtualization of graphics resources and thread blocking |
US6809735B1 (en) * | 2002-01-08 | 2004-10-26 | Apple Computer, Inc. | Virtualization of graphics resources |
US20080313282A1 (en) | 2002-09-10 | 2008-12-18 | Warila Bruce W | User interface, operating system and architecture |
GB0229669D0 (en) * | 2002-12-19 | 2003-01-29 | Ibm | A method for capturing computer application diagnostics |
US7707566B2 (en) * | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US7685581B2 (en) * | 2003-06-27 | 2010-03-23 | Microsoft Corporation | Type system for representing and checking consistency of heterogeneous program components during the process of compilation |
US7086041B2 (en) * | 2003-06-27 | 2006-08-01 | Microsoft Corporation | Extensible type system for representing and checking consistency of program components during the process of compilation |
US7559050B2 (en) * | 2003-06-30 | 2009-07-07 | Microsoft Corporation | Generating software development tools via target architecture specification |
US7788652B2 (en) * | 2003-06-27 | 2010-08-31 | Microsoft Corporation | Representing type information in a compiler and programming tools framework |
US8285881B2 (en) * | 2003-09-10 | 2012-10-09 | Broadcom Corporation | System and method for load balancing and fail over |
US8417834B2 (en) * | 2003-09-10 | 2013-04-09 | Broadcom Corporation | Unified infrastructure over ethernet |
US8704837B2 (en) * | 2004-04-16 | 2014-04-22 | Apple Inc. | High-level program interface for graphics operations |
US8134561B2 (en) | 2004-04-16 | 2012-03-13 | Apple Inc. | System for optimizing graphics operations |
US8024722B2 (en) * | 2004-08-12 | 2011-09-20 | Trek 2000 International Ltd | Method and system for automatic installation of a functional unit driver on a host |
US8443348B2 (en) | 2006-06-20 | 2013-05-14 | Google Inc. | Application program interface of a parallel-processing computer system that supports multiple programming languages |
US7814486B2 (en) * | 2006-06-20 | 2010-10-12 | Google Inc. | Multi-thread runtime system |
US8024708B2 (en) * | 2006-06-20 | 2011-09-20 | Google Inc. | Systems and methods for debugging an application running on a parallel-processing computer system |
US8261270B2 (en) * | 2006-06-20 | 2012-09-04 | Google Inc. | Systems and methods for generating reference results using a parallel-processing computer system |
US8375368B2 (en) | 2006-06-20 | 2013-02-12 | Google Inc. | Systems and methods for profiling an application running on a parallel-processing computer system |
US8146066B2 (en) * | 2006-06-20 | 2012-03-27 | Google Inc. | Systems and methods for caching compute kernels for an application running on a parallel-processing computer system |
US8136104B2 (en) | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for determining compute kernels for an application in a parallel-processing computer system |
US8136102B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
US8381202B2 (en) * | 2006-06-20 | 2013-02-19 | Google Inc. | Runtime system for executing an application in a parallel-processing computer system |
US8108844B2 (en) * | 2006-06-20 | 2012-01-31 | Google Inc. | Systems and methods for dynamically choosing a processing element for a compute kernel |
US20080126625A1 (en) * | 2006-07-17 | 2008-05-29 | International Business Machines Corporation | Just-in-time buffer allocation for use in event completion style input/output models |
US7506218B2 (en) * | 2006-08-18 | 2009-03-17 | International Business Machines Corporation | Timeout request scheduling using grouping and nonsynchronized processing to enhance performance |
US20080201695A1 (en) * | 2007-02-16 | 2008-08-21 | Qing Zhou | Computer graphics rendering |
US8166492B2 (en) * | 2007-04-10 | 2012-04-24 | Microsoft Corporation | Application compatibility using a hybrid environment |
US7992137B2 (en) * | 2007-07-30 | 2011-08-02 | Nvidia Corporation | Client server system for analysis and performance tuning of remote graphics devices |
CN101382894B (zh) * | 2007-09-05 | 2013-09-04 | 北京软通科技有限责任公司 | 下载计算机硬件设备驱动程序的方法、装置及系统 |
US8209673B1 (en) * | 2007-09-25 | 2012-06-26 | Nvidia Corporation | SLI approval policy database |
US8146099B2 (en) * | 2007-09-27 | 2012-03-27 | Microsoft Corporation | Service-oriented pipeline based architecture |
JP5427187B2 (ja) * | 2007-12-13 | 2014-02-26 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 複数のグラフィックサブシステムおよび低電力消費モードを有するコンピューティングデバイス用ドライバアーキテクチャ、ソフトウェアおよび方法 |
US8176499B2 (en) * | 2008-05-30 | 2012-05-08 | Microsoft Corporation | Defining, distributing and presenting device experiences |
KR100962704B1 (ko) * | 2008-07-02 | 2010-06-11 | 유상규 | 일측 단말의 제어로 타 단말의 주변장치를 이용하는 단말장치 및 그 인터페이스 방법 |
US20110063306A1 (en) * | 2009-09-16 | 2011-03-17 | Nvidia Corporation | CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE |
TWI391824B (zh) * | 2009-12-18 | 2013-04-01 | Feeling Technology Corp | Drive the connection system |
US9830889B2 (en) | 2009-12-31 | 2017-11-28 | Nvidia Corporation | Methods and system for artifically and dynamically limiting the display resolution of an application |
US20110209128A1 (en) * | 2010-02-24 | 2011-08-25 | Nokia Corporation | Systems, methods and apparatuses for facilitating targeted compilation of source code |
US9098548B1 (en) * | 2010-06-14 | 2015-08-04 | Open Invention Network, Llc | Method and apparatus for accessing a data source from a client using a driver |
US8762972B2 (en) * | 2011-02-08 | 2014-06-24 | Nokia Corporation | Methods and apparatuses for facilitating execution of applications requiring runtime compilation |
US8683428B2 (en) * | 2011-03-23 | 2014-03-25 | Microsoft Corporation | Automated generation of client/driver communication interfaces |
CN103491121B (zh) * | 2012-06-13 | 2017-11-28 | 中兴通讯股份有限公司 | 一种支持双ip业务的ndis驱动方法和驱动系统 |
US10324952B1 (en) * | 2013-03-04 | 2019-06-18 | Google Llc | Hosted database |
US9792663B2 (en) | 2014-12-15 | 2017-10-17 | Microsoft Technology Licensing, Llc | User-defined command buffer formats supporting data-parallel translation |
CN107273101A (zh) * | 2016-04-06 | 2017-10-20 | 晨星半导体股份有限公司 | 嵌入式系统的操作方法与控制芯片 |
US10198259B2 (en) * | 2016-06-23 | 2019-02-05 | Advanced Micro Devices, Inc. | System and method for scheduling instructions in a multithread SIMD architecture with a fixed number of registers |
US9904527B1 (en) * | 2016-08-12 | 2018-02-27 | Amazon Technologies, Inc. | Optimizing API implementer programs using fine-grained code analysis |
US10289394B2 (en) * | 2016-10-11 | 2019-05-14 | Oracle International Corporation | Selective generation of multiple versions of machine code for source code functions for execution on different processor versions and/or architectures |
US10795989B2 (en) * | 2017-03-05 | 2020-10-06 | Fortinet, Inc. | Secure just-in-time (JIT) code generation |
US10108442B1 (en) | 2017-09-18 | 2018-10-23 | International Business Machines Corporation | Optimization and affinity for hypervisor-based just-in-time translator |
TWI739284B (zh) * | 2020-01-20 | 2021-09-11 | 精品科技股份有限公司 | 控制台程式的控制管理方法及系統 |
CN111290351A (zh) * | 2020-01-21 | 2020-06-16 | 深圳市雷赛软件技术有限公司 | 一种驱动器管理方法、系统、计算机设备及存储介质 |
CN113741856A (zh) * | 2021-07-27 | 2021-12-03 | 深圳市广通远驰科技有限公司 | 驱动绑定方法、装置、电子设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212574B1 (en) * | 1997-04-04 | 2001-04-03 | Microsoft Corporation | User mode proxy of kernel mode operations in a computer operating system |
US6148438A (en) * | 1998-01-06 | 2000-11-14 | National Instruments Corporation | System and method for creating composite classes for objects having virtual functions for avoidance of user mode/kernel mode transitions |
US6618767B1 (en) | 1998-11-17 | 2003-09-09 | Sun Microsystems, Inc. | Mechanism by which devices on unforeseen platform variants may be supported without re-release of core platform kernel software |
US6871350B2 (en) * | 1998-12-15 | 2005-03-22 | Microsoft Corporation | User mode device driver interface for translating source code from the user mode device driver to be executed in the kernel mode or user mode |
US6594761B1 (en) * | 1999-06-09 | 2003-07-15 | Cloakware Corporation | Tamper resistant software encoding |
US6615167B1 (en) * | 2000-01-31 | 2003-09-02 | International Business Machines Corporation | Processor-independent system-on-chip verification for embedded processor systems |
US6769115B1 (en) * | 2000-05-01 | 2004-07-27 | Emc Corporation | Adaptive interface for a software development environment |
EP1168168A3 (en) * | 2000-06-20 | 2005-04-13 | Interuniversitair Microelektronica Centrum Vzw | Virtual hardware machine methods and devices |
-
2002
- 2002-01-04 US US10/039,035 patent/US7600222B2/en not_active Expired - Fee Related
- 2002-12-20 EP EP02028654A patent/EP1326166A3/en not_active Ceased
- 2002-12-26 TW TW091137490A patent/TWI276998B/zh not_active IP Right Cessation
- 2002-12-30 RU RU2002135793/09A patent/RU2304305C2/ru not_active IP Right Cessation
- 2002-12-31 CA CA002415485A patent/CA2415485A1/en not_active Abandoned
-
2003
- 2003-01-02 AR ARP030100001A patent/AR039369A1/es not_active Application Discontinuation
- 2003-01-03 BR BR0300078-8A patent/BR0300078A/pt not_active IP Right Cessation
- 2003-01-06 JP JP2003000688A patent/JP2003263326A/ja active Pending
- 2003-01-06 CN CNB031009514A patent/CN100555223C/zh not_active Expired - Fee Related
- 2003-01-07 MX MXPA03000095A patent/MXPA03000095A/es not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI419005B (zh) * | 2007-08-02 | 2013-12-11 | Planty Net Co Ltd | 驗證應用程式及控制其執行的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100555223C (zh) | 2009-10-28 |
RU2304305C2 (ru) | 2007-08-10 |
BR0300078A (pt) | 2003-09-02 |
CN1432913A (zh) | 2003-07-30 |
US7600222B2 (en) | 2009-10-06 |
TW200305823A (en) | 2003-11-01 |
EP1326166A3 (en) | 2003-11-05 |
CA2415485A1 (en) | 2003-07-04 |
AR039369A1 (es) | 2005-02-16 |
EP1326166A2 (en) | 2003-07-09 |
US20030131147A1 (en) | 2003-07-10 |
MXPA03000095A (es) | 2004-12-07 |
JP2003263326A (ja) | 2003-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI276998B (en) | Systems and methods for managing drivers in a computing system | |
US6138140A (en) | Data processing method and device | |
US7133933B2 (en) | Content synchronization frameworks using dynamic attributes and file bundles for connected devices | |
CN1249601C (zh) | 用于远程web服务克隆和实例化的系统和方法 | |
US6714968B1 (en) | Method and system for seamless access to a remote storage server utilizing multiple access interfaces executing on the remote server | |
US9454616B2 (en) | Method and system for unifying configuration descriptors | |
EP1174793A2 (en) | System and method providing multi-tier applications architecture | |
US7673028B2 (en) | Method and system for container-managed configuration and administration | |
US20100077070A1 (en) | Method and system for directly mapping web services interfaces and java interfaces | |
CN1552029A (zh) | 用于异步Web服务的Web服务开发平台 | |
WO2002033545A2 (en) | Pluggable instantiable distributed objects | |
EP2791787B1 (en) | Autonomous network streaming | |
US20080288955A1 (en) | Method and System for Managing Preferences in a Client Portlet Container | |
US7975255B2 (en) | Method, apparatus, and program product for building integration workflow endpoints into web components | |
WO2007088100A1 (en) | Computer-implemented method, system, and program product for optimizing a distributed application | |
EP1378822A1 (en) | Data processing system and data processing method, information processing device and information processing method, and storage medium | |
CN102420873A (zh) | 复合网络全新云应用平台 | |
JPH0991143A (ja) | データ処理方法および装置 | |
US20070061277A1 (en) | Method, system, and storage medium for providing dynamic deployment of grid services over a computer network | |
WO2006111209A1 (en) | Process and system for sharing program fragments | |
US20070006121A1 (en) | Development activity recipe | |
Balderrama et al. | jGASW: a service-oriented framework supporting HTC and non-functional concerns | |
GB2483226A (en) | Compound network application platform | |
CN110520842B (zh) | 针对传统应用兼容性的地址空间拆分系统及方法 | |
US20090328029A1 (en) | Software portal system for providing relation information of software and data format and method of operating the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |