单片机信息网:深圳市今科电子有限公司
网站地图 RSS订阅
高级搜索 收藏本站
会员中心 欢迎投稿
首页 | 业界动态 | 解决方案 | 技术文献 | 下载中心 | 单片机学习 | 单片机原理 | 单片机编程 | 单片机设计 | 单片机开发 | 技术专题 | 单片机论坛 |单片机博客| 联系我们
单片机新闻 | 单片机学习 | 单片机编程 | 单片机设计 | 单片机开发 | 单片机原理 | 单片机解密 | 芯片解密 | IC解密 | 单片机方案 | 51单片机 | AVR单片机 | PIC单片机
单片机程序实例大全 | 潜入式系统 | PCB设计 | 单片机资料下载 | 工具/软件下载 | 技术经验分享 | 单片机技术人生 | IC资料下载 | 数字电路 | 模拟电路 | 单片机空间
当前位置:主页>单片机设计>文章内容
CBS算法的RTAI内核调度器设计
来源:哈尔滨理工大学 作者:李兰英 张向国 发布时间:2007-10-16 阅读次数: 【大 中 小】【收藏本文】 【打印

摘要 近年来基于双内核架构增强Linux操作系统实时性的RTAI[1](RealTime Application Interface)在工业控制等硬实时领域已经得到了越来越多的应用。本文提出的调度器通过采用基于服务策略的CBS算法对RATI内核下的EDF调度 器进行扩展,可以保证分配一定的CPU资源供Linux上的软实时应用,即使在有硬实时任务并发时也能得到处理器资源。实验结果证明了基于CBS算法扩展 RTAI内核调度器的正确性。

关键词 RTAI Linux CBS算法 内核调度器

引言

  嵌入式系统大多工作在有实时性要求的环境中,有些嵌入式设备可能需要软件在ms级时间单位内做出响应,而有些实时任务则要无任何延时地以几ms 的周期执行,这就迫切需要一个功能强大、配置方便的实时操作系统来支持。一些商业的嵌入式实时操作系统(如Windows CE、VxWorks等)价格都比较昂贵,这就促使人们转向了改造通用嵌入式操作系统,使其满足实时性。这种改造要求源代码必须开放,而Linux是嵌入 式应用中的通用嵌入式操作系统,源代码开放,满足改造研究上的需求。

  对Linux实时化改造的方案很多,主要有两种:一种直接修改内核,另一种是采用双内核机制。第一种方法只能用于软实时应用,只有双内核架构的 方案可以保障硬实时应用的截止期不被错过。但是,双内核架构在软、硬实时任务混合的应用环境中还存在一些问题。由于硬实时任务工作在RTAI实时内核空间 中,而软实时任务工作在Linux内核空间中,Linux作为优先级最低的任务被顶层实时内核调度执行,在一段时间内可以分配给软实时任务的处理器时间依 赖于RTAI硬实时应用对处理器带宽的要求,而且在不同的时间段内可用的处理器时间一般会有很大的不同。这就难以保障运行在Linux中的软时应用达到预 先设定的服务质量水平。

1  基于服务策略算法的实时调度器

  针对双内核架构下增强Linux实时性时存在的问题,本文提出一种实时调度器,采用基于服务策略的CBS算法对RTAI内核下的EDF调度器进行扩展,保证在有硬实时任务的同时满足Linux内核空间下软实时任务的周转时间。

