在多核系统中管理内核服务的方法和装置与流程

文档序号:23067940发布日期:2020-11-25 17:55阅读:159来源:国知局
在多核系统中管理内核服务的方法和装置与流程

本申请的实施方式涉及实时操作系统。更具体地,涉及用于在多核系统中管理内核服务的方法和装置。



背景技术:

通常,对称多处理(smp)系统是多核系统上处理的重要形式。smp系统使用多核系统处理多个任务,多核系统连接到单个共享内存,可以访问所有输入和输出设备,并由平等对待多核系统的多个核的单个操作系统实例来控制。多核系统的每个核彼此独立运行,并通过处理不同的数据集而执行不同的程序。操作系统包括实现核心内核服务(诸如进程间通信(ipc)和关键部分/资源管理)的内核。

在多个核的其中之一上运行的任务可以将任何消息发送至正在相同核或不同核上运行的另一任务。消息队列(邮箱)、事件、信号是用于在任务之间同步和异步通信的ipc。消息队列和事件是同步ipc的示例,而信号处理是异步函数调用的示例。可从不同线程或中断服务例程(isr)中访问和修改的全局变量和缓冲区是多个任务间共享的内核资源。当第一任务访问共享内核资源时,不应允许第二任务修改第一任务正在访问的共享内核资源。如果第二任务访问由第一任务正在读取的共享内核资源,则第一任务将读取到共享内核资源的不一致内容。

因而,使用公共内核锁,以保护共享内核资源和内核服务对象实例。内核服务对象实例可以是,例如跨多核系统的多个核与核心内核服务相关联的互斥体、信号量、事件、消息队列等。然而,公共内核锁的使用会影响中断等待时间,因而影响多核系统的实时响应。另外,即使在ipc上运行的任务不需要任何内核调度,常规方法也采用了公共内核锁,从而增加了等待时间。

以上信息仅作为背景信息呈现,以帮助读者理解本公开。申请人对以上任何内容是否可以适用于关于本申请的现有技术,未做出任何确定,也未作出任何断言。



技术实现要素:

本申请的实施方式的主要目的在于提供在多核系统中管理内核服务的方法和装置。

本申请的实施方式的另一个目的在于为内核配置锁。

本申请的实施方式的另一个目的在于为内核的共享资源配置对象特定锁。

本申请的实施方式的另一个目的在于使用对象特定锁,并行处理用于多核系统的多个核上的不同共享资源的ipc服务。

因而,本申请的实施方式提供了用于在多核系统中管理内核服务的方法。所述方法包括:为内核配置锁,并为内核的共享资源配置对象特定锁;以及使用对象特定锁,并行处理用于多核系统的多个核上的不同共享资源的ipc服务。

因而,本申请的实施方式提供了用于在多核系统中管理内核服务的装置。所述装置包括:存储器、包括多个核的多核处理器、在多核处理器上运行的操作系统(os),其中,os包括内核以及联接至多核处理器和存储器的内核资源引擎。所述内核资源引擎配置为:为内核配置锁,为内核的共享资源配置对象特定锁;以及使用对象特定锁,并行处理用于多核系统的多个核上的不同共享资源的ipc服务。

当结合以下描述和附图考虑时,将更好地体会和理解本申请的实施方式的这些和其它方面。然,应当理解,以下描述虽然指示了优选实施例及其大量的具体细节,但它们是由示例而非限制的方式给出。在不脱离本发明的精神的情况下,可以在本申请的实施方式的范围内进行诸多变更和修改,本申请的实施方式包括所有这样的修改。

附图说明

在附图中示出了本公开,在所有附图中,相同的附图标记指示相同的部件。通过以下参照附图的描述,将更好地理解本申请的实施方式,其中:

图1示出了根据现有技术,任务在访问单核系统中的内核共享资源时执行的步骤;

图2示出了根据现有技术,多个任务在访问多核系统中的内核共享资源时执行的步骤;

图3a示出了根据现有技术,在任务要访问多核系统中的内核共享资源时,使用单个内核锁的整体内核保护;

图3b示出了根据本申请公开的实施方式,在任务要访问多核系统中的特定内核共享资源时,用于特定内核共享资源的特定锁;

图4a是根据本申请公开的实施方式,用于在多核系统中管理内核服务的装置的框图;

