增强的运行时间主机支持的制作方法

文档序号:6397251阅读:139来源:国知局
专利名称:增强的运行时间主机支持的制作方法
技术领域
本申请涉及计算机软件开发。更特别地,本申请涉及提高执行环境在应用和所支持的运行时间服务之间的集成的应用编程接口(API)。
背景技术
在今天复杂的计算机程序和联网环境中,通常非常需要代码共享、可伸缩性及与其他跨平台框架的集成。由主机应用使用运行时间(即,此后称为“主机”)通常运行应用开发者写出有跨平台兼容性、提高的可伸缩性、普通类型系统、多语言支持、自动存储器管理等等特性的管理的代码。运行时间包括,例如普通语言运行时间(CLR)、Java虚拟机(VM)和/或其类似。
多数主机包括管理的代码和未管理的代码。管理的代码是在运行时间的控制之下执行的代码。反之,未管理的代码是在运行时间之外执行的代码。未管理的代码如普通对象模型(COM)组件、ActiveX接口和Win32API函数等。未管理的主机支持代码被用来配置普通语言运行时间,将其加载到进程(即,正在执行的程序)中并转换改程序为管理的代码。
除了这些基本的交互,一旦进程在运行,主机和运行时间之间的交互通常限制于主机控制运行时间执行一些任务。在一些情况下,主机可以接收事件或消息来指示请求的运行时间任务已完成。主机/运行时间这样的受限交互表示在进程执行期间非常缺乏主机和运行时间之间的集成。由于这些原因,主机和运行时间可以说是表示进程中本质上独立的实体。在主机和运行时间之间如此缺乏执行环境集成本质上限制了主机应用,使其对运行时间提供的很多服务只有很少控制或没有控制。
例如,假设主机使用合作的或非优先线程,这通常需要主机至少知道运行在主机的执行环境中的所有线程。也假设运行时间依赖于OS的非合作或优先线程模型。(运行时间通常依赖于操作系统(OS)线程、存储器管理、同步、安全等等的实现)。在此情况下,主机可以发送线程到运行时间中。在这一点,OS优先任务会阻塞主机的非优先进程且/或主机会将任务移动到完全不同的物理线程。主机线程退出运行时间进入到不属于主机或运行时间的代码中会使得情况更糟,此时任何事情都会对主机线程发生而主机不知道。
这样的非集成的主机/运行时间线程管理会显著降低主机运行时间的性能和可伸缩性,会导致数据完整性的丢失、创建主机不能检测到的死锁,和/或导致主机和系统不可预测的行为。
上述的例子展示了缺乏主机和运行时间之间的执行环境集成会破坏主机应用所预期的实现。当主机随着时间调整线程、存储器、同步和/或安全实现以提高可伸缩性和高性能时尤其如此。因此,虽然主机会需要得益于运行时间的使用(如,跨平台兼容性、降低编码工作量等等),对主机特别调整的实现会与对应的运行时间服务不兼容。因此,主机可以只加载依赖于主机提供的服务的运行时间,或通过直接访问下层的OS服务完全忽略运行时间服务。这样的修补使得应用设计者不能利用运行时间系统服务设计提供的好处,导致产品的集成度和可移植性下降。
因此,非常需要提高在主机和运行时间之间的执行环境控制的系统和方法。

发明内容
将对增强的运行时间主机支持的系统和方法进行说明。在一个方面,运行时间识别由主机应用暴露的任何抽象接口。抽象接口对应于由主机应用实现的相应的执行环境功能。在运行时间管理的代码执行期间并响应于和识别出的相应的执行环境抽象关联的动作或事件,运行时间调用特定的接口或对应于一个特定的抽象接口的对象。这允许主机应用定制/增强其执行环境,将其作为所实现的抽象的功能,所述执行环境包括运行时间。


将引用