1.1  实时调度器基于的CBS算法定义

  为了缩短混合实时任务调度中软实时任务的响应时间,以及减少软实时任务错失截止期,人们提出了多种软实时任务的调度算法。典型的有基于服务策略 的算法,又称“带宽预留算法”。该算法在保证硬实时周期任务满足截止期的前提下,预留出适当的处理器带宽作为服务器来处理软实时任务,常用的算法有 CBS、TBS算法等。服务策略的含义是: 服务器把到达的任务放入一个非优先规则的队列中,该队列的第一个任务根据分配的截止期插入EDF调度队列中,如果队列的第一个任务被插入到调度队列等待调 度,则称“服务器是合格的”,否则称“服务器是不合格的”;如果队列的第一个任务正在执行,则称“服务器为活动的”。下面给出了采用CBS算法时软实时任 务在不影响硬实时任务截止期的情况下是否可以调度的判别准则。

  假定某一实时任务Ti的处理器带宽记为(Ci,Pi),表示任务Ti在周期Pi内最多占用Ci的处理器时间。定义实时任务Ti的处理器利用率为:

按此在新窗口浏览图片

  现假定系统中n个实时任务,记为{T1,T2,…,Tn},对应着n个处理器带宽参数,记为(Ci,Pi),其中i=1, 2,…,n。则此任务集可调度的条件为:

按此在新窗口浏览图片

满足上式时任务集是可调度的。其中Umax是EDF算法调度时CPU处理器利用率的最大值。

  CBS算法步骤详细定义如下:

  ①  一个CBS服务器用预留执行能力cs和有序对(Qs,Ts)来表示。其中,Qs表示服务器的最大执行能力补充值,Ts表示服务器周期。服务器带宽Us=Qs/Ts。服务器截止期的初始值ds,0=0,而任意时刻,服务器的修正截止期ds,k和服务器相关联。
  ②  被服务器服务的任务(队列的第一个任务)被分配一个动态截止期di,j,该截止期等于当前服务器截止期ds,k。
  ③  不管一个任务什么时候执行,服务器的预留执行能力cs都以相同的数量递减。
  ④  当预留执行能力cs递减到零时,马上被重置为最大执行能力补充值Qs,同时产生新的服务器截止期ds,k+1=ds,k+Ts。
  ⑤  在时刻t,如果存在一个服务的任务Ji,j(ri,j≤t≤fi,j),那么称“CBS处于活动状态”,否则称为“空闲状态”。
  ⑥  当一个作业Ji,j到达时,如果此时服务器处于活动状态,那么任务的服务请求进入挂起任务队列,此队列需是非抢先原则的队列(如先进先出队列)。
   ⑦  当一个任务Ji,j到达,且服务器处于空闲状态时,如果cs≥(ds,k-ri,j)Us,那么服务器产生一个新的服务器截止期ds,k+1=ri,j +Ts,并且把预留执行能力cs重置为最大执行能力补充值Qs,否则服务器使用当前的服务器截止期ds,k和当前的预留执行能力cs来对任务进行服务。
  ⑧  当一个任务完成时,服务器利用当前的预留执行能力和截止期继续为挂起任务队列中的任务服务。如果挂起任务队列中没有任务,那么服务器变成空闲状态。
  ⑨  在任何时刻,服务器分配给任务的截止期为最后生成的服务器截止期。

1.2  EDF调度器的CBS算法扩展设计

1.2.1  EDF调度器的总体结构设计

  先引入一种“虚拟任务”的概念。所谓“虚拟任务”,就是指由RTAI底层实时小内核按EDF算法直接调度执行的一种特殊的硬实时任务,对应于Linux用户空间的某一软实时应用。其任务截止期由RTAI内核下的CBS服务器计算得出。

  本文将RATI内核下的EDF调度器进行了以下扩展:

  ①  在EDF调度层,仍然采用原RTAI内核下调度器采用的EDF调度算法,对硬实时周期任务和虚拟任务集合进行调度;而CBS服务器则按一定的比例占用处理机时间,同时通过服务器接口与一个实时应用相对应,为其提供资源服务。
  ②  在服务器层有CBS服务器核和CBS服务器接口。

  CBS服务器核的主要功能是根据传入的相关调度信息维护底层实时小内核中的可用CBS服务器队列,在任务开始、挂起、终止等调度时执行相应的事件处理函数来调整CBS服务器的属性参数,实现CBS算法。

  EDF调度器扩展如图1所示。