图4b是根据本申请公开的实施方式,用于在多核系统中管理内核服务的装置的内核资源引擎的框图;

图5是示出了根据本申请公开的实施方式,用于在多核系统中管理内核服务的方法的流程图;

图6是示出了根据本申请公开的实施方式,基于内核的共享资源的对象特定锁的进程间通信应用程序接口(ipcapi)的一系列步骤的流程图;

图7是示出了用于访问内核共享资源的常规单一内核锁与根据本申请公开的实施方式用于访问内核共享资源的对象特定锁的比较的示例;

图8a和图8b是示出了常规方法的中断锁定与根据本申请公开实施方式对象特定锁用于访问内核共享资源时的中断锁定的比较的示例;

图9是示出了根据本申请公开的实施方式,当对象特定锁用于访问内核的共享资源时并发内核服务流的示例;以及

图10是示出了根据本申请公开的实施方式,使用用于访问内核共享资源的对象特定锁在彼此独立的两个关键部分上并行执行任务的示例。

具体实施方式

现在将参照附图详细描述本公开的各种实施方式。在以下描述中,仅提供诸如详细配置和组件之类的具体细节,以帮助对本公开的这些实施方式的总体理解。因而,对于本领域技术人员而言显而易见的是,在不脱离本公开的范围和精神的情况下,可以对本申请所述的实施方式进行各种改变和修改。另外,为了清楚和简洁,省略了对公知功能和构造的描述。

另外,由于一些实施方式可以与一个或多个其它实施方式结合以形成新的实施方式,因而本申请所述的各种实施方式不必相互排斥。

在本申请中,除非另有说明,否则本申请所用的术语“或”是指非排他性的。本申请中使用的示例仅旨在促进对可以实践本申请中的实施方式的方式的理解,并且进一步使本领域技术人员能够实践本申请中的实施方式。因而,示例不应解释为限制本申请的实施方式的范围。

如本领域中的常规的,可以根据执行所述的功能块来描述和说明实施方式。在本申请中,这些块可指单元、引擎、管理器、模块等,由诸如逻辑门、集成电路、微处理器、微控制器、存储电路、无源电子组件、有源电子组件、光学组件、硬连线电路等的模拟和/或数字电路物理实现,并且可以可选地由固件和/或软件驱动。电路可以,例如在一个或多个半导体芯片中、或在诸如印刷电路板等的基板支撑件上实施。构成块的电路可以通过专用硬件、或通过处理器(例如,一个或多个可编程微处理器和相关联电路)、或通过执行模块的某些功能的专用硬件和执行其它功能的处理器的组合来实现。在不脱离本公开的范围的情况下,实施方式的每个块可以在物理上分成两个或更多个相互作用和离散的块。同样地,在不脱离本公开的范围的情况下,实施方式的块可以物理地组合成更复杂的块。

因而,本申请的实施方式提供了用于在多核系统中管理内核服务的方法。所述方法包括:为内核配置公共内核锁,并为内核的至少一个共享资源配置对象特定锁;以及使用对象特定锁,并行处理用于多核系统的多个核上不同共享资源的ipc服务。

在一个实施方式中,使用对象特定锁并行处理用于多核系统的多个核上不同共享资源的ipc服务包括:接收任务请求以获得对内核共享资源的至少一个对象的访问。该方法还包括:获取内核共享资源的所述至少一个对象上的对象特定锁;以及基于内核对象上给定的ipc操作,确定是否需要由内核执行任何调度操作。与任务请求相关联的任务被挂起、抢占或继续执行。检索共享资源的数据结构,并且进一步基于数据结构,挂起、抢占或继续执行任务。如果挂起,则释放对象特定锁,并调用调度器,以将处于就绪状态的现有任务调度为运行状态。

在一个实施方式中,为了确定抢占,确定挂起现有任务,从共享资源中检索现有任务的任务控制块(tcb),并将其变更为就绪状态。进一步,确定所检索的tcb导致任务被抢占。然后释放对象特定锁,并调用调度器以进行调度操作,将现有任务置于就绪状态以抢占与任务请求相关联的任务。

在一个实施方式中,通过确定至少一个任务或者无任务处于挂起状态,而继续执行任务。因而,如果存在挂起的任务,则检索任务的tcb,并据此确定该tcb是否不导致与任务请求相关联的任务被抢占。释放对象特定锁后,调用调度器以将现有任务添加到就绪队列中。或者,如果无任务被挂起,则释放对象特定锁,然后该方法终止。

