CN102667714B - 支持访问由操作***环境外的资源提供的功能的方法和*** - Google Patents

支持访问由操作***环境外的资源提供的功能的方法和*** Download PDF

Info

Publication number
CN102667714B
CN102667714B CN200980162601.XA CN200980162601A CN102667714B CN 102667714 B CN102667714 B CN 102667714B CN 200980162601 A CN200980162601 A CN 200980162601A CN 102667714 B CN102667714 B CN 102667714B
Authority
CN
China
Prior art keywords
operating system
system environment
function
processing subsystem
memory area
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.)
Expired - Fee Related
Application number
CN200980162601.XA
Other languages
English (en)
Other versions
CN102667714A (zh
Inventor
约翰·拉尔斯通
安德利亚·阿夸维瓦
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.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
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 Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of CN102667714A publication Critical patent/CN102667714A/zh
Application granted granted Critical
Publication of CN102667714B publication Critical patent/CN102667714B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

一种用于支持访问由操作***环境外的资源提供的功能的方法(500),所述方法包括:接收对于由所述操作***环境外的资源提供的功能的调用(505);以及将功能参数从在接收的调用内复制到对于提供被调用功能的操作***环境外的资源可访问的存储器区域(520)。

Description

支持访问由操作***环境外的资源提供的功能的方法和***
技术领域
本发明领域涉及用于支持访问由操作***环境外的资源提供的功能的方法,以及其处理子***和处理***。
背景技术
诸如用户应用的计算机程序应用通常被写成在操作***(OS)环境中运行。此外,这些计算机程序应用通常利用例如OS及其基础软件层和硬件所提供的标准/公用功能,以执行标准/公用功能。通过由操作***使之可用的应用编程接口(API),这种标准功能通常对于计算机程序应用而言是可访问的,从而计算机程序应用仅向适当的API做出“功能调用”,用于访问需要的功能。
总的来说,计算机***包括单一处理器架构,或者将两个或多个相同处理器核心连接至单一共享主存储器并且在公共OS的实例下操作的对称多处理器(SMP)架构。因此,基本上,包括计算机核心的所有***资源在OS的控制下,或可借助其而访问。在接收到对于API的这种功能调用时,OS保留执行该调用功能所需要的资源,并且初始化该功能以执行。然后,OS将任何返回的参数等回传至调用该功能的计算机程序应用。
非对称多处理(ASMP)是多处理器***的已知可选方法,因此,并非所有处理器核心被视为相同的(即使它们物理上是相同的)。例如,一个处理器核心可以被指定为“主”处理器核心,而一个或多个其他处理器核心被指定为“从”处理器核心。OS可以通过与例如单一处理器架构类似的方式,在“主”处理器上运行,但可以将某些任务或功能指配为由一个或多个“从”处理器核心执行。通过这种方式,重复的或耗时的任务可以被OS“外包”给从处理器核心,从而解放了主处理器核心以执行其他任务。此外,时间关键的任务可以被指配给从处理器核心,其能够不间断地执行该任务,或者需要复杂计算的任务可以被指配给从处理器器核心,其包含专用硬件,以比仅在软件中执行更有效率地执行这种复杂计算。
值得注意的是,从处理器核心资源处于OS的直接控制之外(在功能性和/或物理含义上)。结果,为了应用访问外包的功能,OS与软件通信是必要的,诸如在从处理器核心上运行的监督程序。典型的是,与单一***的处理器核心相反,通过将两个处理器核心视为如同它们是分离的联网的计算设备,并且使用标准通信方法,可以实现这种通信,其中,所述标准通信方法例如是基于伯克利套接字API的套接字API方式。
这种支持在ASMP处理器核心之间通信的已知方法的问题是,这种通信机制旨在支持跨网络通信等,而非在相同处理***内的处理器核心之间的通信。结果,这种连接的建立,例如,通过每个处理器核心建立套接字,是比较繁琐的。此外,在这种通信机制中使用的特征,诸如例外处理,当仅在相同处理***中的处理器核心之间通信时,是非必要的,因此,支持这些特征大大降低了通信机制的效率。
当实施非对称多处理时遇到的进一步问题是,多年以来,对称多处理已经成为多处理器架构的主导方式。因此,计算机程序应用通常被写成在单一处理器架构或SMP架构上运行,从而所有***资源在OS控制下。此外,计算机程序应用很少被写成不需要解释,或使用传统代码段、示例代码段等。为了避免需要重写已经存在的计算机程序应用,可取的是,能够在ASMP***上使用已经为SMP***编写的计算机程序应用。然而,识别与待由在OS控制以外的硬件(例如,从处理器核心)执行的功能相关的现有应用代码的那些部分,从而需要根据使用的通信方式进行修改,是极其困难的,因为对于这种代码的具体了解可能是不可实现的。
发明内容
本发明提供如随附的权利要求中所描述的、用于支持访问由操作***环境外的资源提供的功能的方法,处理子***、包括处理子***的处理***、和计算机程序产品。
本发明的具体实施例在从属权利要求中阐述。
本发明的这些和其他方面将从下文描述的实施例中显而易见,或者参考这些实施例而得到阐明。
附图说明
参考附图,仅通过示例的方式,将描述本发明的进一步细节、方面和实施例。在附图中,相同参考符号用于识别相同或功能相似元件。为了简洁明了,附图中的元件被示出,但是没有必要按比例画出。
图1示出了处理***的简化示例。
图2和图3示出了通过图1的操作***环境外的资源提供的功能的示例。
图4示出了主操作***缓冲池的部分的示例。
图5和图6示出了用于支持访问通过操作***环境外的资源提供的功能的方法的简化流程图的示例。
图7和图8示出了用于支持访问通过操作***环境外的资源提供的功能的方法的简化流程图的可选示例。
图9至图11示出了建立应用程序代码的方法的示例。
图12示出了典型计算***。
具体实施方式
例如,在此参考支持访问操作***环境外所提供/处于其外的加速器功能,来描述本发明。然而,应该明白的是,本发明的概念不限于支持访问加速器功能,并且可以实现为支持访问通过操作***环境外的资源而提供的任何功能。
因为使用本领域的技术人员已知的电子组件和电路,在极大程度上可以实施本发明的被示出的实施例,所以不会以比下文认为必需示出的更深程度来解释详细说明,以便理解和领会本发明的基础概念,并且以便不模糊和分散本发明的教导。
参考图1,示出了处理***100的简化示例,处理***100包括设置成在操作***环境105中操作的第一处理子***110,以及设置成基本在操作***环境105的外部操作的至少又一个(第二)处理子***120。
用于示出的示例的第一处理子***110包括处理器核心112的形式的一个或多个处理模块。将主操作***的实例设置成在处理器核心112上执行,以便主操作***将用于每个处理器核心112的公共编码区域101、公共数据区域102、和局部数据区域103提供给第一处理子***120。用于示出的示例的至少另一(第二)处理子***120包括处理器核心122的形式的一个或多个处理模块。在一个示例中,监督程序的实例可以被设置成在第二处理子***120的处理器核心122上执行,以便向第二处理子***提供有用于每个处理器核心122的公共核心区域106、公共数据区域107、以及局域数据区域108。处理***100还可以包括位于操作***环境105内并且可访问至少另一(第二)处理子***和120的存储器区域,其示例性示例是处于以操作***缓冲池130的形式。
对于示例性实例,第一处理子***110可以包括对称性多处理器(SMP)构架,对称性多处理器架构包括多个处理核心112。相反地,第二处理子***120可以包括非对称性多处理器(ASMP)构架,非对称性多处理器构架包括一个或多个处理核心122。以该方式,处理***100可以包括混合SMP和ASMP构架。
此外,在示出示例时,第一和第二处理子***110、120的每个包括处理器核心112、122的形式的多个处理模块,在一些示例中,处理子***可以包括一个或多个处理模块,处理模块包括任何合适的硬件配置。例如,处理子***可以包括一个或多个中央处理单元(CPU)。可选地,处理子***可以包括一个或者多个专用处理硬件元件,诸如设置成执行一个或多个专用功能的数字信号处理器(DSP)或微处理器。还可选地,处理子***可以包括处理元件的组合,诸如一个或多个CPU和一个或多个专用DSP/微控制器的组合。因此,关于在此使用的处理模块可以涉及诸如CPU、DSP等的用于处理信号的任何合适硬件配置。
根据本发明的第一方面的一些示例,针对被示出的示例包括处理核心112的第一处理子***110的一个或多个处理模块被设置成执行主运行时刻程序代码116,主运行时刻程序代码116被设置以从应用114接收对例如通过处理子***120的由操作***环境105外的资源提供的功能的调用。在接收这种调用之后,(例如使用主运行时刻程序代码116)的第一处理子***110被设置成将来自被接收的调用内的功能参数复制到可访问提供被调用功能的操作***环境105外的资源的存储器区域,例如,复制到操作***缓冲池130内的存储器区域。对于示出的示例,主运行时刻程序代码116可以包括主加速器运行时刻(HART)接口,主加速器运行时刻接口被设置成支持访问操作***环境105外的资源提供的加速器功能。
根据本发明的第二方面的一些示例,针对被示出的示例包括处理核心122的第二处理子***120的一个或多个处理模块被设置成执行辅助运行时刻程序代码126,辅助运行时刻程序代码126被设置成接收指示,该指示是需要执行通过第二处理子***120提供的功能。在接收这种指示之后,第二处理子***120(例如,通过执行辅助运行时刻程序代码126)被设置成从操作***环境105内的存储器区域检索功能参数,例如从操作***缓冲池130内的存储器区域中;并且设置成利用被检索的功能参数建立用于所需功能的功能调用。对于示出的示例,辅助运行时刻程序代码126可以包括加速器运行时刻(ART)接口,加速器运行时刻接口被配置成支持访问第二处理子***120提供的加速器功能。
图2示出了操作***环境105外的资源提供的功能的示例,例如,通过诸如应用114而访问的第二处理子***120所提供的。用于所述功能的调用214***作***环境中存在的主接口运行时刻程序116接收,其选择用于提供调用功能的资源,例如处理核心122中的一个空闲的处理核心122,并且在选择用于提供调用功能的资源时,将功能参数复制到选定的资源可访问的存储器区域中,并且将由此提供的功能需要被执行的指示发送到用于选择资源的辅助接口运行时刻程序126。可选地,主接口运行时刻程序116可以简单地将功能参数复制到可以访问被选择的资源的存储器区域,并且根据辅助接口运行程序126,以检测其中功能参数的存在。
以该种方式,在从主接口运行时刻程序116接收这种指示之后,或者检测在存储器区域内的功能参数之后,辅助接口运行时刻程序126能够从存储器区域简单地检索功能参数,并且能够利用被检索的功能参数建立用于所需要的功能的功能调用。显著地,在操作***环境中的应用,或者即使操作***本身,在不需要建立诸如通过常规***所需要的套接口API的方式的、繁琐(cumbersome)的通信连接的情形下,能够访问操作***环境的外部提供的功能。此外,基本避免在诸如例外处理等的这种常规通信机制中使用的不必要的特征。
因此,提供了一种支持访问操作***环境外的资源提供的功能的更加简单有效的机制。此外,提供了操作***环境内的存储器区域的使用,该存储器区域通过操作***环境外的资源可被访问,以便在处理子***之间传递功能参数。以该种方式,可以缓减对于没有必要作为内部处理通信的一部分而被复制和传输的这种参数的需要,从而进一步提高通过操作***环境外的资源所提供的访问功能的效率。
如图2中示出的示例,在选择提供调用功能的这种资源之前,可以将主接口运行时刻程序116设置成等待资源以变成空闲(例如,针对处理核心122之一变成空闲)。以该种方式,以处理核心等级可以执行资源调度,从而提供资源调度的基本粗粒度。在一个示例中,主运行时刻程序代码(HART)116通过保持空闲的处理核心122的踪迹,或者通过将调用记录(log)到处理核心122、或来自处理核心122的一个或多个返回的方式,可以实现这种资源调度。
图3示出了通过操作***环境105外的资源提供的、例如通过诸如应用114访问的第二处理子***120提供的功能的可选示例。通过设置在操作***环境中的主接口运行时刻程序116,可以接收用于所述功能的调用214。如图3中示出的示例,基于用于各种处理核心的性能信息,主接口运行时刻可以选择用于提供被调用的功能的资源,例如,最小负载的处理核心、或者能够处理整个功能性能要求的处理核心122。
例如,每个处理核心122可以包括在其上执行的性能监控器程序代码310(或逻辑),例如,作为辅助接口运行时刻程序126的部分,其将运行时刻性能数据提供给主接口运行时刻程序116。随后,主接口运行时刻程序116可以使用集合的核心性能数据320,以确定处理核心122的相应负荷,并且选择具有最少负荷的处理核心,以提供被调用的功能。以该种方式,主接口运行时刻程序116能够提供操作***环境105外的资源的动态运行时刻平衡。
可选地,为了避免提供运行时刻性能数据的这种性能监控器310的干扰性,在一个示例中,例如通过从基准(benchmarks)计算或简单推断,预先运行时刻可以生成剖析数据(profiling data)。以该种方式,不需要从处理核心122反馈,但是需要定时数据等,以便通过处理核心122正执行的任何特定功能根据预先生成的剖析数据可以访问主接口运行时刻程序116。
现参考图4,示出了图1的主操作***缓冲池130的部分的示例。对于示出的示例,通常通过ART-Comms-Buffer-Area 410示出的OS缓冲池130的第一区域被分配以由主运行时刻程序116使用,以便将数据传输到辅助运行时刻程序126或从辅助运行时刻程序126传输数据。以该种方式,通过简单地将数据复印到存储器ART-Comms-Buffer-Area410的这个分配区域,主运行时刻程序116和辅助运行时刻程序126彼此之间能够传输诸如功能参数、返回参数等的数据。在该示例中,这避免了通过诸如使用套接口API等的多个常规通信机制的方式来传输这种数据的需要。
图4也示出了通常通过Host_OS_fake_Ethernet_Buffer_Area 420示出的OS缓冲池130的又一区域。OS缓冲池130的该区域被分配,以提供用于操作***环境105外的资源的缓冲空间,诸如处理子***120,其对于主操作***和操作***环境外的资源是公共的。
现参考图5,示出了诸如图1的主运行时刻程序(HART)116可以实现的、根据本发明的一个方面的一些实施例的支持访问通过操作***环境外的资源提供的功能的简化流程图500的示例。
该方法在步骤505开始,以接收对于用于主操作***环境外的资源提供的功能的主运行时刻接口的调用。根据一些示例,随后该方法可以包括在步骤510中确定提供调用功能的操作***环境外的资源是否空闲。如果没有这种资源空闲/可用,则该方法移至步骤515,并且在返回到步骤510之前等待一段时间,以便确定任何资源是否已变成空闲/可用的。一旦提供调用功能的操作***环境外的资源是空闲/可用的,则该方法移到步骤520。
根据一些可选实施例,如虚线中示出的部分流程图大致指示地,在步骤505中,在接收对于用于通过主操作***环境外的资源提供的功能的主运行时刻接口的调用之后,该方法可以反而包括诸如基于使得运行时刻因此平衡的操作***环境外的资源的性能数据,而可以执行动态资源分配517。在接收这种动态资源分配之后,随后该方法移至步骤520。
在步骤520中,将针对主运行时刻接口的被接收调用中提供的功能参数与用于识别需要被执行的特定功能的功能标识符,一起复制到能够访问提供调用功能的主操作***环境外的资源的存储器区域(例如,图4的ART_Comms_Buffer_Area 410)。对于示出的示例,在存储器区域内的功能标识符和功能参数的存在随后被通过信号通知到提供调用功能的操作***环境外的资源。尤其对于示出的示例而言,在存储器区域中的功能标识符和功能参数的存在被通过信号通知到在操作***环境外部的至少一个处理模块上执行的辅助运行时刻接口,诸如图1的第二处理子***120的ART 126,如步骤525所示。对于示出的示例,通过到图1的ART 126的中断的方式,可以通过信号通知功能标识符和功能参数的存在,如步骤530所示。
在确定是否有必要等待功能返回之前,随后在535更新用于操作***环境的外部提供/位于其外部的资源的集中资源表,如步骤540中所示。例如,可以使用功能标识符,以查找对于特定功能调用而言是否需要功能返回。如果不需要功能返回,该方法需要移到步骤545,并且该方法以RETURN_OK指示结束。相反地,如果需要功能返回,该方法移到步骤550,并且睡眠直至从操作***环境外的资源接收返回。
接收在可访问操作***环境外的资源的存储器区域内(例如:图4的ART_Comms_Buffer_Area 410)的返回参数存在的指示之后,其中,对于示出的实施例而言,包括来自操作***环境外的资源的辅助运行时刻接口的中断555,诸如图1的第二处理子***120的ART126,则该方法移至其中从所述存储器区域(例如:图4的ART_Comms_Buffer_Area 410)接收返回参数的步骤560。随后在步骤565更新集中资源表,并且在步骤570建立包括检索返回参数的返回功能。随后通过在步骤575将包括检索返回参数的返回功能返回,该方法结束。
现参考图6,示出了诸如通过图1的辅助运行时刻程序(ART)126可以实现的、根据本发明的另一方面的一些示例的用于支持访问通过操作***环境外的资源提供的功能的被简化流程图600的示例。
该方法在步骤605开始,以接收诸如图1的第二子***120提供的功能的、操作***环境的这种外部资源提供的功能所需要的指示。这种指示可以包括从操作***环境内的处理子***的中断,例如,即从图1的主运行时刻程序(HART)116发送的终端。可选地,通过操作***环境的这种外部资源提供的功能所需要的这种指示可以包括轮询主操作***的缓冲描述符,并且识别主操作***的缓冲区描述符环内的缓冲区描述符,其中,主操作***的缓冲区描述符环与用于由位于操作***缓冲池中的这种资源提供的功能的功能参数相关。
在接收这种指示之后,该方法移至步骤610,在步骤610中从操作***环境内的存储器区域(例如,图4的ART_Comms_Buffer_Area410)检索功能参数和用于所要求的功能的功能标识符,其中,处理子***驻留在操作***环境外部。在已经检索功能参数之后,使用在步骤615中检索的功能参数和功能标识符来建立功能调用,针对示出的示例,随后将其发送到用于执行所需要功能的加速器代码,如通常620和625所述。在随后接收返回功能630之后,在635将返回参数从接收的返回功能复制到操作***环境内的存储区域(例如:ART_Comms_Buffer_Area 410),其中,处理子***驻留在操作***环境外部。随后将操作***环境(例如,图4的ART_Comms_Buffer_Area410)内的存储器区域内返回参数的存在通过诸如图1的对主运行时刻程序(HART)116的中断645的方式,被指示到操作***环境内的处理子***。随后该方法在步骤650结束。
如参考图5和图6的上文所述,在不需要建立繁琐通信机制的需要的情形下,并且在不需要在处理子***之间传输功能参数和其他数据的情形下,通过诸如在操作***环境内运行的一个或多个应用,或者通过其操作***,可以访问操作***环境外的资源提供的功能。替代地,在可以访问操作***环境外的资源的操作***环境内的存储器被用于交换这种参数和数据,从而显著地简化和提高访问这种功能的有效性。
针对图5和图6中示出的示例,操作***环境外的资源提供的功能被简化成包括自组服务,从而当需要时调用这种功能,并且在所需要的服务或功能完成之后,被调用的功能返回并且被停止。然而,在一个示例中,操作***环境外的资源提供的功能不需要被限制为自组服务和功能。例如,这种功能可以包括如下的服务或功能,其一旦被初始化则基本上持续运行,并且从而在数据接收之后提供服务或功能。
根据一些可选示例,在诸如图1的HART 116的操作***环境内运行的运行时刻程序代码可以被设置成,在接收将被传送到操作***环境外部的处理子***的数据存在的指示之后,利用用于映射到操作***环境的外部目的地对象的存储空间的存储器区域的指针,交换用于映射到操作***环境内的源对象的存储空间的存储器区域的标识符。
此外,并且根据又一些可选示例,在诸如ART的操作***环境外部的处理子***内运行的运行程序代码可以被设置成,在接收到将传送到操作***环境内的对象的数据的存在的指示之后,其中,所述对象例如是操作***环境内或其操作***运行的任务或应用,则将映射到操作***环境外部的源对象的存储空间的存储器区域的指针与映射到操作***环境内的目的地对象的存储空间的存储器区域的指针做交换。
现参考图7和图8,示出了诸如通过图1的主运行时刻程序(HART)116和辅助运行时刻程序(ART)126实施的、根据本发明的一些实施例的用于支持访问操作***环境外的资源提供的该种数据路径功能的方法的简化流程图700、800的示例。尤其是对于示出的示例而言,通过操作***环境外部的处理子***120提供的功能包括提供以太网服务,从而通过诸如应用114或OS本身来将待传输的数据分组放置到存储器区域中,并且随后对HART 116进行调用,以通过以太网连接(未示出)影响数据分组的传输。例如,又参考回图4,示出了通过处理子***120可访问的OS缓冲池130的部分内的存储器430的Host_OS_ART_Ethernet_Buffer区域,并且其可以被映射到操作***环境内运行的应用114的存储空间。以该种方式,可以将存储器430的Host_OS_ART_Ethernet_Buffer区域使用为用于将要被传输和/或接收的数据分组的缓冲器。
图7的方法在705开始,从而以例如从诸如应用114或从OS本身接收到其调用的方式,由HART 116接收数据分组将需要被传输的指示。该方法随后移至步骤710,在步骤710中,根据OS怎么处理用于以太网操作的缓冲描述符,HART116可以从主OS缓冲区描述符环(主OS BD环)获取与其中存储将被传输的数据分组的存储器区域相对应的缓冲区描述符,或者仅获得缓冲区描述符的指针。针对示出的示例,其中存储将被传输的数据分组的存储器区域(并且因此其与缓冲区描述符相关)包括存储器430的Host_OS_ART_Ethernet_Buffe区域。
接下来,在步骤720中,诸如大致通过图1中的功能124示出的,用于处理子***120(ART_Ethernet_Process)内的以太网处理的功能标识符和任何需要的功能参数(包括获取的主OS缓冲器描述符或主OS缓冲器描述符指针),可以被加载到图4的ART_Comms缓冲区410中,并且在步骤725中随后将它们的存在通过信号通知到ART126。针对示出的示例,通过将中断信号通知到图1的ART 126的方式可以实现,如730中所示。
在通过ART 126接收指示图4的ART_Comms缓冲区410内的功能标识符和参数存在的中断730之后,如步骤735所示,该方法移至步骤740,在步骤740中,ART 126从ART_Comms缓冲区域410检索功能参数(包括获取的主OS缓冲描述符或主OS缓冲描述符指针)和功能ID。接下来,在步骤742中,针对示例性示例,使用获取的主OS缓冲器描述符或主OS缓冲器描述符指针,可以更新与图4的存储器420的Host_OS_fake_Ethernet_Buffer区域相对应的处理子***120的缓冲器描述符环(称为“ART BD环”)内的缓冲器描述符。因此,以该种方式,映射到操作***环境内源对象的存储空间的图4的存储器430的Host_OS_ART_Ethernet_Buffer区域的指针被有效地与被映射到操作***环境外部的目的地对象的存储空间的存储器420的Host_OS_fake_Ethernet_Buffer区域的指针进行交换。
接着缓冲器描述符指针的这种交换,用于ART BD环内的Host_OS_fake_Ethernet_Buffer缓冲器描述符420的指针现将指向其中数据分组已被放置的存储器的物理区域。实际上,在没有实际需要将数据分组本身从一个物理存储位置复制或传输至另一个的情形下,已经将数据分组重新安置到Host_OS_fake_Ethernet_Buffer 420。
随后,该方法移至步骤745,其中图1的ART 126使用被检索的功能标识符和参数,以对以太网控制器(未示出)建立调用,并且在步骤750上发送该调用。随后将该方法在步骤755结束。虽然未示出,其中在步骤710至735中,仅在HART 116和ART 126之间传送主OS缓冲器描述符的指针(相对于主OS缓冲器描述符本身),该方法还可以包括将返回状态提供返回到OS或初始化传输的应用。
图8的方法在步骤805开始,以接收需要提供至操作***环境105的应用、或至操作***本身的处理子***120内的数据分组。尤其是针对示出的示例而言,步骤805包括通过以太网控制器(未示出)通过以太网连接来接收数据分组。接下来,在步骤810中,对于示出的示例,调用辅助运行时刻接口(ART)216的缓冲管理器(ART_buf_Mgr),以获取访问图4的Host_OS_fake_Ethernet_Buffer区域420。在获取访问Host_OS_fake_Ethernet_Buffer区域420之后,在步骤815,将接收的数据分组复制到缓冲器,并且更新图1的处理子***120的缓冲器描述符环(ART BD环)内的Host_OS_fake_Ethernet_Buffer区域420的相对应缓冲器描述符,并且在步骤820中标记处理子***120内运行的ART的以太网处理(ART_Ethernet_Process),以指示已经接收分组。接下来,在步骤825中,ART_Ethernet_Process确定接收数据分组的目的地,并且执行接收数据分组的任何需要的处理。例如,其可以确定被接收的数据分组是否要:
i)被传递到用于主操作***的主操作***,以进行操作;或者
ii)处理到这样的点,以便其随后可以被传递到在主操作***环境中运行的任务/应用
已经确定接收的分组的目的地之后,该方法移到步骤830,在步骤830中,根据OS怎么处理以太网操作的缓冲器指针,ART_Ethernet_Process可以从ART缓冲器描述符环(ART BD环)获取与其中数据分组被存储的存储器区域相对应的缓冲区描述符,或者仅获取对于缓冲区描述符的指针。对于示出的示例,其中数据分组被存储的存储器区域(并且因此其与缓冲区描述符相关)包括存储器420的Host_OS_fake_Ethernet_Buffe区域。
接下来,在步骤840中,ART_Ethernet_Process将返回参数(包括ART缓冲器描述符或仅仅其的指针)加载到存储器区域410的ART_Comms_Buffer区域,并且在步骤850中,例如通过中断855的方式,将存储器区域410的ART_Comms_Buffer区域中的返回参数的存在通过信号通知到HART。随后该方法在步骤860中结束。
在中断855接收之后,HART随后可以从ART_Comms buffer区域410检索功能参数(包括被获取的ART缓冲器描述符或ART缓冲器描述符指针),并且对于示出的示例,使用获取的ART缓冲器描述符或ART缓冲器描述符指针来更新在与存储器430的Host_OS_ART_Ethernet_Buffer区域相对应的主OS的缓冲器描述符环(主OS BD环)内的缓冲器描述符。因此,以该种方式,用于映射到操作***环境外部的源对象的存储空间的存储器420的Host_OS_fake_Ethernet_Buffer区域的指针被有效地与用于被映射到操作***环境内的目的地对象的存储空间的存储器430的Host_OS_ART_Ethernet_Buffer区域的指针进行交换。
接着缓冲器描述符指针的这种交换,用于主OS BD环内的Host_OS_ART_Ethernet_Buffer缓冲器描述符430的指针现将指向其中数据分组已被放置的存储器的物理区域。实际上,在没有实际需要将数据分组本身从一个物理存储位置复制或传输至另一个的情形下,已经将数据分组重新安置到Host_OS_ART_Ethernet_Buffer 430。HART116于是可以执行与图5的步骤560至575相似的步骤,其中,例如在数据分组的目的地是应用114的情况下,HART发送功能返回至应用114,以通知应用114在Host_OS_ART_Ethernet缓冲区域430中存在数据分组。以与图7的方法相同的方式,存储器430的Host_OS_ART_Ethernet_Buffer区域可以被映射到应用114的存储空间,以便在从HART接收功能返回之后,应用114能够从其中检索数据分组。
以这种方式,通过操作***环境的外部处理子***提供的功能将被应用到的数据,其中,针对示出的示例而言其包括数据分组,不需要在处理和子***之间传输。相反,通过将数据存储到数据缓冲器区域,其中,数据缓冲器区域被映射到需要功能的操作***环境内的应用的存储空间和用于通过操作***环境外部处理子***提供的功能的存储空间这两者上,仅需要将缓冲器描述符指针如上所述操作,并且在图7中示出的示例的情形下,以便在主操作***缓冲器描述符环和提供需要功能的处理子***的缓冲器描述符环之间复制缓冲描述符。
此外,通常是以下的情况,其中,OS分配用于将在任务之间,诸如在应用114和HART116之间传送的参数的存储器区域。通常,在返回到调用任务之后,通过OS可以再生(reclaim)存储器的该区域。通过交换缓冲器描述符点,如上所述,将缓冲器内的数据和参数有效地传输到另一缓冲器。结果,如果在通过操作***环境外的资源(例如,ART)使用数据和参数之前进行对于调用任务的返回,在指针交换之后,通过OS再生的存储器区域将是相应的缓冲器描述符所指向的区域。因此,OS将再生存储器区域,而不是包含数据和参数的存储器区域。因此,将不丢失数据和参数,并且不需要为了此种丢失而被复制。
当图7和图8中示出的示例与通过以太网连接而传输和接收的数据分组的传送相关时,这些示例可以等同地应用到数据路径的其他形式。通过示例的方式,通过操作***环境外的资源提供的数据路径功能可以包括与传输层数据(例如,层1、层2和层3等)相关的数据路径。
此外,对于图7和图8中示出的示例,将用于映射到源对象的存储空间的缓冲器的指针与映射到目的地对象的存储空间的缓冲器的指针的交换的步骤包括交换缓冲器描述符指针。然而,需要考虑的是,其中诸如消息列队的、用于存储器的参考区域的可选机制被使用,以相似的方式可以交换这些机制中使用的这些指针。
现参考图9,根据本发明的另一方面的一些实施例,示出了用于建立应用程序代码的方法的示例。针对示例性实例,应用源代码910包括与通过操作***环境外的资源提供的功能相关的程序代码912、914的两个段。与通过操作***环境外的资源提供的功能相关的这种程序代码912、914被识别,并且其被从初始源代码910中提取,以及由包括用于取代功能的主接口运行时刻代码的调用的取代代码920所取代,将在操作***环境中执行所述主接口运行时刻代码。具体而言,针对示例性示例,与第一功能相关的程序代码912由包括用于第一功能的主接口运行时刻代码的调用的代替代码922所取代,并且与第二功能相关的程序代码914由包括用于第二功能的主接口运行时刻代码的调用的代替代码924所取代。
随后被提取的程序代码912、914被放置到一个或多个库中,一个或多个库利用将通过操作***环境的外部处理子***执行的辅助运行时刻代码而被编译。此外,建立类型识别表和功能调用表,以允许这些功能被调用并且允许在运行时刻接口之间传送功能参数和返回值,如通常在930所示。
现参考图10,示出了用于建立如图9中所示的应用程序代码的方法的简化流程图1000的示例。该方法在步骤1005开始,并且移到步骤1010,在步骤1010中程序代码被加载。接下来,在步骤105中,用于能够加速的代码和目标***配置信息的一个或多个定义被加载。接下来,在步骤1020中,使用被加载的定义,确定被加载的程序代码是否包括基于被加载的定义而能够被加速的代码。例如,程序代码可以包括程序类型标识符,或利用定义这些标识符的加载定义,可以指定能够被加速的代码的特定识别段。可选地,加载定义可以简单地定义与能够被加速的代码的段相关的功能名称等。如果确定加载的程序代码不包括能够被加速的代码,则该方法移到步骤1055,在步骤1055中,该程序代码被编译,以在操作***下执行,并且该方法在步骤1060结束。
然而,参考回步骤1020,如果确定加载的程序代码包括能够被加速的代码,针对能够被加速的代码的每个被识别的段,基于被加载的目标***配置信息,确定目标***是否配置成加速这种代码。如果确定该目标***不配置成加速代码的段,该方法移动到用于代码的段的步骤1055。
然而,针对能够被加速的代码的每个段和针对目标***被配置成加速,该方法移到步骤1030,在步骤1030中,为将被加速的代码的段,建立用于功能参数和返回参数的定义类型表。接下来,在步骤1035中,从程序代码中提取将被加速的代码的段,并且将其放置在利用在操作***环境的外部将被执行的辅助运行时刻接口来编译的库中。随后,在步骤1040中,为辅助运行时刻接口建立功能调用表。随后利用将在操作***环境内执行的主运行时刻接口的调用的代码,在程序代码中取代被提取的代码,如步骤1045中所述。例如,可以利用基于用于调用至主运行时刻接口内的恰当模块的代码,来取代被提取的代码。随后建立用于提取代码的参数大小和参数大小表,如步骤1050中所示。一旦对于能够被加速的代码的每个段而言,步骤1025至1050已经完成,则方法继续移动到步骤1055,其中,包括代码的取代的段的程序代码被编译,以在操作***下执行,并且该方法在步骤1060结束。
以该种方式,可以将应用程序代码编译,以诸如基于定义和目标***配置信息,在单一处理器/SMP上或图1中示出的混合S MP/ASMP上运行。具体而言,与操作***环境外的资源提供的功能相关的代码的段可以从程序代码自动地提取;可以被放置在将与外部资源的辅助运行时刻接口链接的库内;并且以主运行时刻接口的调用被取代。以该种方式,可以将功能的ASMP加速自动地链接到应用程序代码。
图11示出了图9和图10的方法可以形成其部分的应用程序建立处理1100的示例。建立处理开始,以向编译器110提供程序资源代码,大致如1102所述。编译器1110基于编译定义1105可以识别在程序源代码内的代码段,其提取并且被放置在将利用辅助运行时刻接口而被编译的一个或多个库1116中,诸如图1的ART 216。编译器1110也建立用于辅助运行接口的功能调用和类型定义表1112,1114,其被用于使得被提取的功能将被调用,并且用于在诸如图1的HART 116的主运行时刻接口、和辅助运行时刻接口、以及参数大小表1118之间传送功能参数和返回值。编译器1110使用在功能调用表内提供的功能标识符,以到主运行时刻接口内的调用来取代被提取的代码段,并且在编译器1110利用在功能调用表内提供的功能标识符,以进入主运行时刻接口的调用,替换提取的代码段,并且将修改的程序代码传输至建立器1120。
建立器120建立主运行时刻接口功能表1124、主运行时刻接口驱动器文件1126、和初始化文件1128,以及辅助运行时刻接口初始化文件1125。以该种方式,在HART侧,建立器1120提供由HART使用的所有表(尤其是从应用侧的调用结构),建立OS初始化和***初始化所需要的任何表格(此将包括图4中示出的缓冲区域410、420、430的初始化),并且提供用于链接程序的命令,以包括HART和诸如支持HART需要的程序元素的任何其他库元素(例如,驱动器、ART对象等)。在一个示例中,可以将ART对象加载器建立成HART,从而允许ART和提取的代码在初始化时或在运行时刻中动态地被加载到例如辅助处理核心上。如果操作***不允许这种动态加载,则随后通过整体***初始化处理可以加载ART和被提取的代码对象。
反之,在ART侧,针对每个ART,建立器1120建立ART需要的表,利用用于ART环境的正确方法将所有提取的代码放置到库中,并且建立链接命令,以允许将被加载进入到例如,辅助处理核心的整个图像建立。在一个示例中,可能存有用于每个ART的两个(或更多)最终对象代码模块。第一个是在包括ART和提取的代码的***的初始化处被加载的一个。第二个可以是通过其本身提取的代码。第二种方法允许在ART中可用模块的动态运行时刻更新。该功能通过HAR和ART默认模块满足。
随后可以编译被修正的程序代码,以在主操作***下的目标***上运行。
在一个示例中,用于在操作***环境内运行诸如图1的应用114的应用,并且将诸如图4的Host_OS_fake_Ethernet缓冲区域420的存储器区域映射至其上的虚拟地址空间与在诸如图1的处理子***120的、操作***环境的外部处理子***内将存储器区域映射至其上的虚拟地址空间不同。在该种情形下,有必要在处理子***120内校正指针等,其中,指针等例如从应用114传送至处理子***120。用于实现这一点的方法可以是使得建立器1120将转化(translation)例行程序***在ART调用和返回例行程序中,或者***到提取的代码116本身中。
大体上在1132、1134和1136示出的各种主运行时刻接口文件与用于辅助运行时刻接口的功能调用和类型定义表1112,1114、以及主运行时刻接口功能表1124、主运行时刻接口驱动器文件1126、和初始化文件1128一起被链接,如大体在1130所示。相似地,大体在1142、1144和1146处示出的各种辅助运行时刻接口文件与用于辅助运行时刻接口的功能调用和类型定义表1112、1114、包含代码1116的被提取段的库、以及辅助运行时刻接口初始化文件1125一起被链接。对象建立器1150随后可以建立用于主运行时刻接口和辅助运行时刻接口的对象代码文件,通常如1155所示。
以其最基本形式,在OS、一个或多个应用、HART接口、以及一个或多个ART接口的四种元件的任何之一内可以实施本发明的各种方面的示例。在一个示例中,可以将HART和ART配置成仅具有默认功能可用,例如,至/从ART通信的HART;添加功能;删除功能;开始功能;停止功能。由于不同***可以包括与物理硬件和OS相关联的引导的其自己特定方法,所以将使用根据本发明的方面的示例而采用的元件的引导/初始化处理的普遍原理,描述引导处理的下列示例。
在物理硬件的重设置中,可以执行引导加载程序。引导加载程序的目的是初始化硬件,以便OS能够运行,为了从非易失存储设备加载所有代码(诸如图12和下文描述的存储设备1210),并且将控制传输至刚被加载的代码。在整个SMP***中加载的代码可以包括OS。然而,针对在图1中示出的示例,处理***100包括混合SMPASMP***。因此,在一个示例中,有时称为“***管理程序(hypervisor)”的中间程序可以被最先加载。***管理程序的目的是双重的。
首先,在引导时间,***管理程序可以被配置成执行下列操作:
将***物理存储器分配给对象建立器生成的每个建立表;
设置存储器管理单元,以便OS和ART具有它们的公共和私有存储器;
加载OS;
加载ART;以及
允许OS和ART开始执行。
第二,在运行时刻,***管理程序提供用于在OS和ART之间的共享资源的控制点。这通常需要***管理程序在处理器核心(CPU)中的不同层面执行。这与在例如USER(用户)层面和SUPERVISOR(管理器)层面的硬件中支持的当前CPU配置相似,其中,OS核例行程序在SUPERVISOR层面运行,而所有其他代码在USER层面运行。在一个示例中,某些CPU可以包括第三层面,其可以被具体配置成用于HYPERVISOR(***管理程序),因此,其提供所有层面,而对于其他CPU,***管理程序代码可能仅是在SUPERVISOR层面运行的代码,其余代码在USER层面运行。
在一个示例中,一旦OS已经被启动,部分初始化处理可以是设置所有驱动器,包括HART,其根据OS特定OS实施方式而可能具有在可以允许其向OS请求缓冲空间410、420、430的建立处理期间产生的表。
而且,在其中HART本身执行初始化的一个示例中,将链接至ART,并且如果建立表需要,HART可以被配置成将功能加载至ART。在某些示例中,功能也可以由***管理程序作为ART的部分而预加载。例如,这可以是,例如,可以加载以太网ART处理的方式,以便当OS需要以太网功能时,其是可用的。
本发明可以被实施为用于在计算机***上运行的计算机程序,至少包括代码部分,当在诸如计算机***的可编程装置上运行时,执行根据本发明的方法的步骤,或使得可编程设备能够执行根据本发明的设备或***的功能。
现在参考图12,示出了可以被用于实施本发明实施例中的处理功能的典型的计算***1200。这种类型的计算***可以被用于接入点和无线通信单元中。本领域的技术人员也将意识到如何使用其他计算机***或架构实施本发明。计算***1200可以表示为,例如,台式机、膝上型或笔记本计算机、手持型计算设备(PDA、蜂窝电话、掌上型计算机等)、主机、服务器、客户端或对于给定应用或环境可能是需要或适当的任何其他类型的特殊或一般用途计算设备。计算***1200可以包括一个或多个处理器、诸如处理器1204。处理器1204可以使用诸如微处理器、微控制器或其他控制模块的一般或特殊用途处理引擎来实施。在这个示例中,处理器1204被连接至总线1202或其他通信介质。
计算***1200也可以包括主存储器1208,诸如随机存取存储器(RAM)或其他动态存储器,用于存储待由处理器1204执行的信息和指令。主存储器1208也可以被用于在待由处理器1204执行的指令的执行期间,存储临时变量或其他中间信息。计算***1200同样可以包括耦合至总线1202用于存储用于处理器1204的静态信息和指令的只读存存储器(ROM)、或其他静态存储设备。
计算***1200也可以包括信息存储***1210,其可以包括,例如,介质驱动器1212和可移除存储接口1220。介质驱动器1212可以包括驱动器或支持固定或移动存储介质的其他机构,诸如硬盘驱动器、软盘驱动器、磁带驱动器、光盘驱动器、光盘(CD)或数字视频驱动器(DVD)读取或写入驱动器(R或W)、或其他可移动或固定介质驱动器。存储介质1218可以包括,例如,硬盘、软盘、磁带、光盘、CD或DVD或由介质驱动器1212读取或写入的其他固定或移动介质。如这些示例所示的,存储介质1218可以包括具有存储于其中的特定计算机软件或数据的计算机可读存储介质。
在可选实施例中,信息存储***1210可以包括用于允许计算机程序或其他指令或数据被加载到计算***1200的其他相似构件。这些构件可以包括,例如,移动存储单元1222和接口1220,诸如程序盒以及盒接口、移动存储器(例如,闪存或其他移动存储模块)和存储槽、以及允许软件和数据被从移动存储单元1218传输至计算***1200的其他移动存储单元1222和接口1220。
计算***1200也能够包括通信接口1224。通信接口1224可以被用于允许软件和数据在计算***1200和外部设备之间被传输。通信接口1224的示例可以包括调制解调器、网络接口(诸如以太网或其他NIC卡)、通信端口(诸如,通用串行总线(USB)端口)、PCMCIA槽和卡等。经由通信接口1224传输的软件和数据是信号的形式,其可以是能够由通信接口1224接收的电子、电磁和光或其他信号。这些信号经由信道1128被提供至通信接口1224。这个信道1228可以承载信号,并且可以使用无线介质、有线或线缆、光纤或其他通信介质来实施。信道的某些示例包括电话线、蜂窝电话链路、RF链路、网络接口、局域或广域网以及其他通信信道。
在此文献中,术语“计算机程序产品”、“计算机可读介质”等可以被一般用于指诸如存储器1208、存储设备1218、或存储单元1222的介质。这些和其他形式的计算机可读介质可以存储由处理器1204使用的一个或多个指令,以导致处理器执行指定操作。这些指令通常被称为“计算机程序代码”(其可以通过计算机程序或其他分组的形式而被分组),当被执行时,使得计算***1200执行本发明的实施例的功能。应注意的是,代码可以直接导致处理器执行指定操作,被编译成执行指定操作,以及/或者与其他软件、硬件和/或固件元件组合(例如,用于执行标准功能的库)以执行指定操作。
在其中利用软件实施这些元件的实施例中,利用例如移动存储驱动器122、驱动器1212、或通信接口1224,可以将软件存储在计算机可读介质中,并且加载到计算***1200中。控制模块(在这个示例中为软件指令或计算机程序代码)当由处理器1204执行时,导致处理器1204执行如此处所描述的本发明的功能。
一种计算机程序是诸如特定应用程序和/或操作***的指令的列表。例如,计算机程序可以包括:子例行程序、函数、流程、对象方法、对象实施方式、可执行应用、小应用程序、服务器小程序、源代码、对象代码、共享库/动态加载库、和/或其他被设计用于在计算机***上执行的指令序列中的一个或多个。
计算机程序可以被内部存储在计算机可读存储介质上,或者经由计算机可读传输介质而被传输到计算机***。计算机程序的所有或某些可以提供在被永久、可移动地或者远程地耦合到信息处理***的计算机可读介质上。例如,并且非限定性的是,计算机可读介质可以包括任意数目的下列项目:包括盘和带存储介质的磁存储介质;诸如压缩盘的光存储介质(例如,CD-ROM、CD-R等)和数字视频盘存储介质;包括诸如闪存、EEPROM、EPROM、ROM的基于半导体的存储单元的非易失性存储器存储介质;铁磁数字存储器;MRAM;包括寄存器、缓冲器或高速缓存、主存储器、RAM等的易失性存储介质;以及包括计算机网络、点对点通信设备、和载波传输介质等的数据传输介质。
计算机处理通常包括执行(运行)程序或程序的部分、当前程序值和状态信息、以及操作***用于管理程序执行的资源。操作***(OS)是管理计算机的资源共享并且为程序员提供用于访问这些资源的接口的软件。操作***处理***数据和用户输入,并且通过分配并管理作为服务的任务和内部***资源,以响应用户和***的程序。
例如,计算机***可以包括至少一个处理单元、相关联的存储器、和多个输入/输出(I/O)设备。当执行计算机程序时,计算机***根据计算机程序来处理信息,并且经由I/O设备产生结果的输出信息。
在前面的说明中,已经参考本发明的实施例的具体示例描述了本发明。然而,将显而易见的是,在不脱离如随附的权利要求中所述的本发明的更广泛精神和范围的条件下,可以做出各种修改和变更。
为了实现相同功能的构件的任何布置是有效“相关联”的,以便实现期望的功能。因此,此处被组合以实现特定功能的任意两个构件可以被视为彼此“相关联”,以便实现期望的功能,而无论架构或中间构件如何。同样,如此相关联的任意两个构件也可以被视为彼此“可操作地连接”,或者“可操作地耦合”,以实现期望的功能。
此外,本领域的技术人员应明白的是,上文描述的这些操作之间的界限仅是解释性的。多种操作可以被组合成单一操作,单一操作可以被分布在另外的操作中,并且操作可以至少在时间上部分重叠地被执行。而且,可选实施例可以包括特定操作的多个实例,在各种其他实施例中,操作的顺序可以被改变。
而且,例如,其示例或部分可以被实施为可转换成物理电路***的逻辑表示的物理电路***的软件或代码表示,诸如通过任何适当类型的硬件描述语言。
而且,本发明不限于以非可编程硬件实施的物理设备或单元,但也可以应用于能够通过根据适当的程序代码操作而执行期望设备功能的可编程设备或单元,诸如主机、迷你计算机、服务器、工作站、个人计算机、笔记本、个人数字助理、电子游戏机、机动车和其他嵌入***、蜂窝电话和各种其他无线设备,在本申请中,其被统称为“计算机***”。
然而,其他修改、变化和替代也是可能的。因此,这些说明和附图应视为解释性而非限制性含义。
在权利要求中,在放置在括号内的任何参考符号不应被解释为限定权利要求。“包括”一词不排除在权利要求中除了所列示的那些还存在其他元件或步骤。此外,此处所使用的术语“一个”被定义为一个或超过一个。而且,在权利要求中诸如“至少一个”和“一个或多个”的引导短语的使用,不应被解释为暗示通过不定冠词“一个”引入的另一权利要求元件将含有这种被引入的权利要求元件的任何特定权利要求限于仅含有一个这种元件,即使当相同权利要求包括引导性短语“至少一个”和“一个或多个”和诸如“一个”的不定冠词时也是如此。这对于定冠词的使用也是一样。除非另有说明,诸如“第一”和“第二”的术语被用于任意地区别这种术语所描述的元件。因此,这些术语未必旨在指示这些元件的临时或其他优先次序。在彼此不同的权利要求中叙述的某些措施的这一事实,并不表示这些措施的组合不能被有利地使用。

