当前位置: 首页 > 专利查询>浙江大学专利>正文

一种微内核嵌入式实时操作系统的任务级资源管理方法技术方案

技术编号:2857612 阅读:183 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种微内核嵌入式实时操作系统的任务级资源管理方法,把资源分为两部分:内部资源和外部资源,内部资源是不需要通过调用系统API来获取和释放的;外部资源需要通过调用系统特定的应用程序接口来获取和释放,在功能较为复杂的任务中使用比较合适。一个任务最多只能占有一个内部资源。当任务进入运行状态的时候,资源被自动的获取;当任务自动结束或主动发生强制调度并退出运行状态时,其内部资源被自动的释放。一个任务可以占有多个外部资源,占有和释放外部资源必须按照先进后出的顺序进行。本发明专利技术的优点:使对资源的使用和管理更加方便,实现任务级资源管理的所需要的时间开销和空间开销很少,资源管理可以和具体调度策略相结合。

【技术实现步骤摘要】

本专利技术涉及嵌入式实时操作系统技术,主要是实现。
技术介绍
资源管理是嵌入式实时操作系统的重要组成部分。任务级资源管理是用来协调多个优先级不同任务对共享资源的访问,比如,管理实体(调度器),程序序列,内存,硬件,外设等。任务级资源管理必须要保证两个任务不能在同一时刻占有相同的资源,不会发生优先级反转(Priority Inversion),使用资源时不会发生死锁。目前,市场上占有率比较高的商业实时操作系统有VxWorks、PSOS、QNX、LynxOS、VRTX,、Windows CE等。这些为数众多的实时操作系统绝大多数都是多任务实时微内核的结构,采用的是基于优先级的可抢占式调度策略。系统为每一个任务分配一个优先权,调度程序保证当前运行的进程是优先权最高的进程。大多数的实时操作系统采用了一种称作信号量(semaphore)的机制来实现对共享资源的管理。但是,有时候会出现一种比较奇怪的现象由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃,这就是所谓的优先级反转,具体示例如下假设在一个全抢占的实时嵌入式操作系统中有4个任务(T1,T2,T3,T4),T4优先级较低,占有信号量S1。T1优先级最高,抢占T4并请求相同的信号量。由于信号量S1已经被占据,T1进入等待状态。这时,低优先级的T4被一个优先级在T1和T4之间的任务(T2或T3)中断并抢占。T1只有在低优先级任务完成后才能执行,因为信号量S1那时才能被释放。虽然T2和T3不使用信号量S1,他们的运行时间延迟了T1。另一个在任务级资源管理的同步机制中的普遍问题就是死锁问题。在这种情况下,死锁意味着任务由于相互锁定资源而无限制的等待,从而任务也就无法运行。假设在系统中有两个任务(T1,T2),高优先级的任务T1占有信号量S1,由于等待一个事件而无法运行。低优先级的任务T2占有信号量S2,转入运行状态。如果T1又进入就绪状态并且试图占有信号量S2,它又会进等待状态。这时,T2运行,如果T2试图占有信号量S1,这样T1和T2互相等待对方占有的信号量,就导致了死锁。
技术实现思路
本专利技术要解决上述现有任务级资源管理存在的缺陷,提供。本专利技术解决其技术问题所采用的技术方案。这种微内核嵌入式实时操作系统的任务级资源管理方法,把微内核嵌入式实时操作系统中的资源分为两部分内部资源和外部资源。这两者的作用是一致的,根本区别就是内部资源是不需要通过调用系统API来获取和释放的,对于用户来说,内部资源使用方便,开销小。外部资源需要通过调用系统特定的应用程序接口(API)来获取和释放,在功能较为复杂的任务中使用比较合适。一个任务最多只能占有一个内部资源。当任务进入运行状态的时候,资源被自动的获取;当任务自动结束或主动发生强制调度并退出运行状态时,其内部资源被自动的释放。一个任务可以占有多个外部资源,占有和释放外部资源必须按照先进后出(FILO)的顺序进行。本专利技术用资源优先级置顶方案解决优先级反转和死锁的问题。在资源优先级置顶方案中,系统给每一个资源(包括内部和外部)分配一个优先级,该优先级等于需要使用该资源的所有任务的最高优先级。本专利技术实现的具体步骤如下一、建立优先级的就绪队列;二、设计任务控制块(TCB),增加外部资源的指针和内部资源的优先级以及内部资源使用时所需保存的任务控制块指针;三、建立任务控制块数组以及用其优先级索引的任务控制块指针数组;四、设计外部资源的控制块(RCB),包括优先级、外部资源链表、所需保存的任务控制块指针;五、设计内部资源的获取和释放功能。如果任务T1试图获取内部资源R1,则在T1运行起来前将内部资源R1的优先级放入就绪队列,接着将R1的优先级对应的TCB指针数组中的值保存在T1的TCB中,最后将R1的优先级对应的TCB指针数组中的值置为T1。当任务T1释放内部资源R1时,先将在T1的TCB中保存的TCB恢复,然后重新设置就绪队列;六、设计外部资源的应用程序接口,主要实现获取和释放功能。当任务T2获取外部资源R2时,将R2的优先级放入就绪队列,接着将R2的优先级对应的TCB指针数组中的值保存在R2的RCB中,然后将R2的优先级对应的TCB指针数组中的值置为T2,最后把其外部资源R2和T2原有的资源组成堆栈链表,并把堆栈链表头保存在T2的TCB中。当任务T2释放资源R2时,先将R2从其堆栈链表中删除,并重置T2的TCB中的资源,接着将R2的RCB中保存的TCB恢复,最后设置就绪队列。在本专利技术中,当多任务(T1,T2,T3)试图占有同一内部资源R1时,当低优先级任务T1开始运行后,将T1本身的优先级置为资源R1的优先级。其他想试图占有资源R1的任务(T2、T3)因为优先级都低于或等于资源R1的优先级(任务T1的运行的优先级),所以在任务T1释放资源前其他任务无法抢占它,而只有当任务T1自动结束或主动发生强制调度并退出运行状态时才释放内部资源R1,也就是只有任务T1主动结束(即释放内部资源)后,其他想占有资源R1的任务T2和T3才有可能运行从而获得资源R1。当多任务(T1,T2,T3)试图占有同一外部资源R2时,低优先级任务T1开始运行后,当T1调用相应的应用程序接口(API)来获得资源R2后,任务T1的优先级为R2的优先级。当任务T1占有资源后,其他想试图占有相同资源R2的任务因为其优先级低于任务T1的运行的优先级,并且T1不能因为等待其他事件发生而进入等待状态,所以在任务T1主动释放资源前其他想占有资源R2的任务无法抢占它,这就避免了传统任务级资源管理方法所引起的优先级反转和死锁的发生。本专利技术具有如下优点1.本专利技术把资源分成内部资源和外部资源,使对资源的使用和管理更加方便。如果某个任务只有在获取资源后才有意义,就可以把该任务所要获取的资源设置为内部资源,当该任务开始运行就占有此资源,任务主动结束就释放该资源,任务本身就不需要再显示调用应用程序接口来获取和释放资源。2.在本专利技术中,实现任务级资源管理的所需要的时间开销和空间开销很少。在使用内部资源的时候基本上和无资源时任务执行的开销相接近,非常适合微内核嵌入式实时操作系统。3.本专利技术中的任务级资源管理可以和具体调度策略相结合,可以灵活运用于各种调度场合,比如全抢占调度、混合抢占调度、非全抢占调度。4.本专利技术有效的防止了任务级资源管理中存在的优先级反转和死锁的发生。附图说明图1现有技术资源管理中的优先级反转的示例;图2现有技术资源管理中的死锁示例;图3本专利技术任务状态以及状态之间的转换关系;图4本专利技术内部资源的主动获取流程图;图5本专利技术任务级外部资源的获取流程图;图6本专利技术内部资源的主动释放流程图;图7本专利技术任务级外部资源的释放流程图;图8本专利技术任务级外部资源管理的例子;图9本专利技术内部资源管理的例子;具体实施方式下面结合附图和实例对本专利技术作进一步介绍图3指出任务的状态以及状态之间的转换关系。任务状态分为就绪、运行、挂起、等待四个状态。任务在就绪时,如果其优先级最高,则进入运行状态。任务运行时,有三种状态转移情况1.当任务由于等待某事件发生时,该任务就进入等待状态。在等待状态的任务如果其等待的事件发生,则进入就绪状态;2.当本文档来自技高网
...