在一个实施方式中,共享资源包括互斥体、信号量、事件、消息队列,其中,对象特定锁包括互斥体特定锁、信号量特定锁、事件特定锁和消息队列特定锁。

在支持smp的常规多核系统中,内核服务获取公共内核锁,以获得对内核共享资源的独占访问,这限制了在不同的内核上执行时彼此独立的内核对象实例的并行执行。

与常规多核系统不同,所提出的方法通过提供内核对象实例特定锁,允许内核服务获得对内核共享资源的独占访问,而无需使用公共内核锁。在处理不同内核上彼此独立的内核对象方面,内核对象实例特定锁的使用提供了显著的优势。

常规多核系统使用公共内核锁,以平衡多核系统上所有内核的任务调度,这会影响中断等待时间,从而影响实时响应。

在常规多核系统中,即使在ipc上运行的任务不需要任何内核调度,任务也会占用公共内核锁,这会增加等待时间并保持其它任务的等待。

常规方法和系统没有针对ipc实例对ipc进行分类。因而,所有在ipc对象上工作的内核服务都将ipc作为公共内核资源对待。例如,将m1和m2视为不同的ipc互斥体对象,然后认为mutex_post()将m1和m2都视为无法同时访问的单个关键资源。与常规的方法和系统不同,所提出的方法将m1和m2都视为不同的资源,因为所提出的方法解除了ipc对象的相互依赖性,因而可以在不同内核上同时进行访问。

在常规多核系统中,内核ipcapi不在ipc与内核共享数据之间进行区分;而将ipc和内核共享数据都视为由公共内核锁保护的单个共享内核资源。与常规方法和系统不同,所提出的方法为ipc和内核共享数据提供了单独的锁。

现在参照附图,并且更具体地参照图1至图10,其示出了优选实施方式,在所有附图中相似的附图标记始终表示对应的特征。

图1示出了根据现有技术,任务在访问单核系统中的内核共享资源时执行的步骤。

参照图1,考虑在单核smp系统上正在运行的任务a。在步骤102,任务a需要访问内核的共享资源。在步骤104,内核调度器禁用中断(isr),以允许任务a访问内核的共享资源。

在步骤106,任务a获得对内核的共享资源的访问。另外,任务a处理并使用内核的共享资源。在步骤108,当任务a完成内核共享资源的访问时,内核调度器启用中断。另外,在步骤110,继续正常执行任务a。在任务请求时,由仅在smp系统的单个核上运行的任务获得对内核共享资源的访问。然而,在多核系统的情况下,存在多个核,在任何给定时间实例,在多个核上可运行多个任务。

图2示出了根据现有技术,多个任务在访问多核系统时执行的步骤。

参照图2,考虑多核系统中的两个核:核0和核1,任务a(在步骤202)和任务b(在步骤212)正在两个核上同时执行。另外,在步骤202和步骤212,内核调度器确定任务a和任务b都需要访问对应核的关键部分以获得对内核的共享资源的访问。

在常规多核系统中,当任务想获得对内核共享资源的独占访问时,该任务需要获取公共内核锁。公共内核锁限制了与核心内核服务相关联的内核对象实例(诸如,例如互斥体、信号量、事件、消息队列等)跨多核系统的多个核的并行执行,这些内核对象实例在不同核上执行时是彼此独立的。

因而,在步骤204,任务a获得公共内核锁;因而,在步骤206,任务a访问内核的共享资源。然而,在步骤214,任务b不能获取使任务b能够访问内核的共享资源的公共内核锁,因而,在步骤216至步骤218中,任务b等待获得对公共内核锁的访问。任务a正在访问的内核对象和任务b打算访问的内核对象可以不同。然而,由于使用了公共内核锁,因而停止在内核1上执行的任务b,直至在内核0上运行的任务a释放了公共内核锁。

在步骤208,任务a释放公共内核锁,内核调度器将事件发送至在内核1上运行的任务b,指示可以获取公共内核锁。因而,在步骤220,任务b获取公共内核锁;并且在步骤222,任务b访问内核的共享资源。