Claims (19)

1.一种用于支持从操作***环境内访问由所述操作***环境外的资源提供的功能的方法,所述方法包括在所述操作***环境内:
接收对于由所述操作***环境外的资源提供的功能的调用;以及
将功能参数从所接收到的调用内复制到提供被调用功能的所述操作***环境外的所述资源可访问的存储器区域。
2.根据权利要求1所述的方法,进一步包括将在所述存储器区域内的被复制参数的存在通过信号通知到提供所述被调用功能的所述操作***环境外的所述资源。
3.根据权利要求2所述的方法,其中,将在所述存储器区域内的被复制参数的所述存在通过信号通知到提供所述被调用功能的所述操作***环境外的所述资源包括:将中断发送至处于所述操作***环境外的至少一个处理模块上运行的辅助运行时刻程序代码。
4.根据权利要求2所述的方法,进一步包括,在随后接收到对于所述操作***环境外的资源可访问的所述存储器区域内的返回参数的存在的指示时,从所述存储器区域检索这样的返回参数,并且利用所检索到的返回参数来建立用于所接收到的调用的返回功能。
5.根据权利要求1所述的方法,其中,在所接收到的调用内的功能参数被复制到的所述操作***外的资源可访问的所述存储器区域包括操作***缓冲池的部分。
6.根据权利要求1所述的方法,进一步包括维护用于所述操作***环境外的资源的集中资源表。
7.根据权利要求1所述的方法,进一步包括,在接收到对于待被传递至所述操作***环境外的处理子***的数据的存在的指示时,将用于映射至在所述操作***环境内的源对象的存储器空间的存储器区域的指针与用于映射至所述操作***环境外的目的地对象的存储器空间的存储器区域的指针交换。
8.一种被布置成在操作***环境中操作的处理子***,所述处理子***包括至少一个处理模块,所述至少一个处理模块包括被布置成接收对于由所述操作***环境外的资源提供的功能的调用的输入;其中,所述至少一个处理模块被设置成,在接收到这样的调用时,将功能参数从所接收到的调用内复制到提供被调用功能的所述操作***环境外的资源可访问的存储器区域。
9.一种用于支持从操作***环境内访问由所述操作***环境外的资源提供的功能的方法,所述方法包括,在驻留在所述操作***环境的外部的处理子***处:
接收由所述处理子***提供的功能需要被执行的指示;
从在所述操作***环境内的存储器区域中检索功能参数;以及
利用所检索到的功能参数,建立对于所需要的功能的功能调用。
10.根据权利要求9所述的方法,其中,接收由所述处理子***提供的功能需要被执行的指示包括:从在所述操作***环境内的处理子***接收中断。
11.根据权利要求9所述的方法,其中,在所述操作环境内的所述存储器区域包括操作***缓冲池的部分,并且接收由所述处理子***提供的功能需要被执行的指示包括:识别与位于主操作***缓冲器描述符环内的所述操作***缓冲池中所述功能参数相关的缓冲器描述符。
12.根据权利要求9所述的方法,其中,所述方法进一步包括,在随后从执行所需要的功能的功能元件接收到功能返回时,将返回参数复制到所述操作***环境内的所述存储器区域,并且将在所述操作***环境内的所述存储器区域中的所述返回参数的存在通过信号通知需要所述功能被执行的处理子***。
13.根据权利要求9所述的方法,其中,所述方法进一步包括:
为所述操作***环境轮询主操作***的缓冲器描述符环;以及
在识别与所述需要功能对于其待由所述处理子***执行的被缓冲数据相关的所述主操作***缓冲器描述符环内的缓冲器描述符时,将所识别的所述主操作***缓冲器描述符环内的缓冲器描述符复制到用于提供所需要的功能的所述处理子***的缓冲器描述符环内的缓冲器描述符中。
14.根据权利要求13所述的方法,其中,所述方法进一步包括:
接收待从所需要的功能返回到所述主操作***环境的数据;
将所接收的数据存储到在操作***环境内的存储器区域;以及
将与所接收的数据被存储到的所述存储器区域相关的缓冲器描述符从提供所需要的功能的所述处理子***的所述缓冲器描述符环复制到所述主操作***缓冲器描述符环。
15.根据权利要求9所述的方法,进一步包括,在接收到待被传递至操作***环境内的对象的数据的存在的指示时,将用于映射至所述操作***环境外的源对象的存储器空间的存储器区域的指针与映射到在所述操作***环境内的目的地对象的存储器空间的存储器区域的指针交换。
16.一种被布置成执行辅助运行时刻程序代码的处理子***,所述处理子***包括至少一个处理模块,所述至少一个处理模块包括被布置成接收由所述处理子***提供的功能需要被执行的指示的输入;其中,所述至少一个处理模块被布置成,在接收到这样的指示时,从在所述处理子***驻留于其外部的操作***环境内的存储区域中检索功能参数;并且利用所检索的功能参数,建立对于所需要的功能的功能调用。
17.根据权利要求16所述的处理子***,其中,所述至少一个处理模块被进一步布置成,执行性能监控器程序代码,以用于将运行时刻性能数据提供给在所述操作***环境内运行的主接口运行时刻程序。
18.一种处理***,包括:
第一处理子***,所述第一处理子***被布置成在操作***环境内操作;以及
至少一个进一步处理子***,所述至少一个进一步处理子***被布置成在所述操作***环境外操作,
其中,所述第一处理子***包括被布置成执行主运行时刻程序代码的至少一个第一处理模块,所述至少一个第一处理模块被布置成接收对于由所述操作***环境外的资源提供的功能的调用;以及在接收到这样的调用时,将功能参数从所接收的调用内复制到提供被调用功能的所述操作***环境外的资源可访问的存储器区域,
以及其中,所述至少一个进一步处理子***包括被布置成执行辅助运行时刻程序代码的至少一个第二处理模块,所述至少一个第二处理模块被布置成接收由所述处理子***提供的功能需要被执行的指示,并且在接收到这样的指示时,从所述操作***环境内的存储器区域检索功能参数;以及利用所检索的功能参数,建立对于所需要的功能的功能调用。
19.一种用于建立应用程序代码的方法,所述方法包括:
识别与待由操作***环境外的资源提供的功能相关的程序代码;
提取所识别的程序代码,并且将所提取的代码放置到至少一个库中,以通过将由所述操作***环境外的处理子***执行的辅助运行时刻代码来编译;以及
以包括对于将在所述操作***环境内被执行的主接口运行时刻代码的调用的程序代码来替换所提取的代码。
CN200980162601.XA 2009-11-25 2009-11-25 支持访问由操作***环境外的资源提供的功能的方法和*** Expired - Fee Related CN102667714B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2009/055336 WO2011064616A1 (en) 2009-11-25 2009-11-25 Method and system for enabling access to functionality provided by resources outside of an operating system environment

