摘要:
嵌入式操作系统在互联网时代的今天得到广泛应用.Linux系统本身并不是严格的实时操作系统.为了提高它对实时任务的处理能力,国内外对Linux进行了不断的实时性能的改造.主要的方法有:对内核的改造,如双内核途径和抢占内核途径,细化内核的时钟粒度.另一种改造的主要途径是内核的调度策略.进程调度算法优劣决定系统的实时性.本文就是通过改善Linux的调度算法来提升Linux内核的实时性能. 本文研究了当前流行的Linux2.6内核的调度算法,对O(1)调度算法的原理和程序代码进行了分析.总结出了Linux2.6内核在实时性能上的改进.在紧接着的关于调度算法的研究里,本文选择了基于优先级的调度算法进行研究.EDF调度算法是使用最多的一种动态优先级调度算法,该算法给就绪队列中的各个进程根据它们的截止期限(Deadline)来分配优先级,但是这个算法不能解决过载问题,发生过载时,导致CPU时间大量的花费在调度上,性能退化很快. 针对上述出现的问题,本文引入基于ISM(Isolation Server Method)隔离服务思路进行研究.SLAD (SLACK Donation)算法和BACKSLASH(BACK SLACK Donation)算法是最近由Lin和Brandt提出的算法,是基于ISM思想的比较优秀的改进算法.其算法主要在于改进EDF对空闲时间(slack time)的利用来减小截止期错失率DMR,该算法不牺牲overrun的任务,并能够极大减小任务间的"多米诺"效应,能够较好的减小DMR.很好的解决了任务过载问题.但是在正常调度时这两种调度算法并不比EDF调度算法好.在本课题的研究中提出了一种新的动态优先级调度算法.在参考处理器二级缓存的思想下,设计一个调度计数环节.采用一个缓存记录下任务发生的次数,对于一段时间内频繁发生的任务给予高的优先级并且记录到缓存.对于一段时间内很少发生的实时任务清理出缓存.这样就能灵活的调度EDF算法和SLAD调度算法,解决过载和正常调度问题,并通过实验环节验证了设计的合理性.
展开