内核使用的公共内核锁是基于核的,因而对单内核系统没有任何影响。然而,在多核系统中,当一个核获取了公共内核锁时,在其它核上的执行即停止,公共内核锁具有巨大影响。

图3a示出了根据现有技术,在任务要访问多核系统中的内核共享资源时使用公共内核锁的整体内核保护。

在支持smp的多核系统中,内核服务获取公共内核锁,以获得对内核共享资源的独占访问,这限制了在不同的内核上执行时彼此独立的内核对象实例的并行执行。

参照图3a,考虑圆圈,表示用于内核以及与核心内核服务相关联的内核的共享资源(诸如互斥体、信号量、事件和消息队列)的公共内核锁。考虑在核0上运行的任务a,其要访问与核心内核服务相关联的信号量。因而,任务a已获取公共内核锁,且正在使用信号量。考虑在核1上运行的任务b,其要访问与核心内核服务相关联的互斥体。但是,因为任务已经获取了公共内核锁,任务b将不能访问与核心内核服务相关联的互斥体。因而,即使任务a正在访问的内核对象实例是信号量而非互斥体,在任务a释放公共内核锁之前,任务b都不能访问互斥体。

图3b示出了根据本申请公开的实施方式,在任务要访问多核系统中的特定内核共享资源时用于特定内核共享资源的特定锁。参照图3b,所提出的方法通过为内核的共享资源提供独占的对象特定锁,解决了如图3a所述的公共内核锁的局限性。对象特定锁由围绕内核对象中每一个的圆圈表示。

参照图3b,所提出的方法为内核的共享资源中的每一个提供了对象特定锁。考虑任务a请求访问信号量s1,任务b请求访问信号量s2,以及任务c请求互斥体m1。所提出的方法提供针对信号量s1的特定锁(即s1_lock)、针对信号量s2的特定锁(即s2_lock)和针对互斥体m1的特定锁(即m1_lock)。因此,由于内核的共享资源的每一个具有特定锁,所以必须访问在相同核或不同核上运行的内核的共享资源的任务不会停止。

图4a是根据本申请公开的实施方式,用于在多核系统中管理内核服务的装置400的框图。

考虑装置400,包括支持多核系统上的smp处理的操作系统。操作系统包括允许任务间通信、信令和调度服务的内核420。基于诸如基于优先级的抢占式调度、基于时间片的调度逻辑等的调度方案,内核420能在多核系统的多个核上调度多个任务(任务的上下文切换)。多核系统中的任务在各种状态(诸如就绪状态、挂起状态和运行状态)间转换。内核420包括内核资源引擎430。装置400还包括调度器440、多核处理器460和存储器480。

在一个实施方式中,装置100例如可以是移动电话、智能电话、个人数字助理(pda)、平板电脑、可穿戴设备、物联网(iot)设备等。

在一个实施方式中,内核420是管理装置元件和软件资源的系统软件。本文所述的用于rtos的锁定原理也可适用于任何系统。内核资源引擎430配置为为内核420设计锁。内核资源引擎430还为内核的共享资源配置对象特定锁。内核的共享资源包括互斥体、信号量、事件、消息队列等。对象特定锁包括为内核的特定共享资源配置特定锁,即互斥体特定锁、信号量特定锁、事件特定锁和消息队列特定锁。另外,内核资源引擎430还配置为使用对象特定锁,并行处理用于多核处理器460的多个核上的不同共享资源的ipc服务。

在一个实施方式中,调度器440配置为基于诸如例如基于优先级的抢占式调度、基于时间片的调度等调度方案来调度多个任务(任务的上下文切换)。由于通过调度器440进行任务的调度,因而任务在多个状态(诸如就绪、挂起和运行等)间转换。

在一个实施方式中,多核处理器460由各个核间具有互连的多个核组成。多个核可以统称为核,或通常称为核。多核处理器460可以配置为从存储器480读取和/或写入到存储器480。这样的读和写操作可以涉及与多核处理器460的多个核的操作相关联的指令和数据。另外,多核处理器460内的每个核可以配置为单独访问存储器480。通过生成对参与smp的多个核的软件驱动的硬件中断,实现多个核间的信令。