下面的详细说明。在附图中,组件引用编号最左边的一位用来标识该组件首次出现在其中的图。
图1为方框图,展示可以在其中实现提供增强的运行时间主机支持的系统和方法的典型计算环境;图2展示提供增强的运行时间主机支持的典型处理;图3展示运行时间和主机应用存储器抽象接口之间的典型结构关系。为了便于说明,“抽象”指在主机应用中由应用开发者可选地实现的函数/方法。主机实现的函数是抽象的,因为它本质上替换若主机未实现该函数则运行时间本该遵循的线程执行。同时,用于访问主机实现的功能的应用编程接口被称为“抽象的”或“抽象接口”。
图4展示运行时间和主机应用线程抽象接口之间的典型结构关系;图5展示从未管理的代码到管理的代码或从管理的代码到未管理的代码退出/反向退出和进入/反向进入管理的代码的典型的管理的/未管理的代码调用序列;及图6为方框图,展示运行时间任务的典型任务调度,运行时间任务被视为在OS线程上由主机应用调度的构造。
具体实施例方式
总述对增强的运行时间主机支持进行说明。现有的在支持运行时间的应用(主机应用)和运行时间之间的集成本质上受到限制,使得主机应用对其执行环境的相当部分只有很少的控制,如果有的话。本发明通过本质上提高主机和运行时间之间的执行环境集成来处理这样的缺乏集成。用允许主机应用实现和执行控制和定制执行环境功能、事件通知和运行时间操作的多个层次的抽象接口来实现提高的集成。这样的抽象包括例如,存储器管理、线程、输入/输出(I/O)完成、同步、事件通知(如,当线程进入和离开运行时间时)服务抽象。
另外,运行时间接口向运行时间对主机应用实现的特定方面提供实在的控制,所述特定方面包括事件通知。运行时间的功能并不取决于主机应用是否已决定实现这样的增强的运行时间主机支持接口。
典型操作环境对附图来说,其中类似的引用编号指类似的元件,本发明是作为实现在适合的计算环境中来展示的。虽然不是必须的,在计算机可执行指令的一般上下文中对本发明进行说明,计算机可执行指令如由个人计算机执行的程序模块。程序模块通常包括执行特殊任务或实现特殊抽象数据类型的例程、程序、对象、组件、数据结构等等。
图1展示适合的计算环境100的例子,可以在其中(完整地或部分地)实现后面说明的增强的运行时间主机支持的系统、装置和方法。典型计算环境100仅为适合的计算环境的一个例子且不应视为对在此所述的系统和分的使用范围或功能有任何限制。也不应将计算环境100解释为依赖于或需要计算环境100中所展示的组件任何一个或组件组合。
在此所述的方法和系统可以工作在大量的其他通用或专用计算系统环境或配置中。适合于使用的众所周知的计算系统、环境和/或配置包括,但不仅限于,个人计算机、服务器计算机、多处理器系统、基于微处理器的系统、网络PC、小型机、大型机、包括上述的任何系统或设备的分布式计算环境,等等。框架的紧凑或子集版本也可以实现在资源有限的客户机中,如移动电话、个人数字助理、手持计算机或其他通讯/计算设备。本发明也可以实现在分布式计算环境中,其中任务由通过通讯网络连接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备两者。
如图1所示,计算环境100包括形式为计算机102的通用计算设备。计算机102的组件包括但不仅限于,一个或多个处理器或处理单元104、系统存储器106和总线108,总线108连接包括系统存储器106到处理器104的各种系统组件。
系统总线108表示几种总线结构中的一种或多种,包括存储器总线或存储器控制器、外围设备总线、加速图形接口和使用各种总线结构中的一种的处理器或本地总线。作为例子,而非限制,这样的结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)本地总线及亦称为包厢总线的外围组件互联(PCI)总线。
计算机102通常包括各种计算机可读媒体。这样的媒体可以为计算机102能够访问的任何可用媒体,且它包括易失的和非易失的媒体、可移动的和不可移动的媒体。在图1中,系统存储器106包括形式为易失存储器的计算机可读媒体,如随机访问存储器(RAM)110和/或非易失存储器,如只读存储器(ROM)112。基本输入/输出系统(BIOS)114包含帮助在计算机102内的元件之间传输信息,如在启动期间,的基本例程,BIOS 114被存储在ROM 112中。RAM通常包含可由处理器104立即访问和/或操作的数据和/或程序模块。
计算机102可以进一步包括其他可移动/不可移动、易失/非易失计算机存储媒体。例如,图1展示读写不可移动、非易失磁媒体(未标出且通常被称为“硬盘”)的硬盘驱动器116、读写可移动、非易失磁盘120(如,“软盘”)的磁盘驱动器118,和读写可移动、非易失光盘124,如CD-ROM/R/RW、DVD-ROM/R/RW/+R/RAM或其他光学媒体的光盘驱动器122。硬盘驱动器116、磁盘驱动器118和光盘驱动器12通过一个或多个接口126每个都连接到总线108。
驱动器及关联的计算机可读媒体对计算机102提供计算机可读指令、数据结构、程序模块和其他数据的非易失存储。虽然在此所述的典型环境使用硬盘、可移动磁盘和可移动光盘124,熟悉技术的人应理解,也可以在典型操作环境中使用可以存储能够由计算机访问的数据的其他类型的计算机可读媒体,如盒式磁带、闪存卡、数字视频盘、随机访问存储器(RAM)、只读存储器(ROM)及其类似。
用户可以通过如键盘140和定点设备142(如“鼠标”)这样的输入设备输入命令和信息到计算机102中。其他输入设备(未展示)包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、串行口、扫描仪、相机等等。这些和其他输入设备通过连接到总线108的用户输入接口144连接到处理单元104,但可以通过其他接口和总线结构进行连接,如并行口、游戏口,或通用串行总线(USB)。
显示器146或其他类型的显示设备也通过接口连接到总线108,如视频适配器148。除了显示器146,个人计算机通常包括其他外围输出设备(未展示),如扬声器和打印机,它们也可以通过外围输出接口150连接。
计算机102可以使用到一个或多个远程计算机,如远程计算机152的逻辑连接工作在联网环境中。远程计算机152可以包括很多或所有在此相对于计算机102所述的元件和特性。图1所示的逻辑连接为局域网(LAN)154和通用广域网(WAN)156。这样的联网环境在办公室、企业范围的计算机网络、企业内部互联网和因特网上是很常见的。
当用在LAN联网环境中时,计算机102通过网络接口或适配器158连接到LAN 154。当用在WAN联网环境中时,计算机通常包括调制解调器160或其他在WAN 156上建立通讯的方法。调制解调器160可以为内置的或外置的,它通过用户输入接口144或其他适当的机制连接到系统总线108。
如图1所示,是通过因特网的WAN的具体实现。在此,计算机102使用调制解调器160通过因特网162和至少一个远程计算机152建立通讯。
在联网的环境中,相对于计算机102所述的程序模块,或其部分,可以被存储在远程存储器存储设备中。因此,如在图1中所示,远程应用程序164可以驻留在远程计算机162的存储器设备上。应理解,所示的网络连接是示范性的且可以使用在计算机之间建立通讯连接的其他方法。
可以在硬盘、磁盘120、光盘124、ROM 112或RAM 110上存储多个程序模块,包括如,操作系统(OS)128、运行时间130、主机应用132(在此后称为“主机”132)、其他程序模块136和程序数据138。OS提供常规的功能,如文件管理、事件处理、进程和线程、存储器管理、用户接口(如窗口、菜单、对话框等)、安全、验证、校验和/或其类似。
运行时间130和主机应用130暴露增强的运行时间主机支持抽象接口131,让应用开发者可以定制并紧密集成主机应用和运行时间之间的进程执行。为了便于讨论,“抽象”指在主机应用中由应用开发者可选地实现的函数/方法。主机实现的函数是抽象的,因为它本质上替换若主机未实现该函数则运行时间本该遵循的线程执行。同时,由主机132暴露的、让运行时间重定向服务到主机实现的功能的API和/或由运行时间130暴露的、让主机通知运行时间主机动作的API被称为“抽象的”或“抽象接口”(即,抽象接口131)。
由主机实现的抽象接口131(此后称为“运行时间主机支持接口”(RHI)131)被称为主机抽象接口(HAI)133。HAI被映射到存储器、线程、I/O完成、同步和/或由主机提供的其他服务功能的任意组合。通过允许主机应用定制和控制运行时间130比现有实现更多的方面,RHI 131显著地扩展在运行时间和主机之间的这些现有接口的功能。和相当受限且容易出问题的现有主机/运行时间执行环境集成相比,这本质上地提供运行时间130和主机132执行模型之间的更紧密的执行环境集成。
在运行时间130和主机应用132之间合作地交换HAI 133允许相应的实体协商哪些函数由主机执行,及对哪些函数进行抽象以使得由运行时间执行它们。同样,主机应用可以定制其执行环境。暴露的HAI进一步允许运行时间配置特定的主机执行环境参数,并向主机通知(如,通过提供的回叫)特殊的运行时间事件(如,资源分配失败、线程状态等)。
运行时间130暴露运行时间接口(RI)134,由主机应用132用来配置运行时间操作、向运行时间通知特定事件、在进程执行期间获取附加信息等等。在进程执行期间,对RI的主机应用调用是通过特定服务特定于主机的实现的一个或多个HAI 133重定向回主机应用、传递给操作系统128来执行、由运行时间在本地进行处理和/或发送到对象模型服务(即,“其他程序模块”136)。
存储器抽象接口运行时间主机支持接口(RHI)131的存储器管理部分●允许主机132提供通过其运行时间130请求所有的存储器分配的接口(即,暴露的主机应用接口(HAI)133之一)。在一个实施例中,主机接口133提供替换OS存储器API和标准C运行时间分配例程两者的方法。
●对主机132提供机制来抽象运行时间130当前从OS获得的低存储器通知。这向主机提供让运行时间130使更多附加存储器可用的机制,例如,垃圾收集服务。
●允许运行时间130向主机130通知特殊的分配失败的结果,并进一步允许主机定制运行时间在分配失败时应采取的动作。例如,若运行时间卸载应用域或使其运行在“禁用”状态。
下面的情景提供RHI 131的存储器部分的典型使用。假设主机132工作在可配置数量的存储器110内(如,计算设备102上的部分或解决全部物理存储器)。为了最大化性能,主机追踪所有的存储器分配并确保永不发生分页(此例中的主机宁可存储器分配失败也不分页到硬盘116)。为了准确地追踪所有的分配,主机控制运行时间130调用暴露的主机抽象接口(HAI)133来分配存储器。这使主机能够在分页发生之前指示运行时间存储器分配失败。
线程抽象接口此部分详述RHI 131的线程管理部分。这些线程管理主机支持API对OS线程的概念进行抽象并本质上使调度和执行的单元由主机132来定义。这支持主机实现它们自己的基于纤维的调度机制。术语“任务”通常用来定义此抽象并用于区分单词“线程”和特殊的主机应用的执行和调度单元。鉴于此,线程管理API●允许主机132提供接口133,运行时间130用来创建并启动新任务(线程)。
●向主机132提供“重用”或共享任务的运行时间实现的部分的机制。这提供可以由主机应用使用以最小化主机实现的任务创建和设置操作的性能优化。
●实现回叫以在任务进入或离开可运行状态时通知运行时间。当调用离开可运行状态时,主机API 133允许运行时间130指定该任务应尽快由主机132重新调度。
●向运行时间130提供通知主机132给定任务不能移至不同的物理OS线程且不能在指定的时间窗口中阻塞其执行的方法。
●允许主机132提供线程共享池的实现,向运行时间130提供使工作项排队、设置及查询线程共享池的大小的等等能力。
●向主机132和运行时间130双方提供“区域”在给定任务上已改变的通知。区域和软件的本地化相关。运行时间130包括当前区域的概念,多数主机应用132亦如此。这些通知接口允许运行时间130和主机132互相通知区域是否在任一方被程序改变-从而双方能保持一致。例如,如果区域在运行时间一方被改变,那可能会影响到主机132实现的数据库中的排序顺序。
●允许运行时间130延迟主机130取消给定任务。
●向运行时间130(及用户代码)提供调整任务优先级的方法。
下述情景提供RHI 131的线程管理部分的典型使用。假设特殊的主机应用132实现“纤维模式”执行。在纤维模式中,特殊的主机(如,SQL服务器)可以基于计算设备102上的处理器104的数量,或基于其他特定于主机的准则创建一定数量的线程。然后主机在这些运行用户代码(“其他程序模块”136的部分)的线程上创建纤维。主机以合作的方式调度这些纤维(以主机的术语称为非优先的)-当纤维由于某些操作而阻塞,那就“切换出”它且线程运行另一个纤维。稍后线程将被重新调度并执行-不一定在相同的线程上。当运行时间130通过主机支持API 134创建“任务”时,它最终生成主机132上的纤维并由主机的调度器所理解。
I/O完成抽象接口本节详述RHI 131的I/O完成管理部分,其中●主机132向运行时间130提供HAI 133来绑定I/O完成端口的句柄。
●主机132向运行时间130提供HAI 133来提供回叫。例如,在异步的I/O操作完成时由主机132调用的回叫。
●运行时间130向主机132提供RI 134以在传递给运行时间服务I/O例程的OVERLAPPED结构的最后插入定制数据。OVERLAPPED结构提供象数据一样的文件指针位置。
同步如果运行时间130通过HAI 133(即,通过主机应用132的控制)创建一个或多个任务,运行时间也将通过对应的HAI创建那些任务的同步对象。这确保主机不知到的情况下不对OS线程加锁。这允许运行时间130任务进一步和主机线程调度机制集成并允许主机执行死锁检测。在这一点,RHI 131的同步管理部分允许运行时间130通过HAI 133创建下面的同步(“sync”)基元关键部分、事件(手动和自动重置的)、旗语、读取器/写入器锁和监视器。
进入和离开运行时间的抽象接口运行管理的代码的线程可以离开运行时间130来运行未管理的代码。对离开运行时间130来运行未管理的代码的线程加的锁不会通过RHI 131,从而它们不能和主机应用132的线程及同步模型集成。因此,当线程进入或离开运行时间130、相应地进入/离开未管理的代码时,运行时间通过主机实现的回叫(由主机通过对应的RI 134向运行时间提供的回叫)通知主机应用。鉴于此,运行时间●通知主机132线程何时转换到运行时间130中及何时转换出运行时间130中。通过钩连离开和进入运行时间的调用来实现这样的通知,而不管代码是否已在运行时编译(JIT)情景下或在本地映象编译情景(如,ngen)下编译。在一个实施例中,通知包括被调用的例程的地址。
●允许主机132指定对未管理的代码的特殊函数调用且对应的运行时间重入不应由运行时间130对这样的通知进行钩连。这样的主机指定允许运行时间以优化的方式实现特殊的调用(如,内嵌实现调用)。主机可以使用此接口来跳过它们“知道的”调用(即,为主机自身的实现或紧密集成的功能的部分的调用)的钩连。
例如,这样的主机实现的回叫允许运行时间130发送“通知”(对钩连的调用)到主机132,通知主机由于特殊的线程已退出运行时间130到用户代码中,其行为不再可预测。响应这样的通知,主机132可以采取积极的步骤来确保特殊的线程不由主机132调度参与任何特定于主机的具体实现的非优先调度活动,直到该线程返回运行时间。
在一个实施例中,这样的钩连可以由主机132使用以调整处理器104的浮点状态。主机132也可以使用RI 134来指示一个或多个函数调用不能由运行时间钩连,例如,以在主机调用数据访问API时避免进行运行时间通知。
增强的运行时间主机支持的典型处理图2展示增强的运行时间主机支持的典型处理。为了便于说明,引用图1的特性来说明图2的操作。虽然图2展示操作204-212以特殊的编号顺序,这些相应的操作可以在逻辑上以任何顺序作为主机应用132的功能、运行时间130交互、执行环境的特性等等发生。
在块202,在主机应用132(图1)已加载运行时间130(图1)到进程中(即,启动时),运行时间130确定任何主机实现的执行环境抽象(即,主机支持的抽象)。为了说明,进程由RAM 110(图1)中相应的主机132和运行时间130组件表示。(特殊的抽象是否由主机支持对运行时间如何执行并不是至关重要的)。在一个实施例中,此操作由运行时间对有指示感兴趣的执行环境抽象的列表的暴露的HAI 133请求/调用来实现。这样的请求是作为图1的“程序数据”138的部分来表示的。响应于此请求/调用,主机向运行时间130提供一个或多个特定于抽象的接口(HAI 133中的相应API),通过此接口访问主机实现的执行环境抽象(如,存储器、线程、同步、I/O完成、策略和/或其他实现的抽象)。
在块204,响应于对有关哪个(如果有的话)执行环境抽象由主机应用132实现/支持的信息的运行时间请求,运行时间130接收对应于抽象的功能的HAI133的列表。这样的HAI可以引用对象和/或接口。在块206,运行时间可以通过一个或多个接收的HAI配置抽象的功能实现。
在块208,运行时间130向主机应用132通知一个或多个由运行时间暴露的运行时间接口134(RI)。在此实施例中,这样的通知响应于由主机应用132发送到运行时间130的请求。这样的通知和请求是作为图1的“程序数据”138的相应部分表示的。这样的RI允许主机通知运行时间特定的事件并/或在进程执行期间获取附加信息。在一个实施例中,RI为主机用来通知运行时间特定的事件或在进程执行期间获取附加信息的回叫。在块210,运行时间对应于任何主机应用配置请求、回叫请求、运行时间数据和/或其类似。
在块212,在管理的代码执行期并响应于一个或多个和主机应用抽象的功能关联的动作或事件,运行时间至少调用一个特定的接口或对应于特定的一个返回的HAI的对象。这样的动作和事件对应于,例如,存储器、线程/任务、I/O完成、同步、事件通知、垃圾收集(GC)的管理服务和/或其类似。
结论所述的系统和方法提供增强的运行时间主机支持。虽然所述系统和方法是以特定于结构特性和方法操作的语言说明的,在后附的权利要求中定义的主题并不限制于所述的特定特性或操作。相反,特定的特性和操作是作为实现权利要求主题的典型形式来揭示的。
权利要求
1.一种用于增强的运行时间主机支持的方法,其特征在于,所述方法包括识别由主机应用暴露的一个或多个主机抽象接口(HAI),所述一个或多个HAI对应于相应的由主机应用支持的执行环境抽象;在运行时间管理的代码执行期间及响应于和已识别的一个相应的执行环境抽象关联的动作或事件,由运行时间调用至少一个特定的接口或对应于特定的一个HAI的对象;及所述识别和调用的操作向主机应用提供主机应用可定制的运行时间主机支持环境。
2.如权利要求1所述的方法,其特征在于,所述一个或多个执行环境抽象对应于存储器、线程/任务、I/O完成、同步、运行时间进入/退出通知和/或垃圾收集(GC)的管理服务。
3.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定的接口或由主机应用实现的对象请求存储器分配。
4.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定的接口或对象发送来自OS的低存储器通知到主机应用;及/或由运行时间通过至少一个特定的接口或对象通知主机应用特殊的存储器分配失败的结果,并从而允许主机应用定制运行时间在存储器分配失败时应采取的动作。
5.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定的接口或由主机应用实现的对象创建新的线程/任务。
6.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或由主机应用实现的对象重用或共享任务的运行时间实现的部分。
7.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象或共享通知主机应用任务不能被移到不同的物理OS且在指定的时间窗口中不能阻塞该任务的执行。
8.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定对象或接口指示对主机应用的回叫以通知运行时间任务何时被移至可运行或不可运行的状态;及如果任务被移至不可运行状态,由运行时间通过至少一个特定接口或对象指定任务应尽快由主机应用重新调度。
9.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象使线程/任务在主机应用实现的线程共享池中排队;由运行时间通过至少一个特定接口或对象设置主机应用实现的线程共享池的大小;及/或由运行时间通过至少一个特定接口或对象查询主机应用实现的线程共享池。
10.如权利要求1所述的方法,其特征在于,所述调用进一步包括向主机应用提供回叫以通知运行时间任务已被移到不同的区域或为该任务改变区域;及/或由运行时间通过至少一个特定接口或对象通知主机应用任务已被移到不同的区域或为该任务改变区域。
11.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象延迟主机应用取消任务。
12.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象调整任务的优先级。
13.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要离开运行时间进入未管理的代码。
14.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要反向离开运行时间进入未管理的代码。
15.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要从未管理的代码进入运行时间。
16.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要从未管理的代码反向进入运行时间。
17.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象指定对一个或多个I/O完成端口上的服务请求可用的线程/任务的最大数量。
18.如权利要求1所述的方法,其特征在于,所述调用进一步包括由运行时间通过至少一个特定接口或对象绑定句柄到I/O完成端口或主机应用。
19.如权利要求1所述的方法,其特征在于,所述调用进一步包括向主机应用提供运行时间实现的回叫,所述运行时间实现的回叫在异步I/O操作完成时由主机应用调用。
20.如权利要求1所述的方法,其特征在于,所述调用进一步包括向主机应用提供运行时间实现的回叫,所述运行时间实现的回叫在异步I/O操作完成时由主机应用调用;及所述提供运行主机应用在由主机应用传递到运行时间实现的回叫的结构最后插入定制的数据,所述定制数据提供状态信息。
21.如权利要求1所述的方法,其特征在于所述调用进一步包括通过至少一个特定接口或对象产生任务;及所述方法进一步包括由运行时间通过至少一个特定接口或对象对该任务创建一个或多个同步对象以本质上确保主机应用知道对该应用所加的锁,所述一个或多个同步对象包括关键部分、手动和/或自动重置事件、旗语、读出器/写入器锁和/或任务监视器。
22.如权利要求1所述的方法,其特征在于,进一步包括由运行时间通知主机应用一个或多个由运行时间暴露的运行时间接口,所述运行时间接口允许主机通知运行时间特定的事件和/或在进程执行期间获取附加的信息。
23.一种用于增强的运行时间主机支持的计算机可读媒体,其特征在于,所述计算机可读媒体包括由处理器执行的计算机程序可执行指令,所述计算机程序可执行指令用于由运行时间请求主机应用来识别任何由主机应用支持的执行环境抽象;响应于请求,接收一个或多个主机抽象接口(HAI);及在运行时间管理的代码执行期间,由运行时间调用至少一个特定的接口或对应于特定的一个HAI的对象。
24.如权利要求23所述的计算机可读媒体,其特征在于,所述一个或多个执行环境抽象对应于主机实现的存储器、线程/任务、I/O完成、同步、运行时间进入/退出通知和/或垃圾收集(GC)功能。
25.如权利要求23所述的计算机可读媒体,其特征在于,所述用于确定的计算机可执行指令进一步包括由运行时间发送接口标识符(IID)到主机应用的指令,所述IID对应于特定于应用的接口。
26.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定的接口或对象发送来自OS的低存储器通知到主机应用的指令。
27.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定的接口或对象通知主机应用特殊的存储器分配失败的结果,并从而允许主机应用定制运行时间在存储器分配失败时应采取的动作的指令。
28.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定的接口或由主机应用实现的对象创建新的线程/任务的指令。
29.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或由主机应用实现的对象重用或共享任务的运行时间实现的部分的指令。
30.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象或共享通知主机应用任务不能被移到不同的物理OS且在指定的时间窗口中不能阻塞该任务的执行的指令。
31.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括指令用于由运行时间通过至少一个特定对象或接口指示对主机应用的回叫以通知运行时间任务何时被移至可运行或不可运行的状态;及如果任务被移至不可运行状态,由运行时间通过至少一个特定接口或对象指定任务应尽快由主机应用重新调度。
32.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括指令用于由运行时间通过至少一个特定接口或对象使线程/任务在主机应用实现的线程共享池中排队;由运行时间通过至少一个特定接口或对象设置主机应用实现的线程共享池的大小;及/或由运行时间通过至少一个特定接口或对象查询主机应用实现的线程共享池。
33.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括向主机应用提供回叫以通知运行时间任务已被移到不同的区域或为该任务改变区域的指令。
34.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象通知主机应用任务已被移到不同的区域的指令。
35.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象延迟主机应用取消任务的指令。
36.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象调整任务的优先级的指令。
37.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要离开运行时间进入未管理的代码的指令。
38.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要反向离开运行时间进入未管理的代码的指令。
39.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要从未管理的代码进入运行时间的指令。
40.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要从未管理的代码反向进入运行时间的指令。
41.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象指定对一个或多个I/O完成端口上的服务请求可用的线程/任务的最大数量的指令。
42.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括由运行时间通过至少一个特定接口或对象绑定句柄到I/O完成端口或主机应用的指令。
43.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括向主机应用提供运行时间实现的回叫,所述运行时间实现的回叫在异步I/O操作完成时由主机应用调用的指令。
44.如权利要求23所述的计算机可读媒体,其特征在于,所述用于调用的计算机可执行指令进一步包括指令用于向主机应用提供运行时间实现的回叫,所述运行时间实现的回叫在异步I/O操作完成时由主机应用调用;及所述提供运行主机应用在由主机应用传递到运行时间实现的回叫的结构最后插入定制的数据,所述定制数据提供状态信息。
45.如权利要求23所述的计算机可读媒体,其特征在于所述调用进一步包括通过至少一个特定接口或对象产生任务;及所述方法进一步包括由运行时间通过至少一个特定接口或对象对该任务创建一个或多个同步对象以本质上确保主机应用知道对该应用所加的锁,所述一个或多个同步对象包括关键部分、手动和/或自动重置事件、旗语、读出器/写入器锁和/或任务监视器。
46.如权利要求23所述的计算机可读媒体,其特征在于,进一步包括由运行时间通知主机应用一个或多个由运行时间暴露的运行时间接口,所述运行时间接口允许主机通知运行时间特定的事件和/或在进程执行期间获取附加的信息的指令。
47.一种用于增强的运行时间主机支持的计算设备,其特征在于,所述计算设备包括连接到如权利要求23所述的计算机可读媒体的处理器,所述处理器配置为执行存储在所述计算机可读媒体上的计算机程序指令。
48.一种用于增强的运行时间主机支持的计算设备,其特征在于,所述计算设备包括处理器;连接到所述处理器的存储器,所述存储器包括由处理器执行的计算机程序指令,所述计算机程序指令用于识别由主机应用暴露的一个或多个主机抽象接口(HAI),所述一个或多个HAI对应于相应的由主机应用支持的执行环境抽象;在运行时间管理的代码执行期间及响应于和已识别的一个相应的执行环境抽象关联的动作或事件,由运行时间调用至少一个特定的接口或对应于特定的一个HAI的对象;及所述一个或多个执行环境抽象对应于存储器、线程/任务、I/O完成、同步、运行时间进入/退出通知和/或垃圾收集(GC)的管理服务。
49.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机程序指令进一步包括由运行时间通过至少一个特定的接口或对象通知主机应用特殊的存储器分配失败的结果,并从而允许主机应用定制运行时间在存储器分配失败时应采取的动作的指令。
50.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机程序指令进一步包括由运行时间通过至少一个特定的接口或由主机应用实现的对象创建新的线程/任务的指令。
51.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机程序指令进一步包括由运行时间通过至少一个特定接口或由主机应用实现的对象重用或共享任务的运行时间实现的部分的指令。
52.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机程序指令进一步包括由运行时间通过至少一个特定接口或对象或共享通知主机应用任务不能被移到不同的物理OS且在指定的时间窗口中不能阻塞该任务的执行的指令。
53.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机可执行指令进一步包括指令用于由运行时间通过至少一个特定接口或对象使线程/任务在主机应用实现的线程共享池中排队;由运行时间通过至少一个特定接口或对象设置主机应用实现的线程共享池的大小;及/或由运行时间通过至少一个特定接口或对象查询主机应用实现的线程共享池。
54.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机可执行指令进一步包括指令用于由运行时间通过至少一个特定接口或对象延迟主机应用取消任务;及由运行时间通过至少一个特定接口或对象调整任务的优先级。
55.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机可执行指令进一步包括指令用于由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要离开运行时间进入未管理的代码;及由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要反向离开运行时间进入未管理的代码。
56.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机可执行指令进一步包括指令用于由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要从未管理的代码进入运行时间;及由运行时间通过至少一个特定接口或对象通知主机应用任务/线程要从未管理的代码反向进入运行时间。
57.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机可执行指令进一步包括指令用于由运行时间通过至少一个特定接口或对象绑定句柄到I/O完成端口或主机应用;及由运行时间通过至少一个特定接口或对象指定对一个或多个I/O完成端口上的服务请求可用的线程/任务的最大数量。
58.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机可执行指令进一步包括指令用于向主机应用提供运行时间实现的回叫,所述运行时间实现的回叫在异步I/O操作完成时由主机应用调用;及所述提供运行主机应用在由主机应用传递到运行时间实现的回叫的结构最后插入定制的数据,所述定制数据提供状态信息。
59.如权利要求48所述的计算设备,其特征在于,所述用于调用的计算机程序指令进一步包括通过至少一个特定接口或对象产生任务,且所述方法进一步包括由运行时间通过至少一个特定接口或对象对该任务创建一个或多个同步对象以本质上确保主机应用知道对该应用所加的锁,所述一个或多个同步对象包括关键部分、手动和/或自动重置事件、旗语、读出器/写入器锁和/或任务监视器的指令。
60.一种增强的运行时间主机支持的软件架构,其特征在于,所述软件架构包括应用;及运行时间,所述应用配置为支持所述运行时间;所述运行时间暴露运行时间应用编程接口(RI),所述RI允许应用向运行时间指示主机抽象接口(HAI),所述HAI识别应用抽象执行环境功能;及所述运行时间进一步配置为控制在进程执行过程中的动作和/或事件回到应用以通过HAI的一个或多个部分实现应用抽象执行环境功能。
全文摘要
将对增强的运行时间主机支持的系统和方法进行说明。在一个方面,运行时间识别由主机应用暴露的任何抽象接口。抽象接口对应于由主机应用实现的相应的执行环境功能。在运行时间管理的代码执行期间并响应于和识别出的相应的执行环境抽象关联的动作或事件,运行时间调用特定的接口或对应于一个特定的抽象接口的对象。这允许主机应用定制/增强其执行环境,将其作为所实现的抽象的功能来,所述执行环境包括运行时间。
文档编号G06F9/44GK1534457SQ20041003240
公开日2004年10月6日 申请日期2004年4月2日 优先权日2003年4月2日
发明者W·刘, S·J·普拉茨切纳, I·H·卡米克尔, P·A·卡林, C·W·布鲁姆, M·K·本迪克森, B·西斯金, W 刘, 卡林, 卡米克尔, 布鲁姆, 普拉茨切纳, 本迪克森, 菇 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1