嵌入式Linux实时化技术
Linux实时化技术及评价
本文引用地址:https://www.eepw.com.cn/article/106458.htm2.6版本Linux内核实时性能有一定增强,双内核方式的Linux实时化技术也在不断发展中。原来由FSMLab维护的RTLinux,其版权在2007年2月被Wind River购买,RTAI支持x386等体系结构,但由于其代码较难维护、bug较难调试等原因,许多开发者加入了Xenomai项目。Xenomai支持最新2.6版 Linux,相比之下代码相对稳定和可维护,开发模式较活跃。
内核补丁方式的Linux实时化技术在2.6版内核基础上做了大量改进,使得内核中除了中断关闭和IRQ线程分派、调度和上下文切换之外的绝大部分代码都可以被抢占,不可抢占的自旋锁保护临界区从一千多个减少到几十个,使得内核实时性得到极大的提高,获得社区广泛支持并逐渐成为Linux实时化主流技术。
Linux内核实时化改进
实时抢占内核补丁针对Linux各种延迟进行了实时化改进,主要包括了几个方面的技术。
● 实时抢占内核
为了实现内核完全可抢占,实时内核临界区用高性能优先级继承mutex替换原来自旋锁(spin-lock)来进行保护,使得在临界区内的执行也可被抢占。只有当线程想访问一个其他线程正在访问的临界区时,才被调度至睡眠,直到所保护的临界区被释放时被唤醒。
在实时抢占内核中通过优先级继承机制(PI)在线程被一个低优先级线程所持有的资源阻塞时,低优先级线程通过继承被阻塞线程优先级,尽快执行并释放所持资源而不被其他线程所抢占。
● 新型锁机制带来内核性能提升
实时抢占补丁替换了大内核锁(BKL),将BKL从spin lock改成是mutex,持有BKL的线程也可以被抢占,减少了内核调度延迟。此外,实时抢占补丁通过mutex替代semaphore,避免了不必要的时间负载。实时抢占补丁实现了可抢占的RCU(Read- Copy Update)锁和串行化读写锁,保证了执行可预测性,提高了性能。
● 中断线程化
实时抢占补丁通过内核线程来实现一些硬件中断和软件中断的服务程序。体系结构相关处理代码设置IRQ状态、检查线程化的中断是否使能,并唤醒相关线程。在中断线程被调度执行后,进行中断服务处理。在实时抢占内核中,用户线程优先级可以高于设备中断服务线程。实时任务无需等待设备驱动处理程序执行,减小了实时抢占延迟。
● 时钟系统改进
实时抢占内核的时钟系统重新进行了设计,实现了高精度定时器。时钟精度不再依赖jiffies,使POSIX定时器和nanosleep精度由具体硬件所能提供的精度决定,使得gettimeofday能够提供实时系统所需的精确时间值。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论