在一个实施方式中,存储器480配置为存储与在多核处理器460的核上的操作相关联的指令和数据。存储器480可以包括非易失性存储元件。这样的非易失性存储元件的示例可以包括:磁性硬盘、光盘、软盘、闪存、或电可编程存储器(eprom)或电可擦除可编程(eeprom)存储器的形式。另外,在一些示例中,可以认为存储器480是非暂存性存储介质。术语“非暂存性”可以指示存储介质没有体现在载波或传播的信号中。然而,术语“非暂存性”不应解释为存储器480是不可移动的。在一些示例中,存储器480配置为存储比存储器大的信息量。在某些示例中,非暂存性存储介质可以存储可以随着时间改变的数据(例如,在随机存取存储器(ram)或高速缓存中)。

尽管图4a示出了装置400的硬件元件,但是应当理解,其它实施方式不限于此。在其它实施方式中,装置400可以包括更少或更多元件。另外,元件的标签或名称仅用于说明性目的,而不限制本公开的范围。可以将一个或多个组件组合在一起,以在多核系统中执行相同或基本相似的管理内核服务的功能。

图4b是根据根据本申请公开的实施方式,用于在多核系统中管理内核服务的装置400的内核资源引擎430的框图。

参照图4b,内核资源引擎430包括共享资源管理器432、ipc服务管理器434、任务调度器436和ipc服务监控器438。

在一个实施方式中,共享资源管理器432配置为对内核的共享资源进行分类,诸如例如,考虑内核的共享资源的消息队列(mq)实例(如mq1、mq2、…、mqn)为消息队列(mq)。

另外,共享资源管理器432配置为设计用于内核的锁和用于内核共享资源的每一个的对象特定锁。另外,共享资源管理器432还配置为设计用于内核的特定共享资源的对象特定锁。另外,共享资源管理器432配置为将共享资源的实例与唯一的对象特定锁相关联,以在多核系统上执行的跨多任务环境中独占地访问单独的共享资源。例如,考虑内核的共享资源为信号量。共享资源管理器432整体上为信号量配置信号量特定锁,并且还为各个信号量配置特定锁,诸如信号量s1具有对象特定锁s1_lock,信号量s2具有对象特定锁s2_lock等。

另外,共享资源管理器432配置为接收来自至少一个任务的请求以获得对内核的至少一个共享资源的访问,并确定至少一个任务需要获得访问的内核的至少一个共享资源。另外,共享资源管理器432还配置为基于来自至少一个任务的请求,获取在内核的至少一个共享资源上的对象特定锁。因而,对象特定锁允许跨多核系统的多个核并发访问内核的共享资源,任务无需等待单独的ipc对象实例。

在一个实施方式中,ipc服务管理器434配置为:检索与现有任务对应的ipc数据结构,该现有任务正在访问对象特定锁内的内核的至少一个共享资源。ipc是os提供的允许进程管理共享数据的进程。ipc服务可以操作和修改内核的共享资源,诸如消息队列、事件、信号量和互斥体,以及维护任务控制块(tcb)的内核数据结构,例如任务就绪队列。ipc对象是相互依赖的,并联接至在tcb上运行的内核数据结构。

另外,ipc服务管理器434配置为:从结构中检索现有任务的ipc数据,并基于ipc数据确定是否需要对任务控制块(tcb)执行调度操作。ipc服务管理器434包括集成在内核ipc服务实现中的ipc服务监控器,所述ipc服务监控器检测在ipc内核服务的当前上下文中调用任务调度器436的需要。当请求访问内核420的共享资源的任务与正在运行的任务属于同一核时,则不调用任务调度器436,通过获得对对象特定锁的访问,仅处理共享资源实例。

另外,ipc服务管理器434配置为:响应于确定需要在tcb上执行调度操作,确定需要挂起内核的至少一个共享资源上的现有任务;或者,ipc服务管理器434响应于确定不需要在tcb上执行调度操作,确定不需要挂起在内核的至少一个共享资源上的任务。因而,ipc服务管理器434基于确定是否需要在tcb上执行调度操作,而确定是否需要挂起访问内核的至少一个共享资源的现有任务。

在一个实施方式中,任务调度器436配置为:在任何给定时间点,在多核系统的多个核上执行具有最高优先级的任务。为任务分配优先级,并根据抢占式调度方案执行处于就绪状态的任务。ipc服务可以更改多核系统中的任务状态,并导致从运行状态过渡到挂起状态,或从运行状态过渡到挂起/就绪状态。

