论文部分内容阅读
因为嵌入式领域对操作系统的实时性有较高要求,所以对RTOS的研究一直有较高的热度。RTOS更重视平均响应时间,这方面与通用操作系统看重系统整体平均性能不同。只有同时保证计算结果的正确性和和计算结果输出的时效性,才能保证RTOS逻辑的正确性。目前RTOS已经广泛应用于航天控制、国防武器、工业自动化、电子通信等多个领域。因为Linux内核以其源代码公开、内核可裁剪、兼容性强、性能稳定、强大社区支持、免费获取等优点可以实现一个自主可控的操作系统,所以其成为嵌入式领域的热门选择。虽然Linux内核提供实时支持,但仅支持软实时,尚不具备硬实时能力。所以,为了实现自主可控的实时操作系统,需要在了解Linux内核的基础上,对Linux内核进行实时性改造,从而使Linux操作系统符合RTOS的标准。本文以Linux3.10.84内核为研究基础,对Linux的调度器原理深入分析,剖析了Linux调度机制的实现细节。借鉴Ingo Molnar提出的实时抢占补丁,使用mutex互斥锁、优先级继承、中断线程化、高精度时钟等,解决了Linux作为通用操作系统实时性能的不足。为了让实时抢占补丁在龙芯平台上更好地发挥其最佳性能,本文解决了实时抢占补丁没有对MIPS架构某些部分实时处理的问题。另外,因为Linux操作系统现有的实时调度策略不能保证实时任务的完成时间限制,所以本文在Linux3.10.84内核上实现了基于EDF算法的动态调度策略。EDF调度算法作为单核上最优的调度算法,并不能保证EDF任务不错过截止期,所以本文使用了EDF+CBS的技术,保证了任务之间的独立性,从而保证了任意任务不会因为其它任务的阻碍而错过自己的截止期。为了适应多处理器SMP系统,本文对EDF算法进行了扩展,在保证EDF任务top-N优先执行的基础上,使EDF任务可以平滑地在核间迁移以保证负载均衡。最后,通过测试,改进后的Linux内核不仅实现了EDF实时动态调度策略,而且在实时性方面有较大提高,能够满足嵌入式系统的实时性要求。