Publications (2)

Publication Number Publication Date
CN102667714A CN102667714A (zh) 2012-09-12
CN102667714B true CN102667714B (zh) 2015-08-05

Family

ID=44065898

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980162601.XA Expired - Fee Related CN102667714B (zh) 2009-11-25 2009-11-25 支持访问由操作***环境外的资源提供的功能的方法和***

Country Status (4)

Country Link
US (1) US9063805B2 (zh)
EP (1) EP2504759A4 (zh)
CN (1) CN102667714B (zh)
WO (1) WO2011064616A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2587380B1 (en) * 2011-10-28 2016-01-27 Software AG Runtime environment and method for non-invasive monitoring of software applications
US9116680B2 (en) 2012-09-26 2015-08-25 International Business Machines Corporation Dynamically building locale objects or subsections of locale objects based on historical data
US9778917B2 (en) 2012-09-26 2017-10-03 International Business Machines Corporation Dynamically building subsections of locale objects at run-time
US9141352B2 (en) * 2012-09-26 2015-09-22 International Business Machines Corporation Dynamically building locale objects at run-time
US9606827B2 (en) * 2015-03-24 2017-03-28 International Business Machines Corporation Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest
CN104991775B (zh) * 2015-07-03 2019-02-12 北京奇虎科技有限公司 一种游戏加速方法和装置
US10078615B1 (en) * 2015-09-18 2018-09-18 Aquantia Corp. Ethernet controller with integrated multi-media payload de-framer and mapper
US10552205B2 (en) * 2016-04-02 2020-02-04 Intel Corporation Work conserving, load balancing, and scheduling
CN110837482B (zh) * 2019-10-21 2023-10-27 苏州元核云技术有限公司 分布式块存储低延迟控制方法、***及设备

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404519A (en) * 1989-10-11 1995-04-04 Texas Instruments Incorporated System for extending software calls to functions on another processor by means of a communications buffer
US5903269A (en) * 1995-10-10 1999-05-11 Anysoft Ltd. Apparatus for and method of acquiring processing and routing data contained in a GUI window
US5778180A (en) * 1995-11-06 1998-07-07 Sun Microsystems, Inc. Mechanism for reducing data copying overhead in protected memory operating systems
AUPO418896A0 (en) 1996-12-12 1997-01-16 Quantum Networks Pty Ltd A distributed operating system
US7143197B1 (en) * 1999-11-08 2006-11-28 Agere Systems Inc. Method and system for monitoring a telecommunications signal transmission link
WO2004012416A2 (en) * 2002-07-26 2004-02-05 Green Border Technologies, Inc. Transparent configuration authentication of networked devices
US7243333B2 (en) * 2002-10-24 2007-07-10 International Business Machines Corporation Method and apparatus for creating and executing integrated executables in a heterogeneous architecture
US6983456B2 (en) 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US20040230963A1 (en) * 2003-05-12 2004-11-18 Rothman Michael A. Method for updating firmware in an operating system agnostic manner
US7373642B2 (en) 2003-07-29 2008-05-13 Stretch, Inc. Defining instruction extensions in a standard programming language
US7428737B1 (en) 2003-12-01 2008-09-23 The Mathworks, Inc. Method for using header files to call a shared library from a dynamic environment
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US20060053215A1 (en) 2004-09-07 2006-03-09 Metamachinix, Inc. Systems and methods for providing users with access to computer resources
US8667184B2 (en) * 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7587724B2 (en) * 2005-07-13 2009-09-08 Symantec Corporation Kernel validation layer
US20070074192A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Computing platform having transparent access to resources of a host platform
JP5163128B2 (ja) * 2006-01-31 2013-03-13 富士通株式会社 共有メモリ型マルチプロセッサにおける手続の呼び出し方法、手続の呼び出しプログラム、記録媒体、およびマルチプロセッサ
US9201703B2 (en) * 2006-06-07 2015-12-01 International Business Machines Corporation Sharing kernel services among kernels
US7934063B2 (en) * 2007-03-29 2011-04-26 International Business Machines Corporation Invoking externally assisted calls from an isolated environment
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US8117622B2 (en) * 2009-05-14 2012-02-14 Microsoft Corporation Client application independent extensibility model