另外,任务调度器436配置为:基于来自ipc服务管理器434的输入,挂起访问内核的至少一个共享资源的现有任务;或者任务调度器436配置为:基于来自ipc服务管理器434的输入,允许访问内核420的至少一个共享资源的现有任务继续访问内核420的共享资源。另外,任务调度器436配置为确定是否需要挂起访问至少一个共享资源的现有任务。任务调度器436配置为:响应于确定不需要挂起至少一个共享资源上的现有任务,释放用于内核420的至少一个共享资源的对象特定锁,并调度与任务请求相关联的任务以访问至少一个共享资源。

任务调度器436配置为:响应于确定需要挂起至少一个共享资源上的现有任务,从消息队列中检索现有任务信息,并为内核的至少一个共享资源释放对象特定锁。另外,任务调度器436配置为阻止与任务请求相关联的任务并获取用于内核的锁。另外,任务调度器436配置为,将阻止的任务移至就绪状态以进行调度并释放用于内核的锁,并且调度与任务请求相关联的任务以访问至少一个共享资源。

在一个实施方式中,ipc服务监控器438配置为确定调度器440的调用需要。

图5是示出了根据本申请公开的实施方式,用于在多核系统中管理内核服务的方法的流程图。

参照图5,在步骤502,装置400配置用于内核420的锁以及配置用于内核420的共享资源的对象特定锁。例如,如图4a所示的装置400中,内核资源引擎430配置为:配置用于内核420的锁,以及配置用于内核420的共享资源的对象特定锁。

在步骤504,装置400接收任务请求以获得对内核420的至少一个共享资源的访问。例如,如图4a所示的装置400中,内核资源引擎430配置为接收任务请求,以获得对内核420的至少一个共享资源的访问。

在步骤506,装置400获取在内核420的至少一个共享资源上的对象特定锁。例如,如图4a所示的装置400中,内核资源引擎430配置为获取内核的至少一个共享资源上的对象特定锁。

在步骤508,装置400在对象特定锁内检索与内核420的至少一个共享资源上的现有任务对应的ipc数据结构。例如,在如图4所示的装置400中,内核资源引擎430配置为:检索在对象特定锁内与内核的至少一个共享资源上的现有任务对应的ipc数据结构。

在步骤510,装置400确定在至少一个共享资源上是否允许ipc服务特定操作。如果不允许该操作,则挂起请求任务,在该操作上调用任务调度器436,以将现有任务调度到运行状态。

在一个实施方式中,装置400基于ipc数据确定是否将在线程控制块(tcb)上执行调度操作。例如,在如图4所示的装置400中,内核资源引擎430配置为基于ipc数据确定是否要在线程控制块(tcb)上执行调度操作。

在步骤512,装置400响应于确定在共享资源对象中的至少一个上允许所请求的ipc服务操作,确定在内核的至少一个共享资源上的任务不需要处于挂起状态。例如,在如图4所示的装置400中,内核资源引擎430配置为:确定内核的至少一个共享资源上的任务不需要处于挂起状态。另外,在步骤512,在内核的至少一个共享资源对象的数据结构中检索tcb数据。

在步骤522,装置400响应于确定在共享资源对象中的至少一个上不允许所请求的ipc服务操作,确定将要执行调度操作并需要挂起与任务请求相关联的任务。例如,在如图4所示的装置400中,内核420配置为响应于确定在共享资源对象中的至少一个上不允许所请求的ipc服务操作,而确定需要挂起与内核的至少一个共享资源上的任务请求相关联的任务。如果不允许ipc服务特定操作,则挂起与任务请求相关联的任务,并且调用任务调度器436,以将准备就绪的现有任务调度到运行状态。

在步骤514,装置400基于检索到的tcb数据,确定是否不调用任务调度器436。如果不调用任务调度器436,则在步骤520,装置400释放对于内核的至少一个共享资源的对象特定锁,并且继续执行与任务请求相关联的任务。例如,在如图4所示的装置400中,内核资源引擎430配置为释放内核的至少一个共享资源的对象特定锁。

如果调用任务调度器436,则在步骤516和步骤518,释放对象特定锁,并基于从内核的至少一个共享资源对象的数据结构中检索到的tcb数据的优先级和核相似性,调用调度器并抢占与任务请求相关联的任务。