按此在新窗口浏览图片
图1  EDF调度器扩展

  在服务器接口中,由于硬实时任务工作在RTAI实时内核下,而软实时任务一般工作在Linux内核下,因此服务器维护的虚拟任务为了与实际的实 时任务建立对应,就需要一个接口来实现它们的映射关系。本文通过这个接口层来为Linux内核中的实时任务和RTAI内核下的虚拟任务提供映射实现。

1.2.2  EDF调度器扩展后调度主要算法步骤

  ①  不同类型的新应用程序到达时,通过服务器接口层中的系统调用对其进行判别控制检查,主要通过式(2)来进行。如果通过检查,则说明调度新到达的应用程序不会影响硬实时任务的截止期。
   ②  通过判别检查之后,CBS服务器为其创建一个与新应用程序对应的虚拟任务,并根据新应用程序传入的调度参数和自己的调度策略,计算得到虚拟任务的 任务截止期。如果此时服务器是活动的,将此新虚拟任务挂入服务器维护的先进先出队列。取出服务器的先进先出队列队首虚拟任务,并根据任务截止期大小进入 RTAI实时内核的EDF就绪队列;同时,新应用程序也加入到Linux内核下相应的调度对象集合中,调度对象集合是一个由与新任务相匹配的具体调度器调 度的集合,这个调度器基于某种调度算法,不是本文的讨论重点,但是如果从整个系统的实现来说,这些都是必不可少的部分。本文重点实现的是RTAI内核下对 软硬实时混合调度的支持。
  ③  虚拟任务与RATI下的硬实时周期任务一起由EDF调度器统一调度分配。

1.3  EDF调度器的扩展实现

  根据扩展设计方案,下面讨论在对EDF调度器进行扩展时所涉及的关键问题及解决途径。

1.3.1  EDF调度层扩展的关键问题

  首先是实时内核的虚拟任务和Linux用户空间中的软实时任务的映射问题。软实时任务是运行在用户空间的Linux进程中。它通过CBS服务器 接口层中的新增系统调用rt_schedule_test()进入准入测试后,调用CBS服务器接口层的新增系统调用 rt_create_virtual_task()创建虚拟任务,并且传入软实时应用的进程ID,应用调度器ID在虚拟任务结构体中保存下来。当虚拟任务 被EDF算法调度执行时,它通过实时内核中的软中断模拟机制保存对应的进程ID,应用调度器ID到中断暂存表,然后调用 rt_switch_to_linux切换到Linux内核。Linux内核通过应用调度器ID找到调度器,将要调度执行的进程ID传给此调度器,由调度 器调度此进程执行,这就实现了虚拟任务与软实时应用的对应。

1.3.2  服务器核实现的关键问题

  ①  为减少系统中的全局数据结构种类,虚拟任务与实时任务使用同样的数据结构定义。为此,修改了RTAI的实时任务的rt_task_struct结构定义: 添加了与虚拟任务相关的属性,如对应的具体软实时任务的ID、软实时任务调度器ID、任务截止期和指向CBS服务器的指针;定义了服务器数据结构体 rt_CBSServer,属性参数有服务器的预留执行能力计算值、已使用的服务器预留的计算值、周期、开始时间、截止时间以及服务器先进先出队列 VTQueue。
  ②  CBS服务器算法的实现。CBS服务器算法需要在虚拟任务到达事件、虚拟任务完成事件以及服务器预留执行能力耗尽事件发生时刻,及时对服务器的相关属性和虚拟任务属性进行调整,特别是虚拟任务的截止期和服务器的截止期。

  下面介绍基于服务策略的CBS算法的伪代码实现。

  虚拟任务到达事件发生时的处理:

if(虚拟任务到达事件发生) {
  把该虚拟任务加入到服务器的先进先出队列;
  N=N+1;//服务器的先进先出队列任务数加1
  if(此时服务器空闲&&N==1) {
    if(c>=(dk-rj)Us) {
      ak=rj;
      dk=ak+Ts;
      c=Qs;//计算服务器预留执行能力和截止期
    }
    else{
      ak=rj;
      dk=dk-1;//设置截止期
    }
  }
}

  虚拟任务完成事件发生时的处理:

if(任务完成事件发生) {
  从EDF调度器就绪任务队列和服务器先进先出队列中删除该虚拟任务;
  N=N-1;
  if(N!=0){
    利用当前的服务器截止期dk调度服务器先进先出任务队列中的下一个任务到EDF调度器就绪队列中;
  }
  if(任务执行了一个时间片) {
    c=c-1;//服务器预留执行能力减1
  }
}

  服务器预留执行能力耗尽事件发生时的处理:

if(服务器执行能力==0) {
  dk=dk-1+Ts;
  c=Qs;//计算截止期,并补充预留执行能力
}

其中,dk为服务器的截止期;ak表示服务器下次执行的起始时刻;rj表示任务到达时刻;c表示服务器剩余执行能力。Qs和Ts分别为CBS的最大容量预算补充值和周期;Us是这个服务器的利用率。

1.3.3  服务器接口实现的关键技术

  该层主要在RTAI内核下增加一些新的系统调用供Linux内核使用。

  rt_create_virtual_task(): 创建虚拟任务。首先在系统内存中为服务器分配所需的内存空间;然后根据传入参数填写rt_task_struct{}结构,特别是与服务器相关的几种变量值;最后将其放入系统任务队列中。

  rt_schedule_test(): 对新到来的应用进行准入测试。主要是通过CBS算法进行测试,如果不能通过准入测试,则失败退出;否则调度rt_create_virtual_task()创建虚拟任务,将任务挂入相应的服务器队列中,等待调度。

共2页: 上一页 1 [2] 下一页

上一篇:安森美半导体的突破性ESD保护技术实现超低电容及业界最低的钳位电压   下一篇:数据监测模块的实时性分析与设计

标签:RTAI Linux CBS算法 内核调度器 点此搜索本站更多相关信息...搜索更多相关内容..

您可能还感兴趣的内容: 深圳今科电子单片机解密、IC解密服务 今科电子单解机、IC解密业务是怎样的流程?

此页的访问者还关注了下面这些相关资讯


·数据监测模块的实时性分析与设计
·数字音频射频收发芯片nRF24Z1原理及应用
·单片机硬件系统设计原则
·基于IRIG-A码输出的超小型GPS时钟设计
·8051单片机中DPTR的扩展设计
·RFM001射频模块感应电锁控制器的设计
·HT46R22单片机在电磁炉功率控制中的应用
·PIC单片机 六挡调控电涡流缓速器
·基于高速传输技术的0FDM系统设计
·基于W78E54B单片机电话计费器的设计
·IC卡有线电视收费控制器的设计与研制
·MSP430单片机的加密熔断器设计
·内含CalmRISC CPU的8位单片机S3CK215及其应用
·Atmega16在开关磁阻电机调速系统中的应用
·具有波特率自适应功能的无线数据传输模块设计
·μPSD32xx单片机在税控器中的应用
·单片机系统设计与C51编程实践
·基于51单片机的车用数字仪表设计与实现
·基于单片机和AD9858的4频点快速跳频设计
·基于Proteus软件的单片机实验室建设
·基于CDMA的移动无线数据传输系统
·用单片机和EDA协同设计温度采集系统
·单片机C8051F020及其在仪器和仪表中的应用
·基于GPRS的自动抄表系统设计
·基于ATmega162的智能仪器设计
·基于Atmega8的数字功放设计
·基于nRF905的无线数据传输设备设计
·单片机实现对CF卡的读写
·单片机软硬件联合仿真解决方案
·单片机应用系统设计(基于I2C总线的MSP430)
·一种用于单片机的红外串行通信接口
·基于ADV202的嵌入式视频压缩系统软硬件设计
·采用多单片机的液位监控仪
·基于单片机PIC18F66J10的主动放线机设计
·基于ATmega128L的大容量MP3播放机
·基于nRF2401的有源RFID手持式读写器的设计
·PIC单片机的应用设计技巧
·一种实用的PIC编程嚣的设计方法
·全功能智能停车场收费管理系统
·宽带RFID阻抗变压器的设计


