在嵌入式实时系统中设置调度禁区的系统技术方案

技术编号:2841469 阅读:182 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种在嵌入式实时系统中设置调度禁区的系统,包含:访问判断模块,判断进程对系统的访问是否有返回值;变量判断模块,当有返回值,确定影响该返回值的局部变量,判断该局部变量的变化是否与全局变量相关;代码段定位模块,如相关,确定影响该局部变量的全局变量,定位对该全局变量与局部变量进行操作的代码段;代码段加锁模块,将所述两个代码段作为一个整体加锁,设为调度禁区;进程遍历模块,遍历全部进程,从中获取一个进程给访问判断模块进行判断;变量验证模块,通过查询全局变量所能影响到的变量,检查调度禁区的设置是否有遗漏,如有,则把遗漏的代码段设为调度禁区。本发明专利技术更精细的划分了嵌入式实时系统中的调度禁区。

【技术实现步骤摘要】

本专利技术涉及一种设置调度禁区的系统,尤其涉及一种在嵌入式实时系统中设置调度禁区的系统
技术介绍
随着嵌入式系统功能的增强,现在大多数系统都采用了多进程的方式。而作为实时应用系统,进程调度成了嵌入式实时操作系统(RTOS-Real-TimeOperating System)中最关键的部分,因为进程调度所耗的时间直接关系到了实时系统的实时性。进程的调度可以分成两部分一是进行进程“上下文”的交换,称为进程切换,它属于进程调度的后半部分;前半部分则是用来确定进程调度的时机,称为进程调度。在现在流行的嵌入式系统设计中,大家一般醉心优化进程切换操作。而即使是较复杂的系统,也往往只会多十几条指令,虽然速度确实会慢些,但对于现代CPU越来越快的运行速度,这方面的差别实际上可以忽略不计。然而,进程调度就不同了,特别是当系统因功能的增强而越来越复杂时,同时运行的进程数急剧增加,实时调度策略运用又使得进程调度算法变得更复杂,这就会增加系统的调度延迟。但系统调度延迟主要还不在于此,而在于从产生调度要求到实施真正的进程调度,即进行切换,所需等待的时间。对于实时系统来说,最好是有调度请求,就能立即进行调度,因为这样才能更好地满足实现高优先级任务的要求。不论调度的请求是由当前进程主动发起的,还是由于中断产生更紧迫的任务,抢占CPU运行的任务往往具有更高的优先级。然而这只是个美好的愿望,因为在多进程的环境中不可能不存在“调度禁区”。调度禁区就是禁止进行进程切换的代码段。事实上,整个系统所有“调度禁区”的勘定极为困难。对于简单地系统,也许靠经验丰富的系统设计人员可以划分出所需调度保护的代码片断。但对于日益复杂的嵌入式系统,如智能手机等,则几乎不可能了。为了满足嵌入式系统实时性的要求,目前常用的做法有两种一种是以时间片或定时器的方式统一限定了进程不可进行调度的时间限制;二是在嵌入式操作系统设计时,对“调度禁区”进行粗略地划分。明显对于第一种策略简单易行,但会产生当没有调度请求时也要进行进程调度,这与节约宝贵的嵌入式系统的精神是不相符的。第二种策略以最新嵌入式Linux2.6为代表,正是看到了第一种策略的弱点,对调度禁区进行了划分,并对操作系统的内核进行了修补,以实现更精确的实时调度。但是鉴于系统的复杂性,这种划分往往是粗略的,而耗时最长的调度禁区,它将决定我们嵌入式系统的实时性能。像嵌入式Linux2.6就是利用调度禁区与对称多处理器(SMP-Symmetric MultipleProcessor)结构的“访问禁区”大部分重合的特点,充分利用了“访问禁区”机制来实现规避调度禁区的实时调度。然而调度禁区并不完全与“访问禁区,,重合,里面又包含了多余的“访问禁区”成分。而且目前“禁区”,地划分无章可循,谁也不能保证是否有“调度禁区”被遗漏,如果真被遗漏了,那对整个系统都可能是灾难性,而且故障极难定位。
技术实现思路
本专利技术所要解决的技术问题在于提供一种在嵌入式实时系统中设置调度禁区的系统,从而更精细的划分嵌入式实时系统中的调度禁区。为了解决上述技术问题,本专利技术提供一种在嵌入式实时系统中设置调度禁区的系统,包含访问判断模块,用于在该进程与操作系统交互的接口处,判断该进程对操作系统的访问是否有返回值;变量判断模块,当该进程对操作系统的访问有返回值时,用于确定影响该返回值的内部局部变量,并判断该局部变量的变化是否与全局变量相关;代码段定位模块,当该局部变量的变化与全局变量相关时,用于确定影响该局部变量的全局变量,并定位对该全局变量进行的操作的代码段与对该局部变量进行操作的代码段;代码段加锁模块,用于将所述两个代码段紧密的放在一起,作为一个整体代码段加锁,设置该区域为调度禁区;进程遍历模块,用于在所述嵌入式系统中遍历全部进程,从中获取一个进程给所述访问判断模块进行判断;变量验证模块,用于通过查询所述嵌入式实时系统的操作系统内核中的全局变量所能影响到的变量,检查所述调度禁区的设置是否有遗漏,如果有遗漏,则对遗漏的代码段加锁,设置为调度禁区。其中,所述变量验证模块包含变量查询模块,用于根据全局变量,确定该全局变量所能影响到的变量;变量重判断模块,用于判断该受全局变量影响的变量是否会对系统进程的执行结果产生影响;代码段重定位模块,当该受全局变量影响的变量会对系统进程的执行结果产生影响时,定位对该全局变量进行操作的代码段与对该受全局变量影响的变量进行操作的代码段;代码段重加锁模块,用于将所述两个代码段紧密的放在一起,作为一个整体代码段加锁,设置该区域为调度禁区;变量遍历模块,用于遍历所述操作系统内核中的所有全局变量,将每个全局变量依次提供给所述变量查询模块。本专利技术的优点在于通过本专利技术提供的系统可以精细化划分嵌入式实时系统的调度禁区,避免了调度禁区被遗漏的现象,有力地保证整个系统设计的稳定性,同时使得调度禁区短小精悍,从而使得新的调度请求可以迅速得到响应,极大提高了系统的实时性能。附图说明图1为根据本专利技术实施例所述的设置调度禁区的系统结构图;图2为根据本专利技术实施例所述的变量验证模块结构图;图3为根据本专利技术实施例所述的设置调度禁区的方法流程图;图4为根据本专利技术实施例所述的全局变量验证方法流程图。具体实施例方式下面结合附图,对本专利技术的实施例进行详细说明。要划分调度禁区,就是要对嵌入式操作系统中的代码段进行审查,将确实不允许在中途发生调度的代码片断保护起来,放在临界区中,即调度禁区中。如图1所示,本专利技术的系统包含访问判断模块201,用于在该进程与操作系统交互的接口处,判断该进程对操作系统的访问是否有返回值,如果该进程对操作系统的访问没有返回值,则放弃对该进程的追踪。变量判断模块202,当该进程对操作系统的访问有返回值时,用于确定影响该返回值的局部变量,并判断该局部变量的变化是否与全局变量相关,如果该局部变量的变化与全局变量无关,则放弃对该进程的追踪。代码段定位模块203,当该局部变量的变化与全局变量相关时,用于确定影响该局部变量的全局变量,并定位对该全局变量进行操作的代码段与对该局部变量进行操作的代码段;代码段加锁模块204,用于将所述两个代码段紧密的放在一起,作为一个整体代码段前/后设置lock/unlock原子操作进行加锁,设置该区域为调度禁区;进程遍历模块205,用于在所述嵌入式系统中遍历全部进程,从中获取一个进程给所述访问判断模块201进行判断;变量验证模块206,用于通过查询所述嵌入式实时系统的操作系统内核中的全局变量所能影响到的变量,检查所述调度禁区的设置是否有遗漏,如果有遗漏,则对遗漏的代码段加锁,设置为调度禁区。如图2所示,所述变量验证模块206,包括变量查询模块2061,用于根据全局变量,确定该全局变量所能影响到的局部变量。变量重判断模块2062,用于判断该受全局变量影响的局部变量是否会对系统进程的执行结果产生影响,如果判断到该受全局变量影响的局部变量不会对系统进程的执行结果产生影响,则放弃对该局部变量的追踪。代码段重定位模块2063,当该受全局变量影响的局部变量会对系统进程的执行结果产生影响时,定位对该全局变量进行操作的代码段与对该受全局变量影响的局部变量进行操作的代码段;代码段重加锁模块2064,用于将所述两个代码段紧密的放在一本文档来自技高网
...

