协调中断冲突的方法与流程

文档序号:16595849发布日期:2019-01-14 19:38阅读:264来源:国知局
协调中断冲突的方法与流程
本技术涉及用于协调中断冲突的方法。更具体地,本技术涉及用于对中断进行优先级排序以解决中断冲突的方法。
背景技术
:中断请求是发送到处理器的信号,所述信号暂时停止正在运行的程序并代替地允许中断运行。在包含多个硬件和软件模块的大型系统中,可以向处理器发送许多中断。当模块中的两个或更多个使用相同的中断标识符来指示中断时,例如看门狗irq或通用uartirq,可能发生中断冲突。此外,当需要在同一时间或重叠的时间运行两个或更多个中断时,可能发生中断冲突。技术实现要素:根据第一种技术,提供了一种用于在处理系统中对系统中断进行优先级排序的机器实现的方法。所述方法包括:在监督模块处,对于每个中断,根据用于所述中断的至少一个中断参数确定相对中断优先级;在所述监督模块处,按照所确定的相对中断优先级,相对于所述系统的其它中断对每个所述中断进行优先级排序;以及响应于在所述系统的操作期间对所述至少一个中断参数的改变,调整所确定的相对中断优先级,并按照所调整的相对中断优先级,相对于所述系统的其它中断对每个所述中断重新进行优先级排序。根据第二种技术,提供了一种用于在处理系统中创建模块的一个或多个实例的机器实现的方法。所述方法包括:将私有存储器分配给所述模块的所述一个或多个实例中的每一个实例;复制所述模块中断和相关联的中断参数;将所复制的中断和相关联的中断参数应用于所述模块的所述一个或多个实例中的每一个实例;在监督模块处,对于每个复制的中断,根据所述相关联的中断参数中的至少一个中断参数,确定相对中断优先级;以及在所述监督模块处,按照所确定的相对中断优先级,相对于所述系统的其它中断对每个所复制的中断进行优先级排序;其中所述模块的所述一个或多个实例中的每一个实例与所述模块以及所述模块的其它实例隔离。根据第三种技术,提供了一种用于在处理系统中对系统中断进行优先级排序的数据处理器。所述数据处理器包括:处理电路系统,被配置为根据用于所述中断的至少一个中断参数为每个所述中断确定相对中断优先级,并且按照所确定的相对中断优先级相对于所述系统的其它中断对每个所述中断进行优先级排序;所述处理电路系统还被配置为在所述系统的操作期间响应于对所述至少一个中断参数的改变而调整所确定的相对中断优先级,并按照所调整的相对中断优先级相对于所述系统的其它中断对每个所述中断重新进行优先级排序。根据第四种技术,提供了一种计算机程序产品,包括用于执行本文所述方法的程序代码。根据第五种技术,提供了一种计算机可读介质,其上实施有用于执行本文所述方法的计算机可读程序代码。附图说明现在将参考附图描述实施例,在附图中:图1示意性地图示了基本计算机系统;图2示意性地图示了持续时间、频率和非中断能力参数;图3示意性地图示了最大等待时间参数;图4示意性地图示了另一个计算机系统;图5示意性地图示了用于对中断请求进行优先级排序的过程的流程图;图6示意性地图示了分组的模块;图7示意性地图示了另一个计算机系统;图8示意性地图示了分组的模块;以及图9示意性地图示了用于实现中断参数的过程的流程图。具体实施方式中断可以在具有比普通非特权上下文更多特权的上下文中执行,并且一些中断需要访问可能对安全性至关重要的外围设备。因此,运行中断例程之间的交互可以通过许多方式被利用,诸如通过服务的拒绝、过度特权等。例如,黑客可以通过阻止负责检测恶意软件的模块执行或者通过阻止安全机制(诸如用于在系统运行过快时停止系统的安全机制等)激活来破坏系统。在另一个示例中,恶意软件或有缺陷的软件可以通过违反在同一cpu核上或在同一片上系统(soc)上的第二个核上运行的无线驱动程序(driver)的定时要求而违反联邦通信委员会(fcc)规定。可以由模块的提供者将中断参数与每个模块中断相关联。中断参数定义关于中断的特性,这些特性指示中断的重要性并限制中断的操作。中断参数可以用于确定每个中断相对于系统的其它中断的相对优先级。因此,当使用多个模块构建系统时或者当将模块添加到现有系统时,可以使每个模块的中断与系统的其它模块的中断协调,以便对中断进行优先级排序。通过协调和调整中断优先级,在系统运行时,可以减少中断冲突的数量。此外,通过定义限制中断操作的中断的特性,可以确保系统的模块在使用中断时不违反其许可,并且维持系统的安全性。图1图示了处理元件,诸如包括硬件(hw)10、周期性系统定时器(pst)模块12和另一个模块14的基本系统。周期性系统定时器模块12和模块14都具有与其中断相关联的至少一个中断参数。在这个实施例中,两个模块都具有“指派的优先级”参数,该参数定义模块提供者认为的针对那个模块中断的优先级。每个模块的中断可具有不同的“指派的”优先级。例如,每个模块可以发出多于一个中断,并且每个中断可以具有不同的“指派的优先级”参数。通常,每个模块的多个中断是平衡的,使得每个模块不受其自身中断之间的中断冲突的影响。参考图1,与从周期性系统定时器模块12发出的中断相关联的指派的优先级参数是“至关重要的(critical)”。此外,与从模块14发出的中断相关联的指派的优先级参数是“重要的(important)”。“至关重要的”中断被认为在指派的优先级的层级中比“重要的”中断更高。下面的表1图示了指派的优先级的层级的示例。表1的顶部具有最高优先级。表1–指派的优先级层级实时至关重要的至关重要的实时重要的重要的空闲的因此,在图1的系统中,由中断控制器从周期性系统定时器模块12接收的具有“至关重要的”指派的优先级的中断优先于从模块14接收的具有“重要的”指派的优先级的中断。例如,当中断从模块14运行,并且从周期性系统定时器模块12接收到中断请求时,来自模块14的中断暂停,同时运行来自周期性系统定时器模块12的中断。同样,当来自周期性系统定时器模块12的中断正在运行并且从模块14接收到中断请求时,来自模块14的中断暂停,直到来自周期性系统定时器模块12的中断完成为止。每个模块的各中断与至少一个中断参数相关联,该参数由模块的提供者定义。在图1中,每个模块与“指派的优先级”参数相关联。但是,由于整个系统的每个模块可以由不同的提供者提供,并且每个模块在系统组装之前不知道系统的其它模块,因此系统的一个或多个模块可以已经与相同的“指派的优先级”相关联。例如,参考图1,周期性系统定时器模块12和模块14都可以发出具有“至关重要的”指定的优先级中断。当来自两个不同模块的中断具有相同的指派的优先级参数时,可能发生中断冲突,这应当被避免。有可能将一个或多个中断参数与每个中断相关联。在安装模块之前,由模块提供者将中断参数与每个中断相关联。在另一个实施例中,当运行更新时,由模块提供者将中断参数与每个中断相关联。中断参数定义关于中断的信息,这些参数限制系统中断的操作并指示中断的重要性。中断参数可以用于确定每个中断的“相对优先级”。每个中断的“相对优先级”是中断的确定的优先级,相对于系统的其它中断确定并且根据中断参数,使得遵守每个中断的中断参数。例如,当来自两个不同模块的中断具有相同的指派的优先级参数时,根据与每个中断相关联的中断参数,为每个中断确定“相对优先级”。本质上,通过相对于中断中的另一个中断的“相对优先级”升高一个中断的“相对优先级”来增加那个中断的重要性,使得不发生中断冲突。系统的监督模块(诸如arm’stm的uvisor之类)在中断控制器处理中断之前确定系统中断的“相对优先级”。系统的监督模块可以在编译期间或在将新模块安装到系统期间确定中断的“相对优先级”。监督模块可以是内部或外部硬件状态机,其具有在一个或多个cpu核/处理器上协调优先级的能力。可以使用任何类型的数据列表结构来存储与每个中断相关联的至少一个中断参数。根据一个实施例,中断参数可以被存储为访问控制列表(acl)。根据另一个实施例,访问控制列表可以存储在内存(in-memory)数据表中。如上所述,中断参数可以定义针对中断的指派的优先级要求。但是,中断参数还可以定义针对中断的定时要求,和/或针对中断的安全(safety)和/或安全性(security)要求。针对中断的定时要求可以包括以下当中的至少一个:持续时间;频率;非中断的能力;原子性;所需的等待时间保证;最大等待时间。针对中断的安全和/或安全性要求可以包括以下当中的至少一个:隐私;核寄存器;硬件上下文隐私;共享;许可。每个中断可以与以下一个或多个参数相关联:指派的优先级要求、定时要求、安全和/或安全性要求。每个参数定义将应用于系统中的中断操作的约束,并且可以用于确定该中断相对于系统的其它中断的相对优先级。图2示意性地图示了可以与中断相关联的持续时间、频率和非中断能力参数。持续时间参数定义中断服务例程(isr)响应中断请求而执行所需的时间段。在一个实施例中,持续时间是允许中断服务例程(isr)响应于中断而执行而不被系统中断的最大时间段。持续时间参数可以用于调整中断的相对优先级。例如,当发生会破坏第一个中断的持续时间要求的另一个中断时,第一个中断被授予更高的相对优先级,使得不破坏持续时间要求。频率参数定义中断的发生率(rate)。在一个实施例中,频率定义系统应当允许的最小中断发生率。频率参数可以用于调整中断的相对优先级。例如,当发生会破坏第一个中断的频率要求的另一个中断时,第一个中断被授予更高的相对优先级,使得不破坏频率要求。但是,同样当发生不会破坏第一个中断的频率要求的另一个中断时,只要仍然满足频率要求,第一个中断就被授予较低的相对优先级。非中断能力参数定义非中断能力的最小时间段,即,中断服务例程(isr)不能被中断的最小时间段。也可使用非中断能力参数来确定何时可以中断isr以及中断多长时间。非中断能力参数可以用于放宽对中断例程的频率和持续时间的要求,使得不一定推断出更高的相对优先级。原子性参数定义是否需要以原子方式执行isr,使得或者执行整个isr,或者不执行任何isr。所需的等待时间(latency)保证参数定义硬件通知cpu中断请求和软件处理程序(handler)开始对中断请求起作用之间的最大允许时间延迟。所需的等待时间保证参数对安全至关重要的应用和安全性应用是重要的。这是因为,当超过所需的等待时间保证参数时,它可以指示系统有问题或者系统可能受到攻击。图3示意性地图示了可以与中断相关联的最大等待时间参数。最大等待时间参数定义isr必须终止的最大时间段。在一个实施例中,可需要每3小时发生一次周期性系统定时器模块中断,但仅花10分钟运行。最大等待时间参数可以用于确定最大中断能力时间,即,isr可以被中断或延迟的最大时间段。在最大等待时间时间到期后,中断必须完成。因此,最大等待时间参数定义来自周期性系统定时器模块的中断请求可以中断最多2小时50分钟,但必须在最后10分钟内运行。最大等待时间参数可以在isr必须终止的时间段开始时降低中断的相对优先级,但也可以被用于在接近isr必须终止的时间段的结束时增加中断的相对优先级。隐私参数定义在中断服务例程运行之后是否需要清除中央处理单元(cpu)寄存器和硬件内容,例如清除密码或id信息,或者是否可以跳过寄存器清除。核寄存器参数定义在中断期间需要保存哪些cpu寄存器。保存cpu寄存器意味着存储cpu寄存器,以防中断代码需要更改它们。硬件上下文隐私参数定义何时需要存储和擦除外围设备的状态。当要运行较高的相对中断时,可能需要这样做。然后在已经运行了较高的相对中断之后恢复外围设备的状态,使得可以继续操作。因此,阻止共享的外围设备寄存器在上下文切换中泄漏。共享参数定义可以共享哪些外围设备/资源,即,是否可以共享存储器。一些中断将不允许共享外围设备,以便维持安全要求,而其它中断可能不是对安全性至关重要的,因此将允许共享。许可参数定义中断需要访问哪些外围设备或资源,以及这种访问是必须独占的还是可以共享的。中断参数定义关于中断的信息,并且被用于确定相关联的中断相对于系统的其它中断的相对优先级。确定相对优先级,使得遵守在中断参数中定义的约束。例如,具有定义isr必须响应于中断请求而执行的小时间段的持续时间参数的中断被确定为比具有定义isr必须执行的较大时间段的持续时间参数的中断需要更高的相对优先级。因此,每个中断按照其参数并相对于系统的其它中断进行优先级排序。与每个中断相关联的相对优先级可以随时间改变。例如,周期性系统定时器模块可以具有定义中断需要每3小时运行一次的最大等待时间参数。当由最大等待时间参数定义的时间段没有接近到期时,例如在2小时处,相关联的中断相对于系统的其它中断可以具有相对低的优先级。但是,当由最大等待时间参数定义的时间段接近到期时,例如在2小时50分钟处,则相关联的中断相对于系统的其它中断可以具有相对高的优先级。一旦该中断运行,并且最大等待时间参数被重置,则相对低的优先级就再次与该中断相关联。根据中断参数的改变,在系统操作期间调整所确定的相对优先级。系统的监督模块在系统操作期间确定系统的中断的相对优先级,从而在由中断控制器处理中断之前调整中断的相对优先级。以这种方式,即使在系统操作期间需要调整线程优先级时,也可以利用已知中断控制器的有限硬件,监督模块调整相对优先级。在中断参数改变或达到中断/调度期限时触发监督模块,这会导致需要更改中断的相对优先级。根据一个实施例,监督模块在中断控制器外部。在编译时、运行时或安装时,系统的监督模块对系统的中断进行优先级排序,它确定每个中断的相对优先级。基于由与每个中断和系统的其它中断相关联的中断参数定义的约束,对系统的中断进行优先级排序。当新模块被添加到系统时,监督模块重新平衡系统的所有模块的相对优先级,以避免中断冲突。可以在编译时和/或在运行时将新模块添加到系统。根据一个实施例,中断控制器的硬件优先级可以在所有中断被服务时对所有中断重新进行优先级排序。因此,当中断参数的改变导致需要改变中断的相对优先级时,监督模块确定对相对中断优先级的更新的次序,使得每个单独的和原子的更新不破坏预期的优先级。这是因为,出于安全原因,不应当关闭中断以进行按原子方式的重新配置。在一个实施例中,执行检查以确认与每个中断相关联的相对优先级适合于那个中断,使得满足由与那个中断相关联的中断参数定义的约束。由系统的监督模块对系统的每个模块的中断进行相对于系统的其它中断的优先级排序。然后,系统的用户可以接收协调的中断,作为签名的配置块或作为签名的固件更新的一部分。中断相对于系统的其它中断进行优先级排序,以避免在系统运行时发生中断冲突。在一些情况下,监督模块可能无法确定两个或更多个中断之间的哪个中断需要更高的优先级,并且因此无法确定针对那些中断的相对优先级。在那种情况下,系统的用户/安装者需要确定那些中断的相对优先级。用户/安装者仅需要在系统无法确定优先级时做出确定。在用户对中断进行优先级排序之后,系统将使用那个用户优先级排序来确定中断的相对优先级,以避免在系统运行时的中断冲突,并且将不要求用户再次确定相同的中断冲突。当监督模块能够确定两个或更多个中断之间的哪个中断需要更高的优先级并因此确定相对优先级时,不需要用户输入。用户“相信”监督模块的协调,并且不需要理解相对优先级背后的推理。可以进行检查,以确定中断参数是否与它们访问的外围设备和资源兼容并且强加了正确的安全性级别。因此,可以验证中断参数,使得应用正确的安全性级别。监督模块组合在中断参数中定义的每个中断的要求,这些要求可以随时间改变(例如,当由最大等待时间参数定义的时间段接近到期时,相关联的中断相对于系统的其它中断具有更高的相对优先级),以及随空间改变(例如,当共享参数定义可以/不可以共享和/或访问哪些外围设备/资源时)。中断参数定义“时间”访问许可以及“空间”访问许可。时间访问许可控制对时域的访问,诸如受保证的cpu资源和/或等待时间要求。空间访问许可控制对存储器的访问,包括对外围存储器区域和io端口的访问。在需要虚拟化访问特权的情况下(或者是由于硬件中没有足够的空间acl寄存器来同时允许访问,或者是由于跨安全性域共享特定外围设备(切换开销)),空间访问许可影响时域acl。空间或时间要求的授予取决于nd安全性域的许可。例如,对于低特权安全性域,非常严格(tight)的实时中断配置将是不可接受的。时间访问许可和空间访问许可的复杂要求被编译成可由监督模块应用的中断参数,使得可以使用简单的中断控制器。根据一个实施例,可以将中断参数编译成可以由监督模块执行的状态机,状态机响应于中断参数的改变而改变状态,例如当最大等待时间参数接近到期时。图4图示了包括周期性系统定时器模块12和模块14并且还包括无线堆栈(stack)模块16和加密api模块18的另一个系统。周期性系统定时器模块12和无线堆栈模块16都具有“至关重要的”指派的优先级参数。但是,周期性系统定时器模块12具有120分钟的最大等待时间参数,而无线堆栈模块16具有1毫秒的最大等待时间参数。当由周期性系统最大等待时间参数定义的时间段不接近到期时,无线堆栈模块16的相对优先级被设置为高于周期性系统定时器模块12的相对优先级,使得来自无线堆栈模块16的中断请求在来自周期性系统定时器模块12的中断请求之前运行。例如,来自周期性系统定时器模块12的中断请求需要在周期性系统最大等待时间参数中定义的周期性系统最大等待时间时间帧内运行(即,每120分钟一次),否则周期性系统定时器将消逝(elapse)并生成超时信号,这是不期望的。但是,来自无线堆栈模块16的中断请求需要在无线堆栈最大等待时间参数中定义的无线堆栈最大等待时间时间帧内运行(即,每1毫秒一次),否则到互联网的连接将丢失。因此,当由周期性系统最大等待时间参数定义的时间段不接近到期时,来自无线堆栈模块16的中断请求被指派比来自周期性系统定时器模块12的中断请求更高的相对优先级。但是,当周期性系统时定时器模块中断请求尚未运行且由周期性系统最大等待时间参数定义的时间段接近到期时,来自周期性系统定时器模块12的中断请求被指派比来自无线堆栈模块16的中断请求更高的相对优先级,使得运行来自周期性系统定时器模块12的中断请求。虽然这会导致互联网连接暂时丢失,但是可以重置周期性系统定时器,这对整个系统更有利。此外,一旦来自周期性系统定时器模块12的中断请求已成功运行,周期性系统定时器模块12的相对优先级就被重新调整为低于无线堆栈模块16的相对优先级,因为由周期性系统最大等待时间参数定义的时间段已被重置并且不接近到期。从系统的不同模块到系统的同一模块的中断请求可以具有不同的安全和/或安全性要求。在一个实施例中,参考图4,来自周期性系统定时器模块12的、需要访问加密api模块18的中断请求与来自无线堆栈模块16的、也需要访问加密api模块18的中断请求具有不同的安全和/或安全性要求。图5示意性地图示了用于对中断请求进行优先级排序的过程的流程图。在步骤s201处,读取与中断相关联的(一个或多个)中断参数。在步骤s202处,取决于至少一个参数,为每个中断确定优先级。在步骤s203处,基于它们确定的优先级并且相对于系统的其它中断的所确定的优先级,对每个中断进行优先级排序。在步骤s204处,当系统不能相对于系统的其它中断对中断进行优先级排序时,则请求用户对中断进行优先级排序。在步骤s205处,对照中断需要访问的外围设备或资源中的至少一个来验证每个中断的参数。步骤s205是可选的。此外,步骤s205可以在该过程中更早地执行,诸如在步骤s201之后。在一个实施例中,可以生成系统的每个模块的多个实例。可以被视为“父”模块的每个模块具有与其需要保持的安全/私有状态的数量一样多的实例。参考图4,为来自周期性系统定时器模块12的请求创建父加密api模块18的实例18a,并且为来自无线堆栈模块16的请求创建父加密api模块18的实例18b。可以根据需要生成模块的每个实例,并且是“父模块”的副本。为模块的每个实例分配对于那个实例是私有的新存储器块,包括模块堆栈、堆和私有上下文。此外,模块的每个实例包括“父”模块中断和中断参数的副本。复制的中断参数在适当的时候分别应用于每个实例中断。因此,根据需要,模块的每个实例可以具有与“父”模块的相对优先级以及模块的其它实例的相对优先级不同的相对优先级。同一“父”模块的具有可变中断参数的实例可以具有不同的相对优先级。例如,具有接近到期的最大等待时间参数的周期性系统定时器模块的实例可能比具有不接近到期的最大等待时间参数的周期性系统定时器模块的实例具有更高的相对优先级。系统将模块的每个实例视为单独的模块。关于系统的模块之间的切换,为了并发地执行多个进程或线程,实际上可以在模块的实例之间进行切换。每个线程可以有模块的一个实例,并且每个实例能够具有与“父”模块和模块的其它实例不同的相对优先级。可以根据需要创建模块的实例。在一个实施例中,在运行时创建实例。参考图4,周期性系统定时器模块12和无线堆栈模块16都调用加密api模块18,因此系统被认为包括四个模块,周期性系统定时器模块12、无线堆栈模块16、当从周期性系统定时器模块12调用时的加密api模块18a,以及当从无线堆栈模块16调用时的加密api模块18b。加密api模块18a和18b共享相同的代码但使用两个彼此隔离的不同存储器。与所有其它安全模块一样,实例18a和18b是相互不信任的。可以动态地创建和销毁实例,而常规的安全模块是静态的并在编译时分配。作为与周期性性系统定时器模块12和无线堆栈模块16相关联的参数的结果,当从周期性系统定时器模块12调用时从加密api模块18a发出的中断请求可以与当从无线堆栈模块16调用时从加密api模块18b发出的中断请求具有不同的参数。因此,当从周期性系统定时器模块12调用时从加密api模块18a发出的中断请求可以与当从无线堆栈模块16调用时从加密api模块18b发出的中断请求具有不同的相对优先级。图6图示了多个实例。如图6中所示,系统包括app0100和app1110。两个应用都需要tls模块和加密api模块,以便执行安全通信。但是,为了维护每个应用100、110的安全性,生成tls模块和加密api模块的更多实例。然后,app0100使用tls0120实例和加密api0140实例以执行安全通信,而app1110然后使用tls1130实例和加密api1150实例以执行安全通信。每次需要已经被不同模块需要的模块时,生成该模块的新实例。如果不再需要,那么有可能在使用后删除实例。可以为每个模块提供可选的处理程序,用于在预定的最大时间帧内挂起和恢复操作。处理程序允许操作系统挂起正在进行的操作,并且当正在进行的操作被其自己的更高优先级的实例中断时在随后恢复它。当模块没有及时挂起操作时,操作系统使各模块操作一起终止,迫使模块在已经执行较高优先级实例操作时重启那个操作。例如,模块的每个实例可以包括定时参数time_latency_instance_switch。time_latency_instance_switch参数定义可以挂起正在进行的操作的最大时间段。time_latency_instance_switch参数定义如下时间段,该时间段等于module_instance_switch所需的时间段加上call_suspend所需的时间段加上wait_suspend所需的时间段。此外,time_latency_instance_switch参数定义小于模块的最大等待时间参数的时间段。非中断能力参数定义非中断能力的最小时间段,即,中断服务例程(isr)不能被中断的最小时间段。还有可能使用非中断能力参数来确定何时可以中断isr以及中断多长时间。可以将系统的模块/模块的实例的组合视为组。可以为系统的每个进程确定组,这些进程需要访问系统的多于一个模块。为每个进程识别执行流,表示那个进程所需的不同模块之间的完整调用踪迹。执行流被系统的监督模块用来定义系统的组。进程所需的模块被视为组,并且相对优先级可以与每个组相关联。每个组的相对优先级取决于与该组的每个模块相关联的(一个或多个)中断参数。组还可以包括模块的实例以及模块。从为每个进程识别出的执行流推断组。执行流所需的模块/每个模块的实例不是物理地形成为组,因此模块可以是多于一个组的一部分。定义组,使得可以为每个组确定组相对优先级和组参数。组相对优先级和组参数适用于从由该组定义的模块的组合发出的中断。组相对优先级和组参数可以在系统使用时节省时间。参考图4,周期性系统定时器模块12和加密api实例18a形成具有相关联的相对优先级的第一组20,并且无线堆栈模块16和加密api实例18b形成具有相关联的相对优先级的第二组22。参考图6,app0100、tls0120和加密api0140形成第一组160,并且app1110、tls1130和加密api1150形成第二组170。组160和170都具有与从那个组发出的中断请求相关联的相对优先级。虽然图4图示了加密api模块18的两个实例,但是有可能在不生成模块的实例的情况下形成组。图7图示了类似于图4的系统,但是包括附加模块,应用sillyapp24,该应用需要访问无线堆栈16。来自无线堆栈16的中断请求具有高相对优先级,而来自sillyapp24的中断请求不需要高相对优先级,例如与sillyapp24相关联的指派的优先级参数是低的。因此,通过将sillyapp24与无线堆栈16a的实例分组在一起,由于请求最终从sillyapp24发出,来自无线堆栈16a的中断请求不与高相对优先级相关联而是与较低的相对优先级相关联。相对于系统的其它组并且相对于系统的各个模块,每个组与其自己的相对优先级相关联。作为与组的每个模块相关联的(一个或多个)中断参数的结果,为整个组确定每个组的相对优先级。当应用/模块被添加到系统时,可以在编译时或在系统更新时定义组。可以向整个系统的用户/安装者提供组通知,通知每个组的用户并请求用户批准每个组。还可以请求用户批准每个组的相对优先级。通过要求用户批准每个组,可以改进整个系统的安全性。在另一个实施例中,不请求用户/安装者批准组和/或每个组的相对优先级。在另一个实施例中,可以在运行时定义组。但是,在这个实施例中,可以不请求用户/安装者批准组和/或每个组的相对优先级。在运行时确定组可以是有用的,例如,用于诊断和代码执行指纹识别。如上所述,与每个模块相关联的参数由模块的提供者定义。当参数不在系统中造成任何中断冲突时,即使模块实际上不需要这样的参数,系统也会接受该参数,因为它不会阻止系统运行。例如,当模块具有高指派的优先级时,当该高指派的优先级不阻止系统运行时,系统接受该高指派的优先级。但是,如果这种高指派的优先级在系统中产生冲突,那么或者系统将调整模块的相对优先级,从而有效地降低指派的优先级,或者系统将请求用户的输入来解决潜在的冲突。在这个时候,用户有可能将调整指派的优先级以使其更适合于模块。一旦确认了中断的优先级,就不再询问用户。根据一个实施例,应用于组的参数从组的主模块应用。参考图7,组26的主模块是sillyapp24,因此与sillyapp24相关联的参数被应用于从主模块(sillyapp24)调用的每个后续模块,以及从已从主模块调用的模块调用的每个后续模块,依此类推。参考图8,app0100和app1110是它们相应的组的主模块,并且app0100和app1110都具有相关联的参数。与app0100和app1110相关联的参数被应用于最终从app0100或app1110调用的每个后续模块。为app0100定义的参数被应用于tls0120、加密api0140和模块180,而为app1110定义的参数被应用于tls1130、加密api1150和模块190。根据另一个实施例,当为多个模块推断相对优先级时,可以使用规则集或引擎来确定来自多个模块的哪个(哪些)参数在前。规则集的示例如下所示:groupx=((prioa>priob>prioc)<(priod=prioe:non_interruptble))groupy=priof:non_interruptible>(priog=groupidle)groupidle=priohgroupy>groupxgroupx>groupidlegroupx包括五个模块,其优先级为prioa、priob、prioc、priod和prioe,其中prioa>priob>prioc并且它们都具有低于priod和prioe的优先级,其中priod和prioe具有同等的优先级。groupy包括两个模块,其优先级为priof和priog,其中priof具有高于priog的优先级。groupidle包括一个模块,具有优先级prioh。priof和prioe被标记为不可中断,并且虽然groupy具有较高的优先级,但priog以低于groupx的优先级结束,以空闲优先级运行。此外,用于指派相对优先级的规则可以被映射到组上,使得在需要时可以将所述规则应用于其它软件组件。图9图示了用于实现中断参数的过程的流程图。在步骤s401处,获得每个模块的中断参数。取决于所使用的架构,中断参数可以通过若干种方式进行编码。在一个实施例中,使用数据列表结构存储中断参数,诸如与模块的中断相关联的acl之类。每个模块与定义指派的优先级、定时要求和/或安全和/或安全性要求的至少一个中断参数相关联。例如,软件模块使用三个中断通道,通道42、通道43和通道44。软件模块具有以下中断参数:1.通道42具有最高指派的优先级,并且通道43和44具有相等的指派的优先级,低于42——指派的优先级参数的示例;2.通道42具有500ms的最大持续时间要求——定时参数的示例;3.通道42具有30ms的非中断能力要求(即,中断服务例程在其前30ms内不被中断,但如果需要可以稍后在30ms和500ms之间被中断)——定时参数的示例;4.通道43和44具有200ms的频率要求(即,平均每200ms发生中断)——定时参数的示例;以及5.通道42被标记为安全至关重要——安全和/或安全性参数的示例。在步骤s402处,生成执行流。为每个进程识别每个执行流,表示那个进程中的不同模块之间的完整调用踪迹。这个信息被用于定义组。步骤s402是可选的,因为并非所有实现都使用多线程或执行流。在步骤s403处,如果定义了组,那么基于与每个模块和每个组相关联的中断参数生成参数配置。系统的监督模块获取在步骤s401处输入的中断参数,并生成可以用于强制执行中断参数的硬件和软件配置。硬件和软件参数配置可以随架构而异,但中断参数相同。在大多数应用中,参数配置将最终成为两个元素:1.硬件优先级级别;以及2.硬件定时器配置。参数配置实际上与在步骤s401处输入的原始中断参数不同。这是因为,取决于具体实现,可以使用不同的硬件/软件特征来实现相同的中断参数。例如,定时参数(诸如上面的规则2、3和4)可以使用硬件中断级别而不是硬件计时器来实现。但是,这是特定于实现的并且取决于可用的硬件特征。在步骤s404处,检查所生成的硬件定时器配置的定时要求,并且在步骤s405处,检查优先级级别配置的优先级要求。例如,可以进行检查,以确定中断是否已经被提供了适当的相对优先级,以使中断参数的约束相对于系统的其它中断有效。此外,可以进行检查,以确定中断参数是否与它们访问的外围设备和资源兼容并且强加了正确的安全性级别。因此,可以验证中断参数,使得应用正确的安全性级别。可以动态地改变中断优先级的层级,以适应中断参数,例如,适应需要很少或短暂发生的中断。例如,如上所述,当持续时间参数接近到期时,来自周期性系统定时器模块的中断请求可以在层级中升高,并且当持续时间参数被重置时,所述中断请求可以在层级中降低。然后在步骤s406处确定所生成的配置是否可行的或者是否存在任何irq冲突。当检测到冲突时,过程移到步骤s407。在步骤s407处,或者通过向用户询问将冲突的中断请求进行优先级排序或者通过放宽冲突的中断请求的参数的最不至关重要的要求来解决冲突。然后,过程返回到步骤s406,在那里确定所生成的配置是否是可行的或者是否存在任何irq冲突。当没有检测到冲突时,过程移到步骤s408。在步骤s408处,生成硬件优先级和配置。图9的过程可以在编译时、或在运行时或在系统更新期间执行。如本领域技术人员将认识到的,本技术可以体现为系统、方法或计算机程序产品。因而,本技术可以采取完全硬件实施例、完全软件实施例或组合软件和硬件的实施例的形式。此外,本技术可以采取实施在计算机可读介质中的计算机程序产品的形式,计算机可读介质上实施有计算机可读程序代码。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或者前述的任意合适组合。用于执行本技术的操作的计算机程序代码可以用一种或多种编程语言的任意组合来编写,包括面向对象的编程语言和常规的过程编程语言。例如,用于执行本技术的操作的程序代码可以包括常规编程语言(解释或编译)的源、对象或可执行代码(诸如c、或汇编代码之类),用于设置或控制asic(专用集成电路)或fpga(现场可编程门阵列)的代码,或用于硬件描述语言(诸如verilogtm或vhdl(超高速集成电路硬件描述语言)之类)的代码。程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过任何类型的网络连接到用户的计算机。代码组件可以实施为过程、方法等,并且可以包括子部件,子组件可以采取任何抽象级别的指令或指令序列的形式,从本机指令集的直接机器指令到高级别编译或解释的语言构造。本领域技术人员还将清楚的是,根据本技术的优选实施例的逻辑方法的全部或部分可以适当地实施在包括逻辑元件的逻辑装置中,以执行该方法的步骤,并且这种逻辑元件可以在例如可编程逻辑阵列或专用集成电路中包括诸如逻辑门之类的组件。这种逻辑布置还可以实施在使用例如虚拟硬件描述符语言在这种阵列或电路中临时或永久地确立逻辑结构的使能元件中,所述使能元件可以使用固定或可发送的载体媒体来存储和发送。在一个替代方案中,本技术的实施例可以以部署服务的计算机实现的方法的形式实现,该方法包括部署计算机程序代码的步骤,该计算机程序代码可操作,以在部署到计算机基础设施或网络中并在其上执行时使所述计算机系统或网络执行该方法的所有步骤。在另一个替代方案中,本技术的优选实施例可以以其上具有功能数据的数据载体的形式实现,所述功能数据包括功能计算机数据结构,以便在加载到计算机系统或网络中并由此在其上操作时,使所述计算机系统能够执行该方法的所有步骤。本领域技术人员将清楚的是,在不脱离本技术的范围的情况下,可以对前述示例性实施例进行许多改进和修改。如从前面的说明书中认识到的,描述了提供用于约束处理元件中的系统中断的操作的机器实现的方法的技术。由此减少当处理元件运行时中断冲突的次数。在实施例中,所述至少一个中断参数包括以下当中的至少一个:针对所述中断的指派的优先级要求;针对所述中断的定时要求;针对所述中断的安全和/或安全性要求。在实施例中,该方法在运行时执行。在实施例中,该方法在编译时执行。在实施例中,该方法在将新模块添加到所述系统时执行。在实施例中,在中断被中断控制器处理之前执行每个中断的重新优先级排序。在实施例中,所述方法还包括:对照所述中断需要访问的外围设备或资源中的至少一个来验证所述参数。验证参数提供对应用了适当的安全性级别和访问的检查。在实施例中,针对所述中断的所述定时要求包括以下当中的一个或多个:针对所述中断的时间_等待时间_实例_切换time_latency_instance_switch要求;针对所述中断的持续时间要求;针对所述中断的发生频率要求;针对所述中断的原子性要求;针对所述中断的非中断能力要求;针对所述中断的所需等待时间保证要求;以及针对所述中断的最大等待时间要求。定时要求可以用于调整相关联的中断的优先级,以减少当处理元件运行时中断冲突的次数。在实施例中,针对所述中断的所述安全和/或安全性要求包括以下当中的一个或多个:针对所述中断的访问许可要求;针对所述中断的隐私要求;针对所述中断的核寄存器要求;针对所述中断的硬件上下文隐私要求;以及针对所述中断的共享要求。安全和/或安全性要求可以用于在处理元件运行时维持适当的安全性级别。在实施例中,针对所述中断的所述time_latency_instance_switch要求定义能够挂起正在进行的操作的最大时间段。在实施例中,针对所述中断的所述持续时间要求定义响应于中断请求而执行所述中断所需的时间段。持续时间要求可以用于确保相关联的中断被授予正确的相对优先级。在实施例中,针对所述中断的所述非中断能力要求定义是否能够中断所述中断、何时能够中断所述中断,以及所述中断能够被中断多长时间。非中断能力要求可以用于确保相关联的中断被授予正确的相对优先级。在实施例中,针对所述中断的所述所需等待时间保证要求定义中断请求的通知与响应于所述通知的所述中断的发起之间的最大可允许时间延迟。所需等待时间保证要求可以用于确保相关联的中断被授予正确的相对优先级并且维持处理元件的安全性。在实施例中,针对所述中断的所述最大等待时间要求定义所述中断要在其中终止的最大时间段。最大等待时间要求避免在所需中断未运行时处理元件冻结。在实施例中,针对所述中断的所述发生频率要求定义所述中断的最小发生率。发生频率要求避免处理元件冻结。在实施例中,针对所述中断的所述原子性要求定义是否需要以原子方式执行所述中断。在实施例中,针对所述中断的所述核寄存器要求定义在中断期间要保存哪些cpu寄存器。存储cpu寄存器以防中断代码需要更改它们。在实施例中,针对所述中断的所述硬件上下文隐私要求定义何时需要存储和擦除外围设备的状态。然后在已运行较高相对中断之后恢复外围设备的状态,以便可以继续操作。因此,阻止共享的外围设备寄存器在上下文切换中泄漏。在实施例中,针对所述中断的所述共享要求定义能够共享哪些外围设备。通过阻止中断共享未授权的外围设备来增加处理元件的安全性。在实施例中,针对所述中断的所述隐私要求定义在中断服务例程已经运行之后是否需要清除中央处理单元(cpu)寄存器和硬件内容,或者是否能够跳过寄存器清除。通过清除密码和/或id信息来增加处理元件的安全性。在实施例中,针对所述中断的所述访问许可要求定义所述中断需要访问哪些外围设备或资源,以及这种访问是独占的还是能够共享的。处理元件的安全性增加。在实施例中,所述中断参数存储在与每个所述中断相关联的数据列表结构中。导致以简单的方式存储参数。在实施例中,所述参数存储在访问控制列表(acl)中。在实施例中,所述方法还包括:当所述中断中的至少一个中断不能相对于所述处理元件的所述其它中断进行优先级排序时,请求用户的输入。仅当处理元件无法解决冲突时,才请求用户解决冲突。如从前面的说明书中可以认识到的,描述了提供用于在处理元件中创建模块的一个或多个实例的机器实现的方法的技术。通过创建模块的多个实例,可以增强系统模块的安全性。在实施例中,所述方法还包括:响应于在系统操作期间对所述相关联的中断参数中的一个或多个的改变,在所述中断由中断控制器处理之前,调整所述确定的相对中断优先级,并按照所调整的相对中断优先级,相对于所述系统的其它中断对每个所复制的中断重新进行优先级排序。在实施例中,所述方法还包括:根据需要动态地创建所述模块的所述一个或多个实例。在实施例中,所述方法还包括:当不再需要所述模块的所述一个或多个实例时,删除所述模块的所述一个或多个实例。在实施例中,所述方法还包括:按照所述至少一个参数对每个所述中断进行优先级排序;并且相对于所述处理元件的其它中断对每个所述中断进行优先级排序。在实施例中,所述模块的所述一个或多个实例的每个所述中断的所述优先级排序对于所述模块的每个所述一个或多个实例变化。因此,每个实例可以具有与其中断相关联的不同相对优先级。在实施例中,所述中断参数包括以下当中的至少一个:针对所述中断的指派的优先级要求;针对所述中断的定时要求;针对所述中断的安全和/或安全性要求。在实施例中,所述处理系统包括多个模块,每个所述模块能够发出所述中断。该方法还包括:在监督模块处,针对每个复制的中断,根据所述相关联的中断参数中的至少一个确定相对中断优先级;按照所确定的相对中断优先级,在所述监督模块处,相对于所述系统的其它中断对每个所复制的中断进行优先级排序;以及,响应于在系统操作期间对所述至少一个相关联的中断参数的改变而调整所确定的相对中断优先级,并在所复制的中断由中断控制器处理之前,按照所调整的相对中断优先级,相对于所述系统的其它中断对每个所复制的中断重新进行优先级排序。在实施例中,所述模块包括硬件模块或软件模块。在实施例中,所述组在编译时或在运行时或在安装时定义。如从前面的说明书中可以认识到的,描述了提供用于约束处理元件中系统中断的操作的数据处理器的技术。因此减少了处理元件运行时中断冲突的次数。在实施例中,所述处理电路系统还被配置为对照所述中断需要访问的外围设备或资源中的至少一个来验证所述参数。在实施例中,所述处理电路系统还被配置为当所述处理电路系统不能相对于所述处理元件的所述其它中断对每个所述中断进行优先级排序时,请求用户的输入。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1