CN1432913A - 在计算系统中管理驱动器的系统和方法 - Google Patents

在计算系统中管理驱动器的系统和方法 Download PDF

Info

Publication number
CN1432913A
CN1432913A CN03100951.4A CN03100951A CN1432913A CN 1432913 A CN1432913 A CN 1432913A CN 03100951 A CN03100951 A CN 03100951A CN 1432913 A CN1432913 A CN 1432913A
Authority
CN
China
Prior art keywords
driver
instruction
program
application program
computer system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN03100951.4A
Other languages
English (en)
Other versions
CN100555223C (zh
Inventor
N·P·威尔特
J·米勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1432913A publication Critical patent/CN1432913A/zh
Application granted granted Critical
Publication of CN100555223C publication Critical patent/CN100555223C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Abstract

一种在计算系统中管理驱动器的系统和方法,其中包括应用程序、运行时间和驱动器的管理代码具有关于客户实际硬件配置的先验信息,就像JIT编译器具有关于目标计算机系统微处理器类型的先验信息。在编译时间,编译器知道有效版本的不同系统驱动器,这样编译器可发送特定驱动器版本和目标系统的可执行调节。

Description

在计算系统中管理驱动器的系统和方法
技术领域
本发明设计在计算系统中管理驱动器的系统和方法。
背景技术
在计算机系统的设计环境中,驱动器是使操作系统具有硬件能力的软件部分,这样操作系统就使应用程序具有那些能力。通常操作系统通过设备驱动器接口(“DDI”)与驱动器交互动作,DDI是特别定义的一种协议,它使操作系统能够加载驱动器、查询硬件提供的能力以及使那些能力可供应用程序使用。
由操作系统提供给应用程序的软件接口称作为应用程序接口(“API”)。由操作系统提供的API提供应用程序可以或可以不近似基础硬件的特性的软件抽象。显著背离基础硬件的例子就是为海量存储器提供的目录/文件的软件抽象。另一个不类似基础硬件的软件抽象就是虚拟存储器,它使应用程序能够透明地使用本地硬盘存储器,好像它是随机存取存储器。
当API使硬件资源可使用时,操作系统通过DDI调用驱动器利用该资源。由于由API提供的软件抽象和基础硬件之间的差别,从API调用新译为DDI调用就必需大量的逻辑和代码。在该规范的环境中,应用层的API和驱动器层的DDI之间的软件合称为“运行时间”。
通常将应用程序、驱动器等用诸如C的高级语言描述。这样的语言通常主要通过编译为本机代码来实现。在该情况下,驱动器与应用程序以及在系统上操作的其它程序分别写入。随后或在安装过程中,或执行应用程序时动态(如DLL)把应用程序和驱动器连接起来。该系统的优点就是可把编译器设计为优化用于特定类处理器(如X86)的代码。然而,编译器不能优化用于特定微处理器(如PENTIUMIV对PENTIUM III)的代码。此外编译器无法优化用于其它系统参数(包括驱动器版本以及其他硬件部分)的代码,并且不考虑目标系统的特别系统的限制。而是,应用程序或运行时间层系统必须使用计算上昂贵的逻辑以确定这样的参数和处理器的约束,以使可编译程序在整类计算机系统上执行。
另一普通编程范例就是在运行时间层上编译代码。运行时执行(JIT)编译器是该系统的例子。其它在运行时间编译的系统包括连续编译系统,它在解释状态中立即开始执行,但随时间编译代码并持续优化编译。有了运行时执行编译器,当把类加载入虚拟机中时,就用指向JIT编译器的指针替代虚拟方法表中的方法指针。随后,每个方法第一次调用时,调用JIT编译器编译该方法。随后虚拟方法表中的指针修正为指向该方法本机代码形式,这样将来对该方法的调用会跳向本机代码。这些JIT编译器系统具有用中间语言(如JAVA字节码、CLRT指令等)向目标机发送代码的优点。将编译器设计为把IL转换为可由本机处理器执行的指令。结果,可把相同的IL指令发送到具有不同本机处理器的计算机并仍然在目标处理器上执行。
虽然这样的中间语言编译器在目标计算机系统上编译中间语言指令,但是它们也无法优化用于特定目标计算机系统的代码,包括考虑驱动器版本以及其他硬件部分。
发明内容
鉴于以上所述,本发明提供包括应用程序和运行时间和/或驱动器的管理代码。管理代码由具有目标计算机系统的实际硬件配置先验信息的编译器编译,正如JIT编译器具有关于客户机微处理器类型的先验信息。在编译时间,已知各种硬件驱动器的系统有效版本,因此如果应用程序和驱动器是可管理的,那么编译器可发送对于特定驱动器版本的可执行调节。
因此,本发明包括管理代码以编译为具有所选处理器的操作系统以及与计算部分交互的驱动器配置的代码的系统和方法。系统包括多个以由中间语言编译器可读的中间语言接收的应用指令以及多个也以由中间语言编译器可读的中间语言接收的运行时间指令。中间语言编译器把应用指令和运行时间指令编译为由处理器可执行的管理代码指令集以与所选驱动器交互。还以中间语言提供驱动器(或部分驱动器)并把它们与应用指令和运行时间指令一起编译为管理代码指令集。
附图说明
参照附图进一步描述用于管理代码的系统和方法,其中:
图1是表示具有各种实现本发明的计算设备示例网络环境的框图;
图2是表示实现本发明的示例非限制计算设备的框图;
图3A和3B说明用于各种计算系统的不同驱动器模型;
图4是根据本发明的一个方面具有用户模式驱动器DLL结构的计算机系统框图;
图5说明当应用程序在示例图形应用程序中作出API调用时发生的事件序列;
图6根据本发明的一个方面说明对应用程序和运行时间JIT编译的应用;
图7根据本发明的一个方面说明对应用程序、驱动器和运行时间JIT编译的应用;
具体实施方式
概述
在线驱动器模型的支持者把性能优势描述为把API实现合并到驱动器中的主要动机。这个合并有许多不期望的副作用,主要是由于运行时间的后续释放不能在预先释放运行时间的驱动器的顶上添加API方法的特征、性能改进和变化。
这里所描述的发明承认管理代码(包括应用程序、运行时间和驱动器)应该具有客户机实际硬件配置的先验信息,正如JIT编译器具有关于客户机的微处理器类型的先验信息。例如,在JIT时间,系统知道图形驱动器(DirectX 6.0、DirectX7.0等)的有效版本,因此如果管理应用程序和驱动器,JIT编译器就可以发出对特定驱动器版本的可执行调节。
示例网络和分布式环境
一个本领域的普通技术人员会明白可以配置计算机或其他客户机或服务器设备作为计算机网络或分布式计算环境中的一部分。在这点上,本发明属于具有任何数量存储器或存储单元以及在任何数量的存储单元或卷中所产生的任何数量的应用和过程的任何计算机系统。本发明应用于具有在带有远程或本地存储器的网络环境或分布式计算环境中配置的服务器计算机以及客户计算机的环境。本发明还应用于独立计算设备,其具有用于产生、接收和发送与服务有关的信息的编程语言操作、解释和执行能力。
分布式计算通过计算设备和系统之间的直接交换便于计算机资源和服务的共享。这些资源和服务包括信息交换、高速缓存和文件的磁盘存储。分布式计算利用网络连接,使得客户机平衡其整体力量使整个企业得利。在这点上,各利设备具有数据集,期望它们可以实现本发明的图像边界定义技术。
图1提供示例网络或分布式计算环境的示意图。分布式计算环境包括计算对象10a、10b等以及计算对象或设备110a、110b、110c等。这些对象可包括程序、方法、数据存储、可编程逻辑等。对象可包括相同或不同设备部分,比如PDA、电视、MP3播放器、电视、个人计算机等。每个对象可通过通信网络14与另一对象进行通信。该网络本身包括为图1系统提供服务的计算对象和计算设备。根据本发明的一个方面,每个对象10或110可包含数据,期望它可实现图像剪切或边界定义。也期望它可把来自对象10或110的图像剪切与另一对象10或110的图像剪切比较。
在分布式计算结构中,通常可单独用作客户机的计算机相互之间直接通信,并且可用作客户机和服务器,假设不管用做什么它们对于网络都是最有效的。这减少了服务器的负荷并允许所有客户机访问可用于其他客户机的资源,由此增加了整个网络的能力和有效性。
分布式计算可以更有效地协助不同地界间的商务传递服务以及能力。此外,分布式计算可以把数据移动到更靠近消耗数据用作为网络高速缓存机构的点。分布式计算还允许计算网络使用智能代理一起动态工作。智能代理位于对等计算机中并来回传送各种信息。智能代理还可代表其它对等系统开始各种任务。例如,智能代理可用于优先化网络上的任务、改变话务流、本地搜索文件或确定诸如病毒的异常行为并在其影响网络之前制止它。也可以考虑所有其它种类的服务。在这样的环境中可实现本发明图像剪切算法。
还可以明白,诸如110c的对象可以由另一计算设备10或110管理。这样,虽然所描述的物理环境把所连接的设备显示为计算机,但这样的说明仅是示例性的,并且可以选择性地描述物理环境,包括不同数字设备(比如PDA、电视、MP3播放器等)、软件对象(接口、COM对象等)。
有不同系统、部件和网络配置支持分布式计算环境。例如,计算系统可通过有线或无线系统、通过本地网络或广域分布式网络连接起来。当前,许多网络连接于因特网,它提供用于广域分布式计算的基础结构并结合了许多不同网络。
因特网通常指的是使用计算机网络领域中熟知的TCP/IP协议套件的网络与网关集合。TCP/IP是“传输控制协议/接口协议”的缩写。因特网可描述为通过计算机执行允许用户交互和共向网络上的信息的网络协议来互相连接的地理上分布式远程计算机网络系统。由于这样广泛的信息共享,诸如因特网的远程网络一般就发展为开放系统,开发商可实质上无限制地对其设计软件应用以实现特别操作或服务。
这样,网络基础结构允许网络拓扑的主机,比如客户机/服务器、对等或混合结构。“客户机”是类和组的成员,它使用与它无关的另一类或组的服务。这样,在计算中客户机是请求由另一程序所提供的服务的处理,粗略说即是指令或任务集。客户机处理使用所请求的服务,而无需“知道”任何有关其它程序和服务本身的工作细节。在客户机/服务器结构中,特别是网络系统中,客户机通常是访问由另一计算机(例如服务器)提供的共享网络资源。在图1的例子中,计算机110a、110b等可被看作客户机,而计算机10a、10b等可被看作服务器,其中服务器10a、10b等保存随后复制到客户计算机110a、110b等的数据。
服务器通常是在诸如因特网的远端网络上可访问的远端计算机系统。客户机处理过程可在第一计算机系统活动,而服务器处理过程可在第二计算机系统活动,它们互相通过通信媒介通信,由此提供分布式功能并允许多个客户机利用服务器的信息收集能力。
客户机和服务器使用由协议层提供的函数互相通信。例如,超文本传输协议(HTTP)是与万维网(WWW)(或简称“Web”)结合使用的公共协议。通常诸如通用资源定位器(URL)或因特网协议(IP)地址的计算机网络地址用于互相识别服务器或客户计算机。网络地址可称为通用资源定位器地址。例如,在通信媒介上可提供通信。尤其客户机和服务器可通过TCP/IP连接相互耦接以进行大容量通信。
这样,图1说明了示例网络和分布式环境,具有通过网络/总线与客户计算机通信的服务器,其中可使用本发明。更详细地,根据本发明,若干服务器10a、10b等通过通信网络/总线14(它可以是LAN、WAN、内部网、因特网等)与若干客户机或远程计算设备110a、110b、110c、110d、110e等(比如便携式计算机、手提式计算机、瘦客户机、网络应用装置或其它设备,比如VCR、TV、电炉、灯、加热器等)相互连接。这样可以预期,本发明可以应用于任何计算设备,可期望对于图像剪切或边界定义服务可传送到与其连接的另一计算设备。
例如,在通信网络/总线14为因特网的网络环境中,服务器可以是Web服务器,客户机110a、110b、110c、110d、110e等通过诸如超文本传输协议(HTTP)的任何若干已知协议与其通信。服务器10也用作客户机110,这就是分布式计算环境的特征。通信根据需要可以是有线的或是无线的。客户设备110可以或可以不通过通信网络/总线14通信,并且可具有与其相联的独立通信能力。例如,在TV或VCR的情况下,它们的控制可以有或可以没有网络化的方面。每个客户计算机110和服务器计算机10可以配备各种应用程序模块或对象135,并且连接于或访问各种类型的存储元件或对象,通过它们可存储文件或把文件部分下载或移入到其中。根据本发明,任何计算机10a、10b、110a、110b等负责数据库20或其他存储元件的维护或更新,比如根据本发明存储用于处理图像的图像处理程序的数据库20。这样,在具有客户机计算机110a、110b等的计算机网络环境中可使用本发明,这些计算机可访问计算机网络/总线14和服务器计算机10a、10b等并与其交互动作,而它们又与客户计算机110a、110b等以及其他设备111和数据库20交互动作。
示例计算设备
希望图2和以下讨论提供可实现本发明的计算环境的一般简述。然而,应该理解可考虑结合本发明使用手提式、便携式和其他计算设备以及所有类型的计算对象。尽管以下描述了通用计算机,但这只是一个例子,并且本发明可用具有网络/总线协作和交互的瘦客户机实现。这样,本发明可在网络主控服务的环境中实现,其中包含很少或最少的客户资源,例如其中客户设备仅用作对网络/总线的接口的网络环境,比如放置在装置中的对象。实质上,对于本发明图像剪切算法操作的环境,把数据存储在任何地方或从其中检索数据都是期望的或合适的。
虽然不需要,可通过操作系统实现本发明,它由设备或对象服务的开发商使用并且/或者包括在协助处理图像数据的应用软件中。可在由一台或多台计算机(客户工作站、服务器和其他设备)执行的计算机可执行指令(比如程序模块)的一般环境中描述软件。一般,程序模块包括进行特定任务或实现特定抽象数据类型的例程、程序、对象、成分、数据结构等。通常,可在不同实施例中按需要组合或分布程序模块的功能。此外,本领域的技术人员会理解本发明可用其它计算机系统配置实施。适用于本发明的其他熟知计算系统、环境和/或配置包括(但不仅限于)个人计算机(PC)、自动柜员机、服务器计算机、手提式或膝上型设备、多处理器系统、基于微处理器的系统、可编程用户电子设备、网络PC、装置、光、环境控制元件、小型计算机、大型计算机等。本发明也可在分布式计算环境中实施,其中由通过通信网络/总线或其他数据传输媒介链接的远端处理设备完成任务。在分布式计算环境中,程序模块可位于本地或远程计算机存储媒介,包括存储器存储设备,并且客户机节点依次用作服务器节点。
这样图2说明了实现本发明的适用计算系统环境100的例子,尽管如上清楚地表示,但计算系统环境100只是适用的计算环境的例子,并且不希望提出对于本发明使用和功能范围的任何限制。计算环境100不应说明为具有任何从属性或与示例操作环境100中说明的一个部件或部件组合有关的需要。
参照图2。实现本发明的示例系统包括计算机110形式的通用计算设备。计算机110的部件包括(但不仅限于)处理单元120、系统存储器130以及把包括系统存储器的各种系统部件耦接到处理单元120的系统总线121。系统总线可以是几种类型的总线结构的任一种,包括使用任何一种总线结构的存储器总线或存储器控制器、外部总线以及本地总线。通过举例(但非限制),这样的结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、高级ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围设备互连(PCI)总线(也称作为Mezzanine总线)。
计算机110通常包括各种计算机可读媒介。计算可读媒介可以是任何可由计算机110访问的可用媒介,并且包括易失性和非易失性媒介、可卸和非可卸媒介。通过举例(但非限制),计算机可读媒介包含计算机存储媒介和通信媒介。计算机存储媒介包括可由任何方法或技术实现的易失性和非易失性、可卸和非可卸媒介,以存储信息,比如计算机可读指令、数据结构、程序模块或其他数据。计算机存储媒介包括(但不仅限于)RAM、ROM、EEPROM、闪存或其他存储器技术、CDROM、数字通用磁盘(DVD)或其他光盘存储器、盒式磁带、磁带、磁盘存储器或其他此存储设备,或任何其他可用于存储期望信息并可由计算机110访问的媒介。通信媒介通常实施计算机可读指令、数据结构、程序模块或其他以调制数据信号形式(比如载波或其他传输机构的数据并包括任何信息传递媒介。术语“已调制数据信号”意思是以对信号中的信息以编码的方式设定或改变了其特性中的一个或多个。通过举例(但非限制)通信媒介包括诸如有线网络或直接有线连接的有线媒介以及诸如声学、RF、红外和其他无线媒介的无线媒介。以上任意的组合应包括在计算机可读媒介范围内。
系统存储器130包括以易失性和/或非易失性存储器形式的计算机存储媒介,比如只读存储器(ROM)131和随机存取存储器(RAM)132。在ROM 131中存储基本输入/输出系统133(BIOS),它包含协助计算机110内元件之间传输信息的基本例程,比如开启期间。RAM 132通常包含数据和/或程序模块,它们通过处理单元120可立即访问的且/或当时可操作的。通过举例(但非限制),图2示出了操作系统134、应用程序135、其他程序模块136以及程序数据137。
计算机110还包括其他可卸/非可卸、易失性/非易失性计算机存储媒介。通过举例,图2只示出了从可卸、非易失性磁盘152读取或写入其中的磁盘驱动器151,以及从可卸、非易失性光盘156(比如CD ROM或其他光媒介)读取或写入其中的光盘驱动器155。可用于示例操作环境中的其他可写/非可卸、易失性/非易失性计算机存储媒介包括(但不限于)盒式磁带、闪存卡、数字通用磁盘、数字视频带、固体状态RAM、固体状态ROM等。硬盘驱动器141通常通过诸如接口140的非可卸存储器接口连接于系统总线121,并且磁盘驱动器151和光盘驱动器155通常通过诸如接口150的可卸存储器接口连接于系统总线121。
以上讨论的以及图2所示的驱动器及其相关计算机存储媒介提供计算机可读指令、数据结构、程序模块以其它计算机110的数据的存储。例如在图2中,硬盘驱动器141示为存储操作系统144、应用程序145、其他程序模块146以及程序数据147。注意这些部件或是与操作系统134、应用程序135、其他程序模块136以及程序数据137相同或是与其不同。在这里以不同的标号给出操作系统144、应用程序145、其他程序模块146以及程序数据147以表示至少它们是不同形式。用户可以通过诸如键盘162和定位设备161(通常称作为鼠标、轨迹球或触摸输入板)的输入设备把命令和信息输入计算机110。其他输入设备(未示出)包括话筒、操纵杆、游戏操纵杆、卫星转盘、扫描仪等。这些和其他输入设备经常通过耦合于系统总线121的用户输入接口160连接于处理单元120,但也可由其他接口和总线结构连接,比如并行端口、游戏端口或通用串行总线(USB)连接。诸如Northbridge的图形接口也可连接于系统总线121。Northbridge是与CPU或主处理单元120通信的芯片组,并且假设负责AGP通信。一个或多个图形处理单元(GPU)184可与图形接口182通信。在这点上,GPU 184一般包括片上存储器存储,比如寄存器存储,并且GPU 184与视频存储器186通信。监视器191或其他类型的显示设备电通过诸如视频接口190的接口连接于系统总线121,它就可与视频存储器186通信。除了监视器191,计算机还包括其他外围输出设备,比如扬声器197和打印机196,它可通过输出外围接口195连接。
计算机110操作于对一个或多个远程计算机(比如远程计算机180)使用逻辑连接的网络或分布式环境中。远端计算机180可以是个人计算机(PC)、服务器、路由器、网络PC、对等设备或其他普通网络节点,并且通常包括许多或所有以上所述的与计算机110有关的元件,虽然图2只说明了存储器存储设备181。图2中所述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还包括其他网络/总线。这样的网络环境通常出现在家庭、办公室、公司范围的计算机网络、内部网和因特网中。
当用于LAN网络环境中时,计算机110通过网络接口或适配器170连接于LAN 171。当用于WAN网络环境时,计算机110通常包括调制解调器172或其他用于在诸如因特网的WAN 173上建立通信的装置。可以是内部或外部的调制解调器172可通过用户输入接口160或其他合适机构连接于系统总线121。在网络环境中,有关计算机110所述的程序模块和其各部分可存储于远程存储器存储设备中。通过举例(但非限制)图2把远程应用程序185示为位于存储设备181上。可以理解,所示的网络连接是示例性的并且可使用计算机间建立通信链路的其他装置。
示例分布式计算框架和结构
关于个人计算机和因特网的结合已开发并正开发各种分布式计算框架。相似的个人和商务用户配备用于应用程序和计算设备的无缝互操作和允许Web的接口,使计算活动逐步面向Web浏览器或网络。
例如,MICROSOFT的.Net平台包括服务器、构件服务,比如基于Web的数据存储和可下载设备软件。一般说来,.Net平台提供(1)使计算设备的整个范围一起工作的能力以及自动更新用户信息并在对它们全部同步的能力,(2)由更多使用XML而不是HTML引起的Web站点的增加的交互能力,(3)构成定制访问以及把产品和服务从各应用程序的管理的中心开始点传递到用户的在线服务,比如电子邮件,例如诸如Office.Net特征的软件,(4)集中数据存储,它增加了对信息存取的有效性和便利性以及用户和设备间信息的同步性,(5)集成各种通信媒介的能力,比如电子邮件、传真和电话,(6)对于开发商,产生可再使用模块,由此增加生产率并减少编程差错的数量以及(7)还有许多其他跨平台集成特征。
计算系统中驱动器的管理
图3A和3B是应用程序135、运行时间302和驱动器303如何通过API和DDI进行交互的简单描述。
在图形API/DDI配置的环境中,当前普遍有两个驱动器模型:在线驱动器模型和分层驱动器模型。图3A描述了在线驱动器模型,实质上是完全的API实现,构造它运行在特定硬件上,例如视频接口190(图2)。使用在线驱动器模型的API的例子包括专用图形API,比如3Dfx幻灯片和ATI CIF以及OpenGL。
在图3B所示的分层驱动器引入了间接的附加层,其中API实现在通过DDI调用驱动器303之前完成了一些逻辑(比如参数确认)和代码(比如几何流水线)。术语“分层驱动器”并不仅指API在工作之后调用DDI的思想,还指的是驱动器303可根据硬件306完成多少功能来实现不同“层”的思想。例如,仅实现光栅化的图形硬件产品的DDI具有比实现变换与光照以及光栅化更低的层次。
支持各种分层驱动器增加了运行时间302实现的复杂性。例如,MICROSOFT的产品DIRECTX 7.0支持硬件加速的多边形转换与光源,它必须检查基础驱动器是否实现该特征。如果是,应用程序135就可利用该特征创建和使用设备;否则,在软件中必须由运行时间302仿真该特征。结果,由DIRECTX 7.0执行的代码路径根据它正运行在DIRECTX 7.0型驱动器上还是在预DIRECTX 7.0驱动器上而显著不同。
图4进一步说明系统中示例应用程序、运行时间和驱动器的各层。应用程序135、运行时间302和部分驱动器303操作于用户模式中以把绘图命令写入DMA存储器中的硬件专用命令缓冲器。在现今的PC系统中,这些写入通常是非暂时性地写入AGP存储器;并且如该实现例子所述,应用程序135位于EXE中,而运行时间302和用户模式驱动器303位于动态链接应用程序135的DLL中。系统用户模式部分的这些细节可改变;特别地,应用程序135、应用程序135和运行时间302,或者应用程序301、运行时间302和用户模式驱动器303可以是潜在的管理代码。
为了防止用户模式驱动器(如303)的非授权替换,系统通常询问核心驱动器405(由于从安全观点是信任内核码的)以用于用户模式驱动器DLL的加载。
命令缓冲调度程序404(“调度程序”)和核心驱动器405以核心模式一起工作以把命令缓冲器调度给硬件406(调度程序404判定应该调度哪个命令缓冲器,同时核心驱动器405指示硬件406在调度程序404的请求下调度命令缓冲器)。该系统考虑到驱动器逻辑的容量应位于用户模式驱动器403的DLL中,而不是核心驱动器405。当用户模式驱动器403包含把DDL层调用映射到硬件专用命令(它的操作是复杂的并易于出错的,尤其在编译顶点和/或阴影模型程序时)中的大量代码时,核心驱动器405就相对较小且较简单,从而最大化了系统鲁棒性。
图5说明了当应用程序135在示例图形操作中进行API调用时发生的事件序列。命令缓冲器在图5中没有专门表示为硬件部件;根据图4,用户模式驱动器303把硬件专用命令写入设备的当前命令缓冲器,命令缓冲调度程序(系统核心支持530的一部分)通过核心模式驱动器405把指令缓冲器调度到硬件306,并且完成的命令缓冲器可由系统中的应用程序135循环使用。注意,多个应用程序135潜在共享可用命令缓冲池,由系统核心支持530仲裁该资源的共享。
当应用程序135开始创建绘图环境501时,系统核心支持530检查是否能创建新的指令缓冲器531。如果是这样,创建532新的指令缓冲器并对其初始化533,并且在应用程序135进行绘图调用502之前该线程得到已初始化的命令缓冲器。如果在步骤531不能创建命令缓冲器,那么应用程序135必须等待直到初始化命令缓冲器变为可用534。一旦应用程序135得到了命令缓冲器,应用程序135、运行时间302和用户模式驱动器303进入三个部件之间的通常交互,它使硬件专用的命令写入命令缓冲器。由运行时间302确认来自应用程序135的绘图调用502;随后检查512确定是否需要清洗当前命令缓冲器。如果不是,把绘图命令译为更简单的、规范的DDI调用513并把它传递到用户模式驱动器520。驱动器把DDI调用译为硬件专用命令并试图把它们写入命令缓冲器。如果对清洗的检查522确定命令缓冲器中没有空间,那么必须把命令缓冲提交到系统核心支持530并且在命令写入之前从同处得到的新命令缓冲器并继续执行。如果运行时间302或用户模式驱动器303确定需要清洗,就根据步骤535把命令缓冲器加入等待队列。同时,系统核心可以检查536是否立即提交命令缓冲器(通常由于没用指令缓冲器运行)。如果不是,把命令缓冲器留在等待队列中并且必须得到新的命令缓冲器534。注意该功能框(它等待直到合适的初始化的命令缓冲可用且随后把它分配给设备)相同于应用程序135开始绘图之前其需要的操作。
当为调度540选择准备命令缓冲器时,系统核心支持530使核心驱动器405环境把硬件切换为合适的环境551并把命令缓冲器调度到硬件552。随后硬件306读取并执行命令缓冲器561,直到它被抢占或者命令缓冲器用完。如果指令缓冲器正常完结563,硬件就发出中断信号并执行中断服务例程553。ISR可以希望在此时保存硬件环境554,虽然驱动器希望推迟这个操作到环境切换551,该情况下应要求硬件连续执行两个命令缓冲器,它们操作于同一环境。在步骤554之后,核心系统支持530释放该命令缓冲器所需的资源538,并且传送任何通知机构,比如让所考虑的客户机知道完成命令缓冲器的事件。在步骤538后,核心系统支持具有两个不同的任务:它必须重新初始化新的可用的命令缓冲器并把它加入初始化池533,并且它必须解锁任何等待命令缓冲器并把它们移到准备队列中539。在步骤539后,调度540可选择另一命令缓冲器540。
根据本发明的一个方面,关于图4和5描述的相互处理通信的复杂性说明了对管理代码的需要。尤其关于图5所示的系统可平衡管理代码,其中以中间语言的形式传递应用程序135、运行时间302和/或用户模式驱动器303的部分并在客户机进行JIT编译。把三个部件分别以中间语言的形式传递到客户机。JIT编译器随后将它们合成为所有三个部件的部分都包括的统一的对象代码块。这样的结构会使系统执行更优的对象代码。此外,可把应用程序135对入口点的调用中的常量传送到运行时间302和用户模式驱动器303,潜在地产生了把若干常量字写入命令缓冲器的对象代码,而不是交叉几个函数调用的边界以完成同一效果。应用程序135的中间语言形式仍旧是硬件独立的,这是由于用户模式驱动器303专用于客户机上的图形硬件。此外,可把所有管理代码通过网络传递到系统,如以上图1所示。
在通过产生所有三个部件(即应用程序135、运行时间302和用户模式驱动器303)的管理代码完成最佳潜在性能改进的同时,系统可管理应用程序135和运行时间302,并且使它们与独立的用户模式驱动器303交互动作,或者甚至仅管理应用程序135并使其与独立的运行时间302和用户模式驱动器303交互动作。事实上,可使这样的子系统平稳共存,只要中间语言和运行时间302和/或用户模式驱动器303的用户模式DLL形式都是可用的。
系统还可从迟限定的管理代码中得利,这大致已作了描述。如果运行时间302是可管理的,那么JIT可进行优化,比如在运行时间的参数确认检查。在图4的系统中,由JIT产生的统一对象代码块把规范命令缓冲器数据写入可DMA的存储器以最终提交给硬件。在图5的系统中,由JIT产生的对象代码把数据由核心模式驱动器405发送到分析和转译的中间缓冲器。下面该部分将更详细地描述本发明管理代码方面的系统和优点。
管理代码
常规的软件调用机构需要写入资源代码、把资源代码编译为特定计算机类型的可执行模式,并在客户计算机上安装可执行代码,这样它就可以运行了。在.Net基础结构中允许的另一方法在该过程中添加额外步骤。把资源代码译为可便于编译的中间形式,它可安装在客户机计算机上。随后客户计算机使用JIT(“运行时执行”)编译器把中间代码译为本机可执行的“管理”代码,这样它就可以运行了。该方法有几个优点。一个优点就是中间代码是独立平台的;由于译为可执行代码是发生在客户机上,所以任何知道如何编译中间代码的客户机就可执行应用程序。相关的优点就是可把独立平台的中间代码发送到当写入代码时尚不存在的平台并在其上运行。
然而,在本发明的环境中,JIT编译的最重要优点就是当产生管理代码时,JIT编译器具有目标计算机实际特性的先验信息(即运行JIT编译器所在的客户机)。如果客户计算机具有特定类型的微处理器,那么JIT编译器可发送该特定微处理器本机的代码。例如,Pentium Pro微处理器把条件移动指令加入x86指令集,而Pentium 3微处理器添加了不可用于其上代的预取和其它高速缓冲管理指令。在常规调用的软件中支持者这些微处理器专用的指令需要开发商写入使用所有不同特征的资源代码,随后写入检测软件以检测哪条代码路径在代码运行所在的客户机上执行。JIT步骤使开发商免于完成该任务,并甚至提供开发商对未来革新的保护。换句话说,包括有利于开发商应用的新指令的计算机可包括JIT编译器以知道如何发送该指令;应用程序从新指令中得利,即使开发应用程序时它不存在。
在线驱动器模型的支持者把性能优势描述为把API实现与驱动器结合的主要动机。这个结合有许多不期望的副作用,主要是由于运行时间的后续释放不能在预先释放运行时间的驱动器之顶上添加API方法的特征、性能改进和变化。在突出基于驱动器安装工作的API改进的效用的DIRECTX的历史中有充足的先例。这些API的改进范围从便利绘图方法(比如在预DIRECTX 5.0驱动器上工作的DIRECTX5.0基本绘图API);性能改进(比如在预DIRECTX 6.0驱动器上工作的DIRECTX 6.0几何流水线);到API级策略改变(比如在预DIRECTX 6.0驱动器上工作的DIRECTX6.0文本管理器)。如果所考虑的驱动器是在线驱动器,这些类型的改进是困难的或不可能的。
就像JIT编译器具有客户机上微处理器的先验信息,它也具有客户机实际硬件配置的先验信息。尤其它具有客户机中图形处理器和相关驱动器的类型的信息。例如,在JIT时间,系统知道图形驱动器的有效版本(DIRECTX 6.0、DIRECTX 7.0等),因此如果应用程序和驱动器是可管理的,那么编译器可发送对于特定驱动器版本的可执行调节。图6描述了这样的系统。
以诸如MICROSOFT的CLRT的中间语言(IL)的形式接收应用程序135和运行时间302,JIT编译器602取得应用程序IL 135和运行时间IL 302,并把它们结合到单独编译的管理应用程序604中。该应用程序与驱动器303和硬件306通信,如上所述。
图6中描述的基于JIT的方法产生了许多优化,包括:
--对不同DDI的支持更有效,由于在编译时间DDI类形是已知的。这消除了大量条件代码。
--如果在JIT时间条件已知就可消除条件代码-例如对于保证有效的参数可消除参数确认。
--通常的运行时间函数还是可以是内嵌的,使指令围绕函数调用调度。
--可执行代码(内嵌的或在运行时间实现中的)的目标可针对特定主处理器类型。随着微处理器销售商增加它们修改指令集的速度,处理器专用优化的重要性也增加。
通过平衡基于中间语言(IL)的驱动器可进一步改进该结构的性能。
图7提供了管理代码系统的备选实施例。这里,该结构可使编译的应用程序135把硬件专用的命令直接写入命令缓冲器或FIFO中。除了性能含义外,其他潜在好处包括减少IHV传送跨平台驱动器所需的工程工作以及更好地使确认工具确信驱动器的正确性。把应用程序135、运行时间302和驱动器303都以IL的形式传递到JIT 602。JIT 602把它们转换为管理应用程序604。
在历史上,DIRECTX实现了分层驱动器模型,其中运行时间把图形和绘图命令译为简化的、硬件独立的标志流。当DIRECYX运行时间确定需要清洗时(即必须由硬件执行流中的命令),它就转换为核心模式并把命令流传递到图形驱动器。随后驱动器分析命令流并把它译为硬件专用命令,并且通常把那些命令写入存储器缓冲器以由硬件消耗。
返回参考图4并结合图6和7,核心模式驱动器405应具有最小容量,它只实现足够的代码以初始化硬件、开始DMA操作以消耗已组成的命令缓冲器,并建立及处理中断。在图4的环境中实现本发明可采取两种形式。首先如上所述,应用程序135和运行时间302可由JIT 602编译以使迟限定的管理代码与驱动器DLL 303交互动作。JIT 602随后在编译时间会知道驱动器DLL 303的额外特性(例如,它是否实现变换和光照加速),并且当产生客户机计算机的对象代码时它可利用该信息。
在图4环境中实现的本发明第二“管理驱动器”变例需要具有都由JIT 602编译的应用程序135、运行时间302和驱动器DLL 303,以使统一可执行代码块进行从API的转译以及把硬件专用的命令写入DMA存储器410。该结构把鲁棒性和分层驱动器模型的其他优点与由在线驱动器模型的硬件特征得到的有效性结合。因此,与其它驱动器结构相比,这个“管理驱动器模型”提供较高潜在性能。
如上所述,尽管结合不同计算设备和网络结构描述了本发明的示例实施例,但基本概念可应用于任何计算设备或系统,其中期望对应用程序和驱动器管理管理。这样,根据本发明管理应用程序的技术可应用于各种应用和设备。例如,本发明的优点可应用于计算设备的图形系统,如果作为设备上的独立对象、作为另一设备的一部分、作为来自服务器的可下载对象、作为设备或对象和网络之间的“中间人”等等。可存储所产生的管理应用程序以为以后使用,或输出到另一独立、从属或相关过程或服务。尽管这里示例编程语言、名称和例子选择为不同选择的代表,但不希望这些语言、名称和例子是限制性的。
结合硬件或软件或两者组合(当需要时)实现这里所述的各种技术。这样本发明的方法和设备或其某些方面和部分可采取有形媒介中实施的程序代码(即指令)的形式,比如软盘、CD-ROM、硬盘或任何其他机器可读存储媒介,其中当把程序代码加载进诸如计算机的机器并由其执行时,该机器变为实现本发明的设备。在可编程计算机上执行程序代码的情况下,计算设备一般包括处理器、可由处理器读取的存储媒介(包括易失性和非易失性存储器和/或存储元件),至少一个输入设备以及至少一个输出设备。可使用本发明边界发现技术的一个或多个程序(例如通过使用数据处理API等)较佳地以高级面向过程或对象的编程语言实现以与计算机系统通信。然而,如果需要程序可以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释语言并结合硬件实现。
也可通过以在一些传送媒介(比如通过电线或电缆、通过光纤或通过任何其他形式的传送)上发送的程序代码的形式实施的通信实现本发明的方法和设备,其中当接收程序代码并加载到机器(比如EPROM、门阵列、可编程逻辑设备(PLD)、客户计算机、视频记录器等)中并由其执行时,具有如以上示例性实施例所述的驱动器技术的接收机变为实现本发明的设备。当在通用处理器上实现时,程序代码结合处理器以提供操作实现本发明功能的唯一设备。此外,结合本发明使用的任何存储技术总是硬件和软件的组合。
尽管结合各图的较佳实施例描述了本发明,可以理解可用其它相似的实施例,或者可对所述实施利进行修改和添加而不偏离本发明实现其相同功能。例如,尽管在网络环境的环境中描述了本发明示例网络环境(比如对等网络环境),但本领域的技术人员会明白本发明并不限于此,并且如本申请所述,该方法可应用于任何计算设备或环境,比如游戏操作台、手提式计算机、便携式计算机等,不管有线还是无线,并且该方法可应用于任何数量的此种通过通信网络连接的计算设备并通过网络交互。
此外,应该强调要考虑包括手提式设备操作系统和其它应用程序专用的操作系统的各种计算机平台,尤其当无线网络设备的数量持续增加。进一步,本发明可用或通过多个处理芯片或设备实现,并且通过多个设备相似地实现存储。因此,本发明应不限于任何单个实施例,但是应以根据所附权利要求书的广度和范围说明。

Claims (26)

1.一种计算机系统,其特征在于该系统包括:
处理器;
操作系统,具有与计算部件交互动作的所选驱动器;
多个应用程序指令,所述指令是以可由中间语言编译器读取的中间语言的形式的;
多个运行时间指令,所述指令是以可由中间语言编译器读取的中间语言的形式的;
中间语言编译器,其中所述中间语言编译器把应用程序指令和运行时间指令编译为可由处理器执行的指令以与所选驱动器交互动作。
2.按权利要求1所述的计算机系统,其特征在于所选驱动器包括多个中间语言指令。
3.按权利要求2所述的计算机系统,其特征在于所选驱动器分为用户模式指令和核心模式指令。
4.按权利要求3所述的计算机系统,其特征在于所选驱动器的用户模式指令从设备驱动器接口指令译为硬件专用命令。
5.按权利要求4所述的计算机系统,其特征在于所选驱动器把硬件专用命令写入操作系统分配的缓冲器以提交到硬件时间的调度程序。
6.按权利要求1所述的计算机系统,其特征在于把多个应用程序指令和多个运行时间指令通过网络传递到计算机系统。
7.按权利要求2所述的计算机系统,其特征在于通过网络传递所选驱动器。
8.按权利要求1所述的计算机系统,其特征在于编译器包括运行时执行编译器。
9.一种与硬件进行软件交互的方法,其特征在于该方法包括:
用中间编程语言提供应用程序;
用中间编程语言提供运行时间程序;
把应用程序和运行时间程序编译为单个可执行程序用于在目标计算机系统上执行。
10.按权利要求9所述的方法,其特征在于进一步包括用中间编程语言提供驱动器程序,其中用应用程序和运行时间程序把驱动器程序编译为单个可执行程序。
11.按权利要求10所述的方法,其特征在于驱动器程序包括以可执行形式提供的核心模式部分。
12.按权利要求11所述的方法,其特征在于驱动器程序包括以中间语言形式提供的用户模式部分。
13.按权利要求12所述的方法,其特征在于用户模式部分从设备驱动器接口指令译为硬件专用命令。
14.按权利要求10所述的方法,其特征在于驱动器把硬件专用命令写入操作系统分配的缓冲器以提交到硬件时间的调度程序。
15.按权利要求9所述的方法,其特征在于把应用程序指令和运行时间指令通过网络传递到计算机系统。
16.按权利要求10所述的方法,其特征在于通过网络传递驱动器。
17.按权利要求9所述的方法,其特征在于编译器包括运行时执行编译器。
18.一种计算机可读媒介,具有与硬件进行软件交互的计算机可执行的指令,其特征在于包括:
接收中间编程语言形式的应用程序的指令;
接收中间编程语言形式的运行时间程序的指令;
把应用程序和运行时间程序编译为单个可执行程序用于在目标计算机系统上执行的指令。
19.按权利要求18所述的计算机可读媒介,其特征在于进一步包括接收中间编程语言形式的驱动器程序的指令,其中用应用程序和运行时间程序把驱动器程序编译为单个可执行程序。
20.按权利要求19所述的计算机可读媒介,其特征在于驱动器程序包括以可执行形式提供的核心模式,其中所接受的指令包括用户模式指令。
21.按权利要求20所述的计算机可读媒介,其特征在于用户模式指令包括中间语言指令。
22.按权利要求21所述的计算机可读媒介,其特征在于用户模式指令从设备驱动器接口指令译为硬件专用命令。
23.按权利要求22所述的计算机可读媒介,其特征在于驱动器把硬件专用命令写入操作系统分配的缓冲器以提交到硬件时间的调度程序。
24.按权利要求18所述的计算机可读媒介,其特征在于把应用程序和运行时间程序通过网络传递到目标计算机系统。
25.按权利要求19所述的计算机可读媒介,其特征在于通过网络传递驱动器。
26.按权利要求18所述的计算机可读媒介,其特征在于编译器包括运行时执行编译器。
CNB031009514A 2002-01-04 2003-01-06 在计算系统中管理驱动器的系统和方法 Expired - Fee Related CN100555223C (zh)

Applications Claiming Priority (2)

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
US10/039,035 2002-01-04

Publications (2)

Publication Number Publication Date
CN1432913A true CN1432913A (zh) 2003-07-30
CN100555223C CN100555223C (zh) 2009-10-28

Family

ID=21903307

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031009514A Expired - Fee Related CN100555223C (zh) 2002-01-04 2003-01-06 在计算系统中管理驱动器的系统和方法

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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707983A (zh) * 2011-03-23 2012-10-03 微软公司 客户端/驱动器通信接口的自动生成
CN103491121A (zh) * 2012-06-13 2014-01-01 中兴通讯股份有限公司 一种支持双ip业务的ndis驱动方法和驱动系统
CN107273101A (zh) * 2016-04-06 2017-10-20 晨星半导体股份有限公司 嵌入式系统的操作方法与控制芯片
CN101978352B (zh) * 2007-12-13 2017-11-03 先进微装置公司 用于具有多重图形子系统、减少的功率消耗模式的计算装置的驱动程序架构、软件和方法
CN111290351A (zh) * 2020-01-21 2020-06-16 深圳市雷赛软件技术有限公司 一种驱动器管理方法、系统、计算机设备及存储介质

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7768522B2 (en) * 2002-01-08 2010-08-03 Apple Inc. Virtualization of graphics resources and thread blocking
US6809736B1 (en) * 2002-01-08 2004-10-26 Apple Computer, Inc. Virtualization of graphics resources
US6809735B1 (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
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
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
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
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
BRPI0418952A (pt) * 2004-08-12 2007-12-04 Trek 2000 Int Ltd método e sistema para a instalação automática de um driver de unidade funcional em um servidor ("host")
US8136102B2 (en) 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for 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
US8108844B2 (en) 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
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
US8381202B2 (en) * 2006-06-20 2013-02-19 Google Inc. Runtime system for executing an application in 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
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US8261270B2 (en) 2006-06-20 2012-09-04 Google Inc. Systems and methods for generating reference results using a parallel-processing computer system
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
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
KR100918626B1 (ko) * 2007-08-02 2009-09-25 주식회사 플랜티넷 어플리케이션 프로그램 검증 및 실행 제어 방법
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
US8176499B2 (en) * 2008-05-30 2012-05-08 Microsoft Corporation Defining, distributing and presenting device experiences
KR100962704B1 (ko) * 2008-07-02 2010-06-11 유상규 일측 단말의 제어로 타 단말의 주변장치를 이용하는 단말장치 및 그 인터페이스 방법
US20110063309A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation User interface for co-processing techniques on heterogeneous graphics processing units
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
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
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 精品科技股份有限公司 控制台程式的控制管理方法及系統
CN113741856A (zh) * 2021-07-27 2021-12-03 深圳市广通远驰科技有限公司 驱动绑定方法、装置、电子设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
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
US7150011B2 (en) * 2000-06-20 2006-12-12 Interuniversitair Microelektronica Centrum (Imec) Virtual hardware machine, methods, and devices

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101978352B (zh) * 2007-12-13 2017-11-03 先进微装置公司 用于具有多重图形子系统、减少的功率消耗模式的计算装置的驱动程序架构、软件和方法
CN102707983A (zh) * 2011-03-23 2012-10-03 微软公司 客户端/驱动器通信接口的自动生成
CN102707983B (zh) * 2011-03-23 2017-03-01 微软技术许可有限责任公司 客户端/驱动器通信接口的自动生成
CN103491121A (zh) * 2012-06-13 2014-01-01 中兴通讯股份有限公司 一种支持双ip业务的ndis驱动方法和驱动系统
CN103491121B (zh) * 2012-06-13 2017-11-28 中兴通讯股份有限公司 一种支持双ip业务的ndis驱动方法和驱动系统
CN107273101A (zh) * 2016-04-06 2017-10-20 晨星半导体股份有限公司 嵌入式系统的操作方法与控制芯片
CN111290351A (zh) * 2020-01-21 2020-06-16 深圳市雷赛软件技术有限公司 一种驱动器管理方法、系统、计算机设备及存储介质

Also Published As

Publication number Publication date
CA2415485A1 (en) 2003-07-04
TW200305823A (en) 2003-11-01
US7600222B2 (en) 2009-10-06
RU2304305C2 (ru) 2007-08-10
US20030131147A1 (en) 2003-07-10
TWI276998B (en) 2007-03-21
CN100555223C (zh) 2009-10-28
MXPA03000095A (es) 2004-12-07
AR039369A1 (es) 2005-02-16
EP1326166A3 (en) 2003-11-05
BR0300078A (pt) 2003-09-02
JP2003263326A (ja) 2003-09-19
EP1326166A2 (en) 2003-07-09

Similar Documents

Publication Publication Date Title
CN100555223C (zh) 在计算系统中管理驱动器的系统和方法
CN1280725C (zh) 分区处理环境中的资源平衡的计算系统和方法
CN1534457A (zh) 增强的运行时间主机支持
US7958184B2 (en) Network virtualization in a multi-node system with multiple networks
CN1294486C (zh) 多重处理环境中透明动态优化的方法和系统
CN1794177A (zh) 用于为虚拟机揭示处理器拓扑结构的系统和方法
CN1516419A (zh) 在主机计算机网络上处理客户机请求的系统和方法
CN1975679A (zh) 用于优化分段资源分配的方法和设备
CN1867891A (zh) 用于实时多线程处理的方法和装置
JP5980916B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
CN1809068A (zh) Web应用程序架构
CN1819576A (zh) 在客户机和服务器之间分配应用任务的方法以及应用服务系统
CN1841331A (zh) 为被先占的虚拟处理器分配应得处理器周期的方法和系统
CN1492323A (zh) 多处理器地址转换的高效仿真方法和系统
US11809428B2 (en) Scalable query processing
CN101038545A (zh) 操作系统内核构件跨域运行的方法
US20070288912A1 (en) Methods and apparatus to provide a managed runtime environment in a sequestered partition
CN1766841A (zh) 消息传递处理器
CN1956454A (zh) 基于加权成本捆绑并发送工作单元到服务器的方法和系统
US8429218B2 (en) Process restart on a compute node
US11461325B2 (en) Checkpoints in batch file processing
US20140237017A1 (en) Extending distributed computing systems to legacy programs
CN1620655A (zh) 用数据控制用户界面属性的系统和方法
CN100336019C (zh) 基于服务体/执行流结构的操作系统
CN1577313A (zh) 微处理器和网格计算系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150507

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150507

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091028

Termination date: 20200106