用于分区的多处理器系统的实时线程服务的制作方法

文档序号:6568987阅读:155来源:国知局
专利名称:用于分区的多处理器系统的实时线程服务的制作方法
用于分区的多处理器系统的实时线程服务北息 冃眾发明领域本发明的各实施例涉及操作系统领域,尤其涉及实时线程。相关领域的描述实时操作系统(RTOS)是为实时应用程序开发的操作系统(OS)。典型 地,实时应用程序在与真实世界环境交互时要求确定性的响应时间。在现有OS下开发的应用程序并不具有不受潜在OS限制的完全专用和可 预测的环境。它或者需要与在隔离的环境之上或之内运行的特殊硬件和软件平 台相协调。隔离环境可以是在同一或另一处理器上其本身虚拟地址空间内的独 立进程,通常带有完全独立的RTOS环境。应用程序不得不通过显式消息和数 据缓冲交互来与这一隔离的环境交互。这就导致了资源利用效率低下,并会引 起不确定的响应时间。附图简述通过参考以下用于说明本发明的实施例的描述和附图将最好地理解本发明的实施例。附图中

图1是示出其中可实施本发明的一个实施例的系统的图示。图2是根据本发明一个实施例示出多核实时线程服务的图示。图3是根据本发明一个实施例示出实时线程服务的组件交互的图示。图4是示出根据本发明的一个实施例的共享虚拟地址空间的图示。图5是示出根据本发明的一个实施例的虚拟地址空间映射的图示。图6是根据本发明一个实施例示出连续的实时线程事件的图示。图7是根据本发明一个实施例示出支持多核环境中的实时线程服务的模块的图示。描述本发明的一个实施例是一种向多核环境中的应用程序提供实时线程服务的技术。这些实时的核与OS隔离。驱动程序在操作系统(OS)的内核中发起。执行程序则由驱动程序发起以自举并控制隔离的核。使用os上的库为应用程序创建实时线程。该库露出用户级应用程序接口 (API)以便与驱动程序和执 行程序通信。实时线程与该应用程序共享虚拟地址空间并受执行程序和驱动程 序的控制。在以下的描述中,陈述了众多特定的细节。然而,应理解可在没有这些特 定的细节的情况下实施本发明的实施例。在其它的例子中,没有示出公知的电 路、结构和技术,以免混淆对本发明的理解。可将本发明的一个实施例描述为进程, 一般将该进程描述为流程图、流程 图解、结构图或框图。尽管流程图将操作描述为顺序进程,但很多操作可并行或同时执行。此外, 可重新安排操作的顺序。进程在其操作完成时终止。进程可以对应于方法、程 序、过程、生成或制造方法等。本发明的一个实施例是一种为多核或多处理器系统实现实时线程服务的 技术。术语"实时"在这里指的是响应于真实世界事件或事务的确定性时间。 各线程在用户级处暴露。因此,可将其称为轻型线程,因为要保存的上下文信 息的量很小。提供该线程服务以支持隔离的对称多核或多处理器系统(SMP) 或核多处理器系统(CMP)。隔离的SMP/CMP平台是多处理器/多核系统,在 其中主机OS被引导并且仅知晓部分核或处理器。其余的处理器对OS不可见。 不可见的处理器也可称为隔离的处理器。驱动程序和执行程序一起工作,从而 允许程序器经由用户级库提供的API,在与主OS隔离的分区SMP平台内的核 /处理器上执行线程。线程服务还允许程序器使用现成的和将来的多处理器 (MP)平台来用实时子系统扩展现今的非实时OS,其中实时子系统使用在其 中隔离的处理器与OS空间的处理器共享统一的虚拟地址空间的软件模型。这 样就能够方便地移植现有的代码并能利用多个核的有效工作来快速开发这一 OS扩展,而不会产生对现有OS的限制。本发明的实施例的元件可由硬件、固件、软件或其任意组合来实现。术语硬件一般指的是具有诸如电子、电磁、光、电光、机械、电机部件、组件或器 件等物理结构的元件。术语软件一般指的是逻辑结构、方法、过程、程序、例 程、进程、算法、公式、函数、表达式等。术语固件一般指的是实现或包含在 硬件结构(例如,闪存)中的逻辑结构、方法、过程、程序、例程、进程、算法、 公式、函数、表达式等。固件的例子可包括微代码、可写控制存储、微编程结 构。当实现在软件或固件中时,本发明的实施例的元件本质上是执行必需的任 务的代码段。软件/固件可包括用于执行本发明的一个实施例中所述的操作的实 际代码或用于仿真或模拟操作的代码。程序或代码段可存储在处理器或机器可 访问介质中,或通过包含在载波中的计算机数据信号或由载波调制的信号在传 输介质上发送。"处理器可读或可访问介质"或"机器可读或可访问介质"可 包括能存储、发送或传送信息的任何介质。处理器可读或机器可访问介质的例子包括电子电路、半导体存储设备、只读存储器(ROM)、闪存、可擦除 ROM(EROM)、可擦除可编程ROM(EPROM)、软盘、致密盘(CD)ROM、光盘、 硬盘、光纤介质、射频(RF)链路等。计算机数据信号可以包括能够经诸如电子 网络信道、光纤、空气、电磁、RF链路等传输介质传播的任何信号。代码段 可以经由诸如因特网、内联网等的计算机网络下载。机器可访问介质可以具体 化为产品。机器可访问介质可包括数据,该数据在被机器访问时,使得机器执 行以下操作。机器可访问介质还可包括嵌入其中的程序代码。程序代码包括执 行以下描述的操作的机器可读代码。术语"数据"在此指的是为了机器可读的 目的而编码的任何类型的信息。因此,它可以包括程序、代码、数据、文件等。 本发明的全部或部分实施例可由硬件、软件、固件或其任意组合来实现。 硬件、软件或固件元件可具有互相耦合的多个模块。硬件模块通过机械、电、 光电磁或其它物理连接耦合到另一个模块。软件模块通过函数、过程、方法、 子程序、或子例程调用、跨接、链路、参数、变量以及变元传递、函数调用返 回等耦合到另一个模块。软件模块被耦合到另一个模块以接收变量、参数、变 元、指针等和/或生成或传递结果、更新的变量、指针等。固件模块通过以上的 硬件和软件耦合方法的任意组合来耦合到另一个模块。硬件、软件或固件模块 可被耦合到另一个硬件、软件或固件中的任何一个。模块还可以是与在该平台上运行的操作系统交互的软件驱动程序或接口。模块还可以是被配置为构造、 建立、初始化、发送数据给硬件设备或从中接收数据的硬件驱动程序。装置可 包括硬件、软件和固件模块的任意组合。可将本发明的一个实施例描述为进程, 一般将该进程描述为流程图、流程 图解、结构图或框图。尽管流程图将操作描述为顺序进程,但很多操作可并行 或同时执行。流程图中的环路或迭代可由单个迭代来描述。应理解,维持环路 索引或计数器以更新相关联的计数器或指针。此外,可重新安排操作的顺序。 进程在其操作完成时终止。进程可对应于方法、程序、过程等。框图可包含描 述元件、项、组件、器件、单元、子单元、结构、方法、进程、功能、操作、 功能性、任务等的块或模块。可自动或手动地执行功能性或操作。图1A是示出其中可实施本发明的一个实施例的系统100的图示。系统10 包括处理器单元110、存储器控制器集线器(MCH) 120、主存储器130、输入 /输出控制器集线器(ICH) 140、互连145、大容量存储接口 150、以及输入/ 输出(I/O)设备180i至180K。处理器单元110表示任何类型的体系结构的中央处理单元,诸如利用超线 程、安全、网络、数字媒体技术的处理器、多核处理器、嵌入式处理器、移动 处理器、微控制器、数字信号处理器、超标量计算机、向量处理器、单指令多 数据(SIMD)计算机、复杂指令集计算机(CISC)、精简指令集计算机(RISC)、超 长指令字(VLIW)或混合式体系结构。更具体,处理器单元110可以具有其中多 核或处理器并行操作的多核或多处理器体系结构。MCH 120提供对诸如主存储器130、 ICH140之类的存储器和输入/输出设 备的控制和配置。可将MCH 120集成为芯片组,该芯片组集成了诸如图形、 媒体、隔离执行模式、主机-外围总线接口、存储器控制、电源管理等多种功 能。MCH 120或MCH 120中的存储器控制器功能可集成在处理器单元110中。 在某些实施例中,处理器单元110内部或外部的存储器控制器可为处理器单元 110中的所有核或处理器工作。在其它实施例中,它可包括可分开地为处理器 单元110中的不同的核或处理器工作的不同的部分。主存储器130存储系统代码和数据。主存储器130通常以动态随机存取存 储器(DRAM)、静态随机存取存储器(SRAM)或包括不需要刷新的存储器的任何其它类型的存储器来实现。主存储器130可以包括存储器设备双倍数率(DDR2) DRAM的多条通道。更具体地,存储器130包括多核实时(RT)线 程服务135。多核RT线程服务135向应用程序提供服务以在多核环境中创建 并管理RT线程。ICH 140具有设计成支持I/O功能的多种功能。ICH 140还可与MCH 20 一起集成为芯片组,或与MCH20分离以执行I/O功能。ICH140可包括多个 接口和1/0功能,诸如外围组件互连(PCI)总线接口、处理器接口、中断控制器、 直接存储器访问(DMA)控制器、电源管理逻辑、定时器、系统管理总线(SMBus)、 通用串行总线(USB)接口、大容量存储接口、低引脚数(LPC)接口等。互连145提供至外围设备的接口。互连145可以是点对点的,或连接到多 个设备。为了清楚起见,没有示出所有的互连。可预想互连145可包括任何互 连或总线,诸如外围组件互连(PCI)、 PCI快速、通用串行总线(USB)、以及直 接媒体接口(DMI)等。大容量存储接口 150提供对大容量存储设备的接口,这些大容量存储设备 存储诸如代码、程序、文件、数据和应用程序之类的档案信息。大容量存储设 备可包括致密盘(CD)只读存储器(ROM)152、数字视频/通用盘(DVD)154、软盘 驱动器156和硬盘驱动器158、以及任何其他磁或光存储设备。大容量存储接 口 150提供了用于读取机器可访问介质的机构。I/O设备180!至180k可包括用 于执行I/O功能的任何I/O设备。I/O设备18(h至180K的例子包括用于输入设 备(例如,键盘、鼠标、跟踪球、点击设备)的控制器、媒体卡(例如,音频、视 频、图形显示)、网卡以及任何其他的外围控制器。图2是根据本发明一个实施例示出图1所示的多核实时(RT)线程服务 135的图示。多核RT线程服务135包括主核210、 N个RT核心220!至220N、 OS 230、最高特权级(MPL) 240以及最低特权级(LPL) 250。主核210是其上载有并运行OS 230的核。存在OS 230可以在上运行的一 个以上的主核。N个RT核心220i至220w是由基本输入输出系统(BIOS)在 引导期间隔离的核或处理器,或者它们也可由OS 230隔离。N个RT核心22(h 至220w对OS 230不可见。它们可被称为轻型核,与稍后描述的在用户级上运 行的轻型线程相对应。一旦由用户205引导,OS 230可被载入并在主核210上运行。OS 230支 持分区的对称多处理(SMP)系统。在一个实施例中,OS 230是Microsoft Windows Server 2003 OS。应该预料到也可以使用支持分区MP的其他OS。 OS 230支持表示各种特权级别的分层。MPL240是其上运行OS 230内核的最高特 权级。LPL级别250是其中运行用户应用或程序的最低特权级。在一个实施例 中,MPL 240和LPL 250分别对应于Microsoft Windows Server 2003 OS中的内核模式和用户模式。OS 230具有驱动程序260、库285、以及称为应用程序280的应用程序或 OS线程。驱动程序260在OS 230启动时由OS 230发起。随后,驱动程序260 发起N个执行程序270!至270N,每个执行程序用于N个RT核心22(h至220N 中的每个核。每个N个RT核心22(^至220N都具有自己的执行程序实例。也 可以为所有的RT核发起单个执行程序。驱动程序260和N个执行程序270, 至270n在MPL 240中操作。应用程序280则在LPL 250中由用户280发起。 它载入库285。应用程序280随后请求在RT核290k上创建RT线程,诸如RT 线程290k。如有需要,N个RT核心220!至220n中的毎一个都可以代表OS应 用程序执行RT线程。没有执行RT线程的RT核被认为是空闲的。在本发明的 其它实施例中,单个RT核可以代表单个OS应用程序执行若干RT线程,或者 代表若干OS应用程序执行若干RT线程。OS 230没有在核心22(h至220n上 操作。这样,执行程序270,至270N和RT线程290!至290N因受核处理器支持 而在MPL 240和LPL 250处操作。图3是根据本发明一个实施例示出RT线程服务的组件交互的图示。如上所述,驱动程序260和执行程序270在MPL 240中运行。应用程序 280、库285和RT线程290k在LPL 250中运行。这些组件共同形成用于隔离 的SMP系统的多核RT线程服务。驱动程序260在启动时在每个可用核220k上发起执行程序270k。它可以 发起、联结和删除RT线程。它可以钉住分配给RT线程或应用程序的存储器 区域或者取消该区域的钉住。它还保持与所有执行程序的通信。执行程序270k切换至RT线程290k或从其切换。换句话说,它分别执行在 MPL240和LPL250之间任务的转换。它还执行异常处理和其他任务,诸如占先和信令。库285是含有许多有用函数的动态链接库,从而执行与提供线程服务支持 有关的多种任务。它代理来自主核210的驱动程序260的服务,包括发起和联 结RT线程290k和存储器钉住。它还代理执行程序270k的服务,包括管理线程 退出。此外,它还可以执行任何运行时间任务,诸如堆管理、调试打印以及同 步。应用程序280使用线程服务创建线程,这些线程在图2所示的RT核心或 处理器22(^至220w上运行。例如,它使用线程服务来创建RT线程290k。 RT 线程创建开始于来自OS 230内的应用程序280对库285的调用,以请求创建 RT线程。该调用提供入口点(例如,函数名)和自变量。库285随后请求驱 动程序260从N个RT核心220!至220N中分配RT核。驱动程序260通过N 个RT核心220,至220N以确定或找出可用于创建线程的核。假设核k可用。 驱动程序270随后被请求向下钉住RT线程正确操作所需的存储器页面。消息 随后被发送给执行程序270k,以请求其在核220k上发起RT线程。执行程序270k 随后创建RT线程290k。执行程序270k建立页面目录和表,从而作为应用程序280的虚拟地址空 间一对一映射。它随后切换至LPL250并跳至用户的入口点。当RT线程290k 退出或者有外部事件(例如,中断)出现时,控制返回至执行程序270k。执行 程序270k随后或者服务该事件并将控制返回给应用程序280,或者清除并发信 号通知驱动程序260和库285该RT线程290k已完成执行。在RT线程290k执 行期间出现的大多数可恢复异常可由执行程序270k处理,诸如在OS 230内完 成对用户定义的处理程序的调用。图4是示出根据本发明的一个实施例由RT线程共享的虚拟地址空间的图 示。RT线程对虚拟地址空间的共享经由OS应用程序及其实时线程共享同一页 面目录来实现。主核210具有指向页面目录430的页面目录基寄存器(PDBR) 415。核心 220,至220n分別具有PDBR 425〗至425N。主核210上的每个应用程序都具有 自己的页面目录。页面目录是每个应用程序上下文的一部分,因而在上下文切 换上保存并恢复。当RT线程被创建并执行时,关联核的PDBR则改变为发起应用程序的PDBR。可选地,核心220i至220N的PDBR可以指向父进程的页 面目录的副本,该副本持有该父进程虚拟地址空间的子集。由此,该RT线程 就与调用它的应用程序共享同一虚拟地址空间。页面目录430含有根据应用程序此刻的物理存储器需求指向K个页面表 440,至440k的指針。页面表440i至440K指向位于物理存储器450内相应的页 面460,至460M。此外,还可以执行处理器钉住以确保由RT线程使用的应用程序页面不被 OS存储器管理器所驱逐。这可以使用设置在OS内核中的API来实现。库285 自动钉住执行RT线程290k所需的代码和数据段。经要求的锁定和分页可得到高效使用。图5是示出根据本发明的一个实施例由执行程序执行的虚拟地址空间映 射500的图示。映射500示出了执行程序270k的页面目录。所有的执行程序使 用同一个页面目录。图5所示的执行程序的页面目录与图4所示的RT线程的 页面目录不同。对RT线程页面目录的分配在关联核被分配给应用程序时进行。 另一方面,执行程序页面目录可在该核尚未被分配时使用。映射500包括OS 虚拟地址空间510、物理存储器地址空间520以及执行程序虚拟地址空间530。执行程序代码作为驱动程序260的一部分被编译,因此被载入大于2千兆 字节(2G)的线性地址。所有的动态分配都从OS系统堆中执行,这就确保所 有的执行程序存储器都免受用户代码的侵占,而只能由内核模式代码访问。执 行程序页面目录是OS系统(〉2G)线性存储器的很小的、 一对一子集。它可 用于映射执行程序正确操作所需的结构。这些结构的示例是执行程序代码和 数据、全局描述符表(GDT)、中断描述符表(IDT)、先进可编程中断控制器 (APIC)信息、大小合理的堆或缓冲区(例如,64K)、执行程序管理结构、 消息缓冲区(例如,存储器管道)和栈。OS虚拟地址空间510占据了由主核210提供的整个虚拟地址空间。它包 括由驱动程序260、执行程序270k和执行程序存储器结构540占据的存储器区 域。执行程序存储器结构540可以包括执行程序堆、GDT和IDT。物理存储器 地址空间520包含由OS内的软件组件映射的存储器区域。所有的存储器分配 都由主核210 (图2)完成。对执行程序页面目录/页面表的映射则通过钉住页面并在随后将一对一的物理/线型复本从OS页面目录映射到执行程序页面目录。例如,驱动程序260可被映射至存储器区域550和552,执行程序270k可 被映射至存储器区域560和562,而执行程序存储器结构540则可被映射至存 储器区域570和572。执行程序虚拟地址空间530在一对一映射上对应于OS 虚拟地址空间510。图6是根据本发明一个实施例示出连续的RT线程事件的图示。这一连续 的RT线程事件包括用户205、 OS 230、驱动程序260、执行程序270k、应用 程序280和RT线程290k。这些事件的顺序由时标A至L指示。开始时,在时刻A,用户205引导系统,且OS 230被载入。在初始化之 后,在时刻B, OS 230以内核模式发起驱动程序260。在时刻C,驱动程序260 发起对所有隔离的核的执行程序270k。此刻,多核RT线程服务135向上并运 行。在时刻D,在发起执行程序270k之后,用户205开始应用程序280,该应 用程序280可以使用多核RT线程服务135。在时刻E,应用程序280请求经由库285创建RT线程。于是就创建合适 的结构并钉住所有相关的线性段。这一请求经由库285发送至驱动程序260。 驱动程序260于是验证可用核存在。在时刻F,驱动程序260发送请求至可用 核k上的执行程序270k,以请求执行程序270k引发(spawn) RT线程。在时 刻G,执行程序270k在可用核220k上引发RT线程290K。 RT线程290k随后在 最低特权级250中运行。在时刻H,应用程序280通过使用共享变量来发信号通知RT线程290k停 止的方式来终止RT线程290K。在时刻I,应用程序280将RT线程290k联结 至驱动程序260,以请求驱动程序260等待直到RT线程2卯k实际已停止。在 时刻J, RT线程290k终止并经由库函数调用退出。控制随后转移至执行程序 270k。在时刻K,执行程序270k通知驱动程序260该RT线程290k终止。在时 刻L,驱动程序260发信号给应用程序280,以指示RT线程290k已被联结。 驱动程序260解除对应用程序280的阻止以允许其接收RT线程退出状态并继 续运行。此刻,应用程序280己经完成它对RT线程290k的使用。图7是根据本发明一个实施例示出支持在多核环境中的RT线程服务的模 块700的图示。模块700包括资源管理功能710、驱动程序-执行程序通信720、存储器钉住功能730和存储器钉住跟踪740。资源管理功能710是基于记住RT核活动的机制。在一个实施例中,驱动 程序维持两个列表。第一列表包括所有未分配的或自由的执行程序。第二列表 包括为使用RT线程服务的每个用户应用程序分配的执行程序。在每次发起RT 线程时,驱动程序在第一列表中找出可用执行程序,并将该执行程序移至第二 列表。如果所有的执行程序都已分配,则驱动程序向调用应用程序返回错误。 该列表由执行程序首部的指针所链接。无论什么时候,执行程序都刚好属于一 个列表。使用这一列表结构,就可以实现额外的或者更为复杂的资源管理策略。驱动程序-执行程序通信720在驱动程序和执行程序之间提供通信机制。 在一个实施例中,该通信机制使用存储器管道。该管道可用循环存储器缓冲区 来实现。执行程序和驱动程序具有它们自己的管道来作为引入消息队列。发送 器找到合适的消息队列,将消息写入该队列,并发信号通知接受器读取其队列。 每个存储器管道都具有锁,以防止多个消息被同时写入队列。存储器钉住功能730向RT线程分配并钉住存储器区域。完成上述功能以 确保OS虚拟存储器管理器不会使由RT线程使用的页面出页面。可通过驱动 程序使用OS内核的存储器管理器服务来向下钉住这些页面。在一个实施例中, 库自动钉住执行RT线程所需的代码和数据段。在最为简单的方法中,进程930 在载入该库之时锁定所有的代码和数据段,包括堆缓冲区。这一简单方法会导 致为每个应用程序钉住大量的存储器。更为高效的方法则可使用按要求的锁定 和分页。执行存储器钉住跟踪功能740,以便向OS主存进程提供存储器钉住服务。 驱动程序不依赖用户应用程序,以在退出前释放其所有钉住的区域。通过跟踪 钉住的区域,驱动程序如有需要,可以执行任何清除。跟踪可通过使用单链接 列表结构来执行。在一个实施例中,使用Windows 2003 OS中的存储器描述符 列表(MDL)。在这一单个列表上记录有来自使用RT线程服务的所有应用程 序的所有被钉住的存储器区域。对列表的访问可由互斥机制保护。当驱动程序 260从库接收RT线程被终止的通知时,该功能740就解除对存储器区域的钉 住。这可以通过遍历被钉住缓冲区的列表并解除对分配给已终止RT线程的任 何缓冲区的钉住而实现。本发明的实施例为分区的多处理器系统提供有效的RT线程服务。该线程 服务向用户提供在专用和可预测子系统上运行要求实时性能(例如,媒体编码) 的强计算的能力,而免受OS调度程序的任意性和不确定性性质的影响。应用程序和RT线程通过多线程协作模型进行协作,并通过同一虚拟地址空间进行 通信,从而能够方便地开发新的应用程序并能方便地移动现有的应用程序。更 具体地,不再需要预先确定在OS上执行代码的哪部分,而在RT核或处理器 上执行哪部分。计算可以在两边完成,从而允许OS线程在其备用循环内提供 额外的计算能力。此外,相同的代码无需重新编译,就能够在OS和RT核两 者上运行。最后,不存在封装这一复杂因素。不再需要为两个OS编译同一程 序,或编译两个程序,每个OS使用一个。RT线程服务仅需要标准的OS (例 如,Windows)开发环境。尽管根据几个实施例描述了本发明,但本领域的技术人员将意识到本发明 不限于所述的实施例,而是可用所附权利要求的精神和范围内的修改和改变来 实施本发明因此将说明书视为说明性的而不是限制性的。
权利要求
1.一种方法,包括在操作系统(OS)的最高特权级(MPL)下,在多核环境内的实时(RT)核上发起执行程序,所述RT核与所述OS隔离;以及在最低特权级(LPL)下在所述RT核上使用库为应用程序创建RT线程,所述库由所述应用程序载入,所述RT线程与所述应用程序共享虚拟地址空间。
2. 如权利要求l所述的方法,其特征在于,创建所述RT线程包括 接收来自所述库的创建请求,所述库传递来自所述应用程序的所述创建请求;验证所述RT核可用;以及将引发请求发送给所述执行程序,所述执行程序在所述RT核上引发所述 RT线程。
3. 如权利要求l所述的方法,其特征在于,还包括改变所述RT线程的页面目录基寄存器(PDBR)以指向所述OS内的父进 程的页面目录,或者指向持有所述父进程虚拟地址空间子集的所述页面目录的副本。
4. 如权利要求3所述的方法,其特征在于,还包括 与所述应用程序通信;管理由所述RT线程使用的存储器区域的钉住;以及 经由共享的存储器缓冲区与所述执行程序通信。
5. 如权利要求4所述的方法,其特征在于,与所述应用程序通信包括 接收来自所述应用程序的等待请求,以等待所述RT线程停止; 接收来自所述执行程序的信号,所述信号指示所述RT线程已停止;以及解除对所述应用程序的阻止,以允许所述应用程序接收来自所述RT线程的退出状态。
6. 如权利要求4所述的方法,其特征在于,管理所述存储器区域的钉住包括钉住给所述RT线程的存储器区域; 跟踪所述存储器区域;从所述库接收所述RT线程终止的通知;以及 解除对所述存储器区域的钉住。
7. 如权利要求l所述的方法,其特征在于,还包括 管理在所述多核环境上的资源。
8. —种制品,包括一种包括数据的机器可访问介质,当所述数据由机器访问时,使得所述机 器执行如下动作在操作系统(OS)的最高特权级(MPL)下,在多核环境内的实时(RT) 核上发起执行程序,所述RT核与所述OS隔离;以及在最低特权级(LPL)下在所述RT核上使用库为应用程序创建RT线程, 所述库由所述应用程序载入,所述RT线程与所述应用程序共享虚拟地址空间。
9. 如权利要求8所述的制品,其特征在于,所述使得所述机器执行创建 所述RT线程的数据包括在由机器访问时,使得所述机器执行如下操作的数据接收来自所述库的创建请求,所述库传递来自所述应用程序的所述创建请求;验证所述RT核可用;以及将引发请求发送给所述执行程序,所述执行程序在所述RT核上引发所述 RT线程。
10. 如权利要求8所述的制品,其特征在于,所述数据还包括在由机器访 问时,使得所述机器执行如下操作的数据改变所述RT线程的页面目录基寄存器(PDBR)以指向所述OS内的父进 程的页面目录,或者指向持有所述父进程虚拟地址空间子集的所述页面目录的副本。
11. 如权利要求10所述的制品,其特征在于,所述数据还包括在由机器 访问时,使得所述机器执行如下操作的数据与所述应用程序通信;管理由所述RT线程使用的存储器区域的钉住;以及经由共享的存储器缓冲区与所述执行程序通信。
12. 如权利要求11所述的制品,其特征在于,所述使得所述机器执行与所述应用程序通信的数据包括在由机器访问时,使得所述机器执行如下操作的 数据接收来自所述应用程序的等待请求,以等待所述RT线程停止; 接收来自所述执行程序的信号,所述信号指示所述RT线程己停止;以及 解除对所述应用程序的阻止,以允许所述应用程序接收来自所述RT线程 的退出状态。
13. 如权利要求11所述的制品,其特征在于,所述使得所述机器执行管理所述存储器区域的钉住的数据包括在由机器访问时,使得所述机器执行如下操作的数据钉住给所述RT线程的存储器区域; 跟踪所述存储器区域;从所述库接收所述RT线程终止的通知;以及 解除对所述存储器区域的钉住。
14. 如权利要求8所述的制品,其特征在于,还包括在由机器访问时,使 得所述机器执行如下操作的数据管理在所述多核环境上的资源。
15. —种系统,包括具有操作系统(OS)的主核,所述OS支持最高特权级和最低特权级; 与所述OS隔离的多个核,所述核支持所述最高和最低特权级; 在所述最低特权级下运行的应用程序;以及允许所述应用程序在隔离的核上创建实时(RT)线程的RT线程服务,所 述RT线程服务包括在所述最高特权级下运行并由所述OS发起的驱动程序,所述驱动程 序控制所述RT线程,由所述驱动程序在所述隔离的核上发起并在所述最高特权级下运行 以引发所述RT线程的执行程序,所述RT线程与所述应用程序共享虚拟 地址空间,以及由在所述最低特权级下运行的所述应用程序载入的库。
16. 如权利要求15所述的系统,其特征在于,所述驱动器验证所述隔离的核是可用的并且在接收到来自所述库的创建请求时,将引发请求发送给所述 可用隔离核上的所述执行程序。
17. 如权利要求15所述的系统,其特征在于,所述执行程序改变所述RT 线程的页面目录基寄存器(PDBR)以指向所述OS内的父进程的页面目录, 或者指向持有所述父进程虚拟地址空间子集的所述页面目录的副本。
18. 如权利要求15所述的系统,其特征在于,所述驱动程序解除对所述 应用程序的阻止,以允许所述应用程序在从所述执行程序接收指示所述RT线 程已停止的信号之后,接收来自所述RT线程的退出状态。
19. 如权利要求15所述的系统,其特征在于,所述执行程序钉住给所述 RT线程的存储器区域,跟踪所述存储器区域,并且从所述库接收到所述RT线 程终止的通知之后解除对所述存储器区域的钉住。
20. 如权利要求15所述的系统,其特征在于,所述驱动程序管理在所述 多核环境上的资源。
全文摘要
本发明的一个实施例是一种向多核环境中的应用程序提供实时线程服务的技术。在操作系统(OS)的最高特权级下,在多核环境内的实时核上发起执行程序。该实时核与OS隔离。在最低特权级下在该实时核上使用库为应用程序创建实时线程。该库由应用程序载入。该实时线程与该应用程序共享虚拟地址空间。
文档编号G06F9/46GK101268445SQ200680034530
公开日2008年9月17日 申请日期2006年9月12日 优先权日2005年9月21日
发明者D·莎玛雅, J·海尔德, R·加伯, S·雷诺, Y·库巴克 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1