在一个实施方式中,装置400调度与任务请求相关联的任务,以访问至少一个共享资源。例如,在如图4所示的装置400中,内核资源引擎430配置为调度与任务请求相关联的任务,以访问至少一个共享资源。

该方法中的各种动作、行动、块、步骤等可以以呈现的顺序、以不同的顺序或同时执行。另外,在一些实施方式中,一些动作、行动、块、步骤等可以省略、添加、修改、跳过等,而并未脱离本公开的范围。

图6是示出了根据本申请公开的实施方式,基于内核的共享资源的对象特定锁的进程间通信应用程序接口(ipcapi)的一系列步骤的流程图600。

参照图6,提供了实现在共享内核资源之一上进行的逻辑处理的功能上独立的进程。

在步骤602,ipcapi在ipc内核服务进程的单个上下文内开始执行。

在步骤604,ipcapi获取与ipc对象相关联的对象特定锁,用于进行ipc对象的处理。在步骤606,由于ipcapi具有对ipc对象的独占访问,因而ipcapi基于需求修改与ipc对象相关联的ipc实例参数。

在步骤608,ipc服务监控器438确定是否需要调用调度器440。

在确定不需要调用调度器440时,在步骤610,ipcapi释放与ipc对象相关联的对象特定锁,并从共享内核资源之一上的逻辑处理退出。

在确定必须调用调度器440时,在步骤612,在完成ipc对象实例的处理时,ipcapi释放与ipc对象相关联的对象特定锁。另外,在步骤614,ipcapi确保公共内核锁以访问内核数据结构。在步骤616,ipcapi执行诸如任务上下文处理的调度操作,并在完成调度操作后在步骤618释放公共内核锁。另外,ipcapi从共享内核资源之一上的逻辑处理退出。

图7是示出了用于访问内核共享资源的常规单一内核锁与根据本申请公开的实施方式用于访问内核共享资源的对象特定锁的比较的示例。

考虑使用内核对象a(例如,信号量a)以将资源x的最大使用量限制为两个。考虑使用另一个内核对象b(例如,信号量b)以将资源y的最大使用量限制为两个。在核0上执行的任务1需要获取两次资源x,以及在核1上执行的任务2需要获取两次资源y。任务1、任务2、信号量a和信号量b均彼此独立。

在常规方法中,在时间间隔t1期间,任务1已获取用于访问信号量a的公共内核锁,任务2需要等待任务1释放公共内核锁,从而任务2可以获取公共内核锁以获取信号量b。在时间间隔t2期间,任务2已获取用于访问信号量b的公共内核锁,任务1需要等待任务2释放公共内核锁,从而任务1可以获取公共内核锁以获取信号量a。类似地,在时间间隔t3和时间间隔t4期间,任务2和任务1正在等待获取公共内核锁,以访问彼此独立的信号量b和信号量a。

与常规方法不同,在所提出的方法中,在时间间隔t1,任务1获取信号量a的锁,任务2获取信号量b的锁。另外,由于没有相互依赖性,任务1和任务2可以并行执行。类似地,在时间间隔t2,任务1获取信号量a的锁,任务2获取信号量b的锁,且都并行执行。因而,所提出的方法为跨多核处理系统的多个核提供了100%的并行化。

所提出的方法提供了断开的ipc对象实例和调度器处理。关键部分分别使用对象特定锁和公共内核锁进行分隔,这些锁提供了内核操作的完整性以及独立ipc对象实例的高度并行执行。

图8a和图8b是示出了常规方法的中断锁定与根据本申请公开实施方式对象特定锁用于访问内核共享资源时的中断锁定的比较的示例。

在常规方法中,当任务获取公共内核锁以访问代码的关键部分时,则任务内的中断被锁定更长的时间,直至任务释放公共内核锁为止,如图8a所示。

与常规方法不同,所提出的方法提供对象特定锁和用于特定共享资源的特定锁。因而,内核服务在功能上进行了划分,并且对象特定锁减小了中断锁定周期,而不影响装置400的确定性。参照图8b,所提出的方法由于内核的关键部分的大小被分段,因而使得能够解锁内核的更关键部分中的中断而不影响确定性。因而,中断锁定的持续时间越短,提供的时间响应就越好。

另外,内核的分段关键部分改善了系统行为,并允许调度器440对系统中的最新变化采取行动。因而,所提出的方法还降低了系统中的冗余。