【技术保护点】
一种微内核嵌入式实时操作系统的任务级资源管理方法,其特征是:把微内核嵌入式实时操作系统中的资源分为两部分:不需要通过调用系统API来获取和释放的内部资源,通过调用应用程序接口来获取和释放的外部资源;一个任务最多只能占有一个内部资源,当任务进入运行状态的时候,资源被自动的获取,当任务自动结束或主动发生强制调度并退出运行状态时,其内部资源被自动的释放;一个任务可以占有多个外部资源,占有和释放外部资源必须按照先进后出的顺序进行;系统给每一个内部资源或外部资源分配一个优先级,该优先级等于需要使用该资源的所有任务的最高优先级。

【技术特征摘要】
1.一种微内核嵌入式实时操作系统的任务级资源管理方法,其特征是把微内核嵌入式实时操作系统中的资源分为两部分不需要通过调用系统API来获取和释放的内部资源,通过调用应用程序接口来获取和释放的外部资源;一个任务最多只能占有一个内部资源,当任务进入运行状态的时候,资源被自动的获取,当任务自动结束或主动发生强制调度并退出运行状态时,其内部资源被自动的释放;一个任务可以占有多个外部资源,占有和释放外部资源必须按照先进后出的顺序进行;系统给每一个内部资源或外部资源分配一个优先级,该优先级等于需要使用该资源的所有任务的最高优先级。2.根据权利要求1所述的微内核嵌入式实时操作系统的任务级资源管理方法,其特征在于具体步骤如下1)、建立优先级的就绪队列;2)、设计任务控制块,增加外部资源的指针和内部资源的优先级以及内部资源使用时所需保存的任务控制块指针;3)、建立任务控制块数组以及用其优先级索引的任务控制块指针数组;4)、设计外部资源的控制块,包括优先级、外部资源链表、所需保存的任务控制块指针;5)、设计内部资源的获取和释放功能如果任务T1试图获取内部资源R1,则在T1运行起来前将内部资源R1的优先级放入就绪队列,接着将R1的优先级对应的任务控制块指针数组中的值保存在T1的任务控制块中,最后将R1的优先级对应的任务控制块指针数组中的值置为T1;当任务T1释放内部资源R1时,先将在T1的任务控制块中保存的任务控制块恢复,然后重新设置就绪队列;6)、设计外部资源的获取和释放功能的应用程序接口当任务T2获取外部资源R2时,将R2的优先级放入就绪队列,...

【专利技术属性】
技术研发人员:吴朝晖赵民德厉蒋李红潘杭平孙洁
申请(专利权)人:浙江大学
类型:发明
国别省市:86[中国|杭州]

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

1