【技术保护点】
一种在嵌入式实时系统中设置调度禁区的系统,其特征在于,包括:访问判断模块,用于在该进程与操作系统交互的接口处,判断该进程对操作系统的访问是否有返回值;变量判断模块,当该进程对操作系统的访问有返回值时,用于确定影响该返回值的内 部局部变量,并判断该局部变量的变化是否与全局变量相关;代码段定位模块,当该局部变量的变化与全局变量相关时,用于确定影响该局部变量的全局变量,并定位对该全局变量进行操作的代码段与对该局部变量进行操作的代码段;代码段加锁模块,用 于将所述两个代码段紧密的放在一起,作为一个整体代码段加锁,设置该区域为调度禁区;进程遍历模块,用于在所述嵌入式系统中遍历全部进程,从中获取一个进程给所述访问判断模块进行判断;变量验证模块,用于通过查询所述嵌入式实时系统的操作 系统内核中的全局变量所能影响到的变量,检查所述调度禁区的设置是否有遗漏,如果有遗漏,则对遗漏的代码段加锁,设置为调度禁区。

【技术特征摘要】
1.一种在嵌入式实时系统中设置调度禁区的系统,其特征在于,包括访问判断模块,用于在该进程与操作系统交互的接口处,判断该进程对操作系统的访问是否有返回值;变量判断模块,当该进程对操作系统的访问有返回值时,用于确定影响该返回值的内部局部变量,并判断该局部变量的变化是否与全局变量相关;代码段定位模块,当该局部变量的变化与全局变量相关时,用于确定影响该局部变量的全局变量,并定位对该全局变量进行操作的代码段与对该局部变量进行操作的代码段;代码段加锁模块,用于将所述两个代码段紧密的放在一起,作为一个整体代码段加锁,设置该区域为调度禁区;进程遍历模块,用于在所述嵌入式系统中遍历全部进程,从中获取一个进程给所述访问判断模块进行判断;变量验证模块,用于通过查询所述嵌入式实时系统的操作系统内核中的全局变量所能影响到的变量,检查所述调度禁区的设置是否有遗漏,如果有遗漏,则对遗漏的代码段加锁,设置为调度禁区。2.如权利要求1所述的系统,其特征在于,所述变量验证模块,包括变量查询模块,用于根据全局变量,确定该全局变量所能影响到的变量;变量重判断模块,用于判断该受全局变量影响的变量是否会对系统进程的执行结果产生影响;代码段重定位模块,当该受全局变量影响...

【专利技术属性】
技术研发人员:刘洋
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1