图9是示出了根据本申请公开的实施方式,当对象特定锁用于访问内核的共享资源时并发内核服务流的示例。

参照图9,考虑具有多个核(即,核0、核1和核2)的多核处理器。考虑在核0上执行的第一ipc内核服务和在核1上执行的第二ipc内核服务。第一ipc内核服务需要访问第一ipc对象实例,即第一事件(ev1);而第二ipc内核服务需要访问第二ipc对象实例,即第二事件(ev2)。在所提出的方法中,任务间通信内核服务操作和修改ipc对象(如消息队列、事件、信号量和互斥体),以及维护任务控制块(tcb)的内核数据结构(如任务就绪队列)。

在图9中,在时间t1,第一ipc内核服务获取用于ev1的对象特定锁,即,获取lock_ev1。在时间t2,第一ipc内核服务运行并修改ev1。另外,在确定不需要调度时,在时间t3,第一ipc内核服务释放用于ev1的对象特定锁。另外,在时间t4,第一ipc内核服务将继续在核0上正常执行。由于ev1和ev2彼此独立,因而当第一ipc内核服务在核0上执行时,第二ipc内核服务同时在核1上执行。因而,当处理独立的ipc实例时,该方法允许并行执行第一ipc内核服务和第二ipc内核服务。

另外,在处理ipc特定数据期间,还可以通过获取公共内核锁,由第三ipc内核服务同时访问内核特定数据(在内核2上执行)。

图10是示出了根据本申请实施方式,使用用于访问内核的共享资源的对象特定锁在彼此独立的两个关键部分上并行执行任务的示例。

当处理中的ipc对象实例不同时,可以用在多核系统的多个核上运行的相同ipc服务实现并行化。在常规方法和系统中,在任何给定的时间实例,仅访问一个ipc服务的实例,并发访问进入繁忙等待状态。

考虑正在核0上执行并想要获取互斥体m1的任务a(步骤1202a)。类似地,任务b在核1上执行并想要获取互斥体m2(步骤1202b)。在使用公共内核锁的常规方法中,在任务a要访问内核的共享资源(诸如互斥体m1)的情况下,那么任务a获取公共内核锁并进入代码的关键部分。当任务a完成代码关键部分的执行时,任务a释放公共内核锁。另外,只有在任务a在完成代码关键部分的执行后释放公共内核锁之后,任务b才能够访问内核的共享资源。

参照图10,与常规方法不同,所提出的方法向内核的共享资源提供了对象特定锁,并且还为特定共享资源的每一个提供了特定锁。

在步骤1204a,任务a获取用于特定互斥体m1的对象特定锁,即ipc_lock(m1_spin_object)。

在步骤1206a,任务a确定互斥体m1是否可用。另外,在确定互斥体m1可用时,任务a获得互斥体m1(步骤1208a)并进入代码的关键部分以及执行(步骤1210a)。另外,在代码的关键部分中的执行完成时,任务a释放用于特定互斥体m1的对象特定锁(步骤1212a)。在步骤1206a,如果任务a确定互斥体m1不可用,则任务a释放用于特定互斥体m1的对象特定锁(步骤1214a),并且挂起任务a(步骤1216a)直至任务a获取互斥体m1。

以并行方式,在步骤1204b,在核1上执行的任务b获取用于特定互斥体m2的对象特定锁,即ipc_lock(m2_spin_object)。并执行与任务a相似的步骤1106b至步骤1116b,因为内核资源是分段的并且特定于内核对象,即,互斥体_1和互斥体_2都可以同时获取而无需等待彼此,因而,所提出的利用多个内核对象特定锁的方法允许彼此独立的两个关键部分并行执行。

对特定实施方式的上述描述将充分地揭示本申请中的实施方式的一般特性,以使他人可以通过应用当前知识而容易地修改和/或适应这些特定实施方式的各种应用,而不会背离公共概念。因此,这样的适应和修改应当并旨在理解为处于所公开的实施方式的等同形式的含义和范围内。应当理解,本申请采用的措词或术语是出于描述的目的而非限制。因而,尽管已经根据优选实施方式描述了本申请的实施方式,但是本领域技术人员将认识到,可以在如本文描述的实施方式的精神和范围内进行修改来实现本申请的实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1