Also Published As

Publication number Publication date
US9063805B2 (en) 2015-06-23
EP2504759A4 (en) 2013-08-07
US20120227056A1 (en) 2012-09-06
EP2504759A1 (en) 2012-10-03
WO2011064616A1 (en) 2011-06-03
CN102667714A (zh) 2012-09-12

Similar Documents

Publication Publication Date Title
CN102667714B (zh) 支持访问由操作***环境外的资源提供的功能的方法和***
US20190220418A1 (en) Memory Management Method and Apparatus
JP5071913B2 (ja) 同時物理プロセッサ再割り当て方法、システム、およびプログラム
US7203941B2 (en) Associating a native resource with an application
KR101936453B1 (ko) 새로운 애플리케이션을 위한 메모리 관리 모델 및 인터페이스
US8650537B2 (en) Optimizing an object-oriented program by transforming invocations of synthetic accessor methods
KR101976221B1 (ko) 수정되지 않은 애플리케이션을 위한 메모리 관리 모델 및 인터페이스
JP2004220608A (ja) スレッド型に基づくコンピュータ・リソースの動的割り付け
US7389506B1 (en) Selecting processor configuration based on thread usage in a multiprocessor system
TW201301029A (zh) 具有增強型應用程式元資料之記憶體管理器
WO2024119764A1 (zh) 一种任务调度方法、装置及电子设备和存储介质
EP3944091B1 (en) Cache allocation method and device, storage medium, and electronic device
CN113010265A (zh) Pod的调度方法、调度器、存储插件及***
US20240053998A1 (en) Method and apparatus for processing inter-core communication, and computer system
CN112306669A (zh) 一种基于多核***的任务处理方法及装置
CN105677481B (zh) 一种数据处理方法、***及电子设备
CN104714792A (zh) 多进程共享数据处理方法和装置
US20090187911A1 (en) Computer device with reserved memory for priority applications
US9405470B2 (en) Data processing system and data processing method
US20050223383A1 (en) Methods and apparatus for reserving an execution thread
US8689230B2 (en) Determination of running status of logical processor
US20130247065A1 (en) Apparatus and method for executing multi-operating systems
CN112948336B (zh) 数据加速方法及缓存单元、电子设备及存储介质
CN100492299C (zh) 一种嵌入式软件开发的方法及***
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Texas in the United States

Patentee after: NXP America Co Ltd

Address before: Texas in the United States

Patentee before: Fisical Semiconductor Inc.

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: 20150805

Termination date: 20191125