版权声明:
( 更多版权详述 | 隐私政策 )

1、凡本网注明“来源:单片机信息网”或“单片机论坛”的文字、图片和音视频作品,版权均属深圳市今科电子有限公司所有,任何媒体、网站或个人未经本网书面授权不得转载、链接、转贴或以其他方式使用;已经本网书面授权的,在使用时必须注明“来源:单片机信息网”或“单片机论坛””。
2、本网未注明“来源:单片机信息网”或“单片机论坛”的作品均为转载稿,本网转载稿件只为传递更多信息,并不意味着认同其观点或真实性。如其他媒体、网站或个人转载使用,必须保留本网注明的“稿件来源”,并自负法律责任。
3、对于单片机信息网通过单片机论坛发布的作品,本网受著作权人委托禁止任何媒体、网站或个人在未经书面授权的情况下转载使用。
4、为维护自身权益、尊重作者版权,单片机信息网特委托深圳市律师协会为本网站法律顾问。对于违反本声明的,单片机信息网律师将依法追究其责任;对于刊载作品涉及版权等问题的,请作者在两周内与网站管理或张朝阳律师联系。
责任编辑:今科电子
双击复制本文网址,发送给您QQ/MSN上的朋友:
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
§最新评论
今科热门解密系列
·PIC芯片DSP系列单片机解密PIC芯
·Freescale单片机解密飞思卡尔芯
·飞思卡尔(Freescale)单片机解密/
·pic18f系列单片机解密
·三星(Samsung)系列单片机极速解
·飞林Feeling芯片系列MCU单片机/I
·MICROCHIP微芯(PIC)系列单片机/M
·单片机破解的常用方法及应对策略
·IC卡预付费电度表的安全及防范技
·单片机解密 单片机解密方法 单片
·PHILIPS系列单片机解密
·独家STC单片机解密
·我对红外遥控信号的解码思路
·51系列单片机解密(数分钟搞定)
·芯片解密业务流程介绍
·单片机解密后提供什么文件?
·单片机解密后为何要提供厂家的专
·芯片是如何被解密的?
·SST系列MCU单片机/IC/芯片解密
·INTEL系列单片机/IC/芯片解密
·ISSI系列MCU单片机IC破解芯片解
·ZILOG系列MCU单片机IC破解芯片解
·MOTOROLA系列MCU单片机IC破解芯
·LG(HYUNDAI系列MCU单片机/IC破
·MCPLD/EPLD系列MCU单片机IC破解
·新茂系列MCU单片机IC破解芯片解
·PHILIPS系列MCU单片机IC破解芯片
·MXIC系列MCU单片机IC破解芯片解
·(ATMEL)51系列MCU单片机IC破解芯
·华邦芯片系列MCU单片机/IC/芯片
·(MICROCHIP)微芯(PIC)系列MCU单
·CYPRESS系列MCU单片机IC破解芯芯
·Sinowealih系列MCU单片机IC破解
·Tenx系列MCU单片机IC破解芯片解
·松翰(SONIX)系列MCU单片机IC破解
·义隆(EMC)系列MCU单片机IC破解
·合泰(HOLTEK)系列MCU单片机IC破
·麦肯(MDT)系列mcu单片机IC破解芯
·今科单片机解密服务
·单片机程序开发
热点技术文章文献
·单片机程序实例大全
·单片机课程设计(直流风扇电机转
·单片机课程设计(报警器)
·基于51单片机的音乐播放程序
·单片机课程设计心得体会
·单片机课程设计(数字温度计设计)
·单片机课程设计(秒表的设计)
·步进电机单片机控制系统设计
·51单片机模拟SPI总线的方法
·用AT89C51实验板的两位数码管显
·51单片机控制继电器的设计及源代
·单片机控制GSM手机的技术及应用
·51单片机串口调试程序一列
·实时时钟DS1302读写程序(C51)
·单片机课程设计(秒表的设计程序)
·89S51看门狗功能的使用方法
·步进电机运行系统控制设计
·带有时间设置和秒显示的数字闹钟
·单片机键盘输入编程
·单片机应用编程技巧
·红外遥控程序设计的若干问答
·51时钟源程序一例
·PIC CCS C语言程序范例
·P1口八个LED灯做三路流水灯实验
·51单片机RTL8019AS网卡驱动程序
·汇编语言及汇编过程
·C语言中嵌入汇编语言集锦
·基于单片机的真空冷冻干燥试验仪
·51单片机 Keil C 延时程序的简单
·利用80C31单片机串行口实现多个L
今科推荐产品
·51系列单片机解密(数分钟搞定)
·今科单片机解密服务
·单片机程序开发
·小家电(厨卫电器)系列产品
·灯饰控制系列产品
·四键遥控器系列产品
·红外遥控器系列产品
相关技术文献资讯
·数据监测模块的实时性分析与设计
·数字音频射频收发芯片nRF24Z1原
·单片机硬件系统设计原则
·基于IRIG-A码输出的超小型GPS时
·8051单片机中DPTR的扩展设计
·RFM001射频模块感应电锁控制器的
·HT46R22单片机在电磁炉功率控制
·PIC单片机 六挡调控电涡流缓速器
·基于高速传输技术的0FDM系统设计
·基于W78E54B单片机电话计费器的
·IC卡有线电视收费控制器的设计与
·MSP430单片机的加密熔断器设计
·内含CalmRISC CPU的8位单片机S3
·Atmega16在开关磁阻电机调速系统
·具有波特率自适应功能的无线数据
·μPSD32xx单片机在税控器中的应
·单片机系统设计与C51编程实践
·基于51单片机的车用数字仪表设计
·基于单片机和AD9858的4频点快速
·基于Proteus软件的单片机实验室
·基于CDMA的移动无线数据传输系统
·用单片机和EDA协同设计温度采集
·单片机C8051F020及其在仪器和仪
·基于GPRS的自动抄表系统设计
·基于ATmega162的智能仪器设计
论坛最新讨论资讯
芯片解密常见问题
· 什么是单片机?
· 单片机要如何加密?
· 单片机芯片是如何被解密的?
· 单片机解密后提供什么文件?
· 芯片解密为何用专用格式文档?
· 芯片解密是怎样的业务流程?
首页 - 隐私政策 - 版权申明 - 网站地图 - 产品中心 - IC解密中心 - 企业文化 - 代理加盟 - 公司简介 - 人才招聘 - 常见问题 - 我要投稿 - 联系我们 - 返回顶部
[单片机信息网] .© 2006-2009 版权所有,严禁非法复制与建立镜像.运营商:[今科电子] 公司地址:中国.深圳/上海 E-Mail:renbangent#126.com sales#techmcu.com(换#为@)
深圳公司 电话:0755-82964200 82964201 82964700 传真:0755-82964432 支持手机:13713930070 13684994966 业务QQ: 501995683 联系人:黄/陈小姐(工程师) 罗先生(高工)
上海公司 电话热线:+86 021-63062380 15001885509   传真:+86 021-63062380-6   技术支持:15001885509 业务QQ:xxxxxxxx   联系人:郑小姐(业务) 陆工(工程师)
Optimized for 1024x768 to Firefox,Opera and MS-IE6 or higher,Template designed by: Berlin Lee.Web Support[FuAn Network] ICP Record No.:07053756 Webmaster