电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>嵌入式开发>基于标准Linux2.6内核的实时性增强方案

基于标准Linux2.6内核的实时性增强方案

2017-11-01 | rar | 0.5 MB | 次下载 | 1积分

资料介绍

Linux以其功能强大、源代码开放、支持多种硬件平台、模块化设计方案以及丰富的开发工具支持等特点广泛应用在嵌入式系统领域。作为嵌入式产品操作系统平台,具有较好的实时性、系统可靠性、任务处理随机性是系统追求的目标,目前商业嵌入式操作系统实时性能可以满足嵌入式领域的需求,但由于其价格昂贵,应用受到了限制[1]。而嵌入式Linux以其非常低廉的价格,可以大大地降低成本,逐渐成为嵌入式操作系统的首选。但由于其在实时应用领域的技术障碍,要应用在嵌入式领域,还必须对Linux内核作必要的改进。本文以S3C2410+Linux作为移动机器人操作平台,为了提高机器人任务处理的实时性,针对影响Linux OS实时性能的若干方面进行研究,并利用相应的解决方法基于标准Linux2.6内核加以实现,最后通过测试,验证了此改进方法的效果。
  1 Linux内核实时性分析
  1.1 Linux内核制约实时性的因素
  衡量操作系统实时性的指标主要有中断延迟和抢占延迟。嵌入式系统中很多实时任务是靠中断驱动的,中断事件必须在限定的时限内处理,否则将产生灾难性的后果。大多数实时系统都是处理一些周期性的或非周期性的重复事件,事件产生的频度就确定了任务的执行时限,因此每次事件发生时,相应的处理任务必须及时响应处理,否则将无法满足时限[2]。抢占延迟就反映了系统的响应及时程度。针对Linux内核,中断关闭及中断优先级执行机制、内核不可抢占性、自旋锁(spinlock)及大内核锁及一些O(n)的任务调度算法影响了系统的实时性能。
  1.2 现存增强Linux内核实时性的技术
  多年来,Linux实时性改进技术的发展主要有两种技术方案:(1)直接修改Linux内核。针对内核数据结构、调度函数、中断方式进行改动,重新设计一个由优先级驱动的实时调度器,替换原有Linux内核中的进程调度器sched.c。这一方案主要是针对中断机制、任务调度算法进行改进的,较为成功的案例为Kansas大学开发的Kurt-Linux。Kurt提高了Linux系统中的实时精度,将时钟芯片设置为单触发状态。对于实时任务的调度,Kurt-Linux采用基于时间的静态实时CPU调度算法。实时任务在设计阶段就需要明确地说明其实时事件要发生的时间。这种调度算法对于那些循环执行的任务能够取得较好的调度效果;(2)在Linux内核之外进行实时性扩展,添加一个实时内核。实时内核接管硬件所有中断,并依据是否为实时任务给予响应。Fsm Labs公司开发的RTLinux就是依据这种策略开发设计的[3]。以上论述的两种技术方案有其可借鉴之处,但如果综合考虑任务响应、内核可抢占性、实时调度策略等都将影响操作系统的实时性能,因此,这两种技术还不能很好地满足实时性要求。为了增强嵌入式Linux实时性能,下面将介绍中断机制、内核的抢占性以及大内核锁等相关问题。
  2 Linux实时性改进方法
  Linux2.4及以前版本内核是不可抢占的,在Linux2.6中,内核已经可以抢占,实时性有所增强。但是内核中仍然有不可抢占的区域,如自旋锁spinlock保护的临界区等。另外,影响内核实时性能的因素还有中断运行机制、大内核锁机制以及调度算法等。
  2.1 中断运行机制改进
  在Linux标准内核中,中断是最高优先级的执行单元,硬件架构决定了硬件中断到来的时候在该中断没有被屏蔽的条件下必须处理。不管内核当时处理什么,即便是Linux中最高优先级的实时进程,只要有中断发生,系统将立即响应该事件并执行相应的中断处理程序,这就大大削弱了Linux的实时性能。特别是系统有严重的网络或I/O负载时,中断将非常频繁,实时任务将很难有机会运行,这对于Linux的实时应用来说是不可接受的。Linux采用的关中断技术在关中断区域使相应实时任务得不到响应,增加了实时任务的中断延迟。Linux实时化后自旋锁变为互斥锁的技术,但由于自旋锁的中断处理不能及时响应,降低了系统的实时性能。因此,借鉴Ingo Molnar实时补丁的实时化方法,采用中断线程化技术改进中断运行机制,中断将作为内核线程运行而且赋予不同的实时优先级,实时任务可以有比中断线程更高的优先级,这样,实时任务就可以作为最高优先级的执行单元来运行了,即使在严重负载下仍有实时性保证。另一方面,中断处理线程也可以因为在内核同步中得不到锁而挂载到锁的等待队列中,很多关中断就不必真正的禁止硬件中断了,而是禁止内核进程抢占,从而减小了中断延迟[4]。
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1基于51单片机TEA5767收音机数码管显示设计
  2. 0.69 MB   |  12次下载  |  10 积分
  3. 2用于12C总线的PCF8574远程8位I/O扩展器数据表
  4. 2.34MB   |  2次下载  |  免费
  5. 3DS8921.DS8921A.DS8921AT差分线路驱动器和接收器数据表
  6. 705.53KB   |  1次下载  |  免费
  7. 4ESD122 2通道ESD保护二极管数据表
  8. 1.21MB   |  1次下载  |  免费
  9. 5FS4054单节锂电池线性锂电池充电IC
  10. 843.62 KB  |  1次下载  |  免费
  11. 6SN65HVD26x支持CAN FD(灵活数据速率)和冗余的Turbo CAN收发器数据表
  12. 1.48MB   |  1次下载  |  免费
  13. 72024年工控与通信行业上游发展趋势和热点解读
  14. 2.61 MB  |  1次下载  |  免费
  15. 8TLK1221以太网收发器数据表
  16. 967.59KB   |  1次下载  |  免费

本月

  1. 1干货图解直流电机实现正反转的几种方式
  2. 207.75KB   |  271次下载  |  10 积分
  3. 2对讲机原理、使用及纵图集
  4. 未知   |  83次下载  |  10 积分
  5. 3马可尼IFR 2945A综合测试仪使用手册
  6. 未知   |  24次下载  |  8 积分
  7. 4LabVIEW曲线设计的源代码免费下载
  8. 0.05 MB   |  23次下载  |  1 积分
  9. 5基于STM32微处理器为核心的水质监测系统
  10. 6.46 MB   |  23次下载  |  免费
  11. 62.4GHz IEEE 802.15.4 和 ZigBee应用的CC253X 片上系统解决方案
  12. 9.00 MB   |  20次下载  |  1 积分
  13. 7基于51单片机TEA5767收音机数码管显示设计
  14. 0.69 MB   |  12次下载  |  10 积分
  15. 8使用UC3875构成的3KW实用高频开关电源设计
  16. 0.46 MB   |  6次下载  |  1 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935107次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420061次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233074次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191349次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183327次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81573次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73800次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65983次下载  |  10 积分