基于Linux 26进程调度系统的实时性研究.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:6 大小:349KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

基于Linux 26进程调度系统的实时性研究.pdf

基于Linux26进程调度系统的实时性研究.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万方数据2.6进程调度系统的实时性研究基于Linux人手,针对EDF实时调度算法进行讨论,并对内2.6进程调度系统的实时性分析1.1.1非实时进程优先级的计算构体系中,其计算公式如下:(其中sleep—avg值1肺VERSnl岳笑含,刘艳秋由于Linux是开源的操作系统,它拥有众多的开发和维护者,并且将其运用在各种不同的领域里,发挥了极好的作用.并且Linux的速度或效率都表现得非常好,只是在一些情况下,这样的速度还不能满足某些需求.有时需要的是在特定的容差范围内确定性地满足调度期限的能力.故此,本文将从Linux2.6调度器的实时性分析核进行相应的改进,以便更加适合实时进程(任务)的执行.2.6加入了内核抢占并实现了调度算法时间复杂度为O(1),Linux2.6的实时性得到了加强,对于O(1)调度算法和内核抢占,有很多资料对其进行了详细的阐述⋯,本节只介绍2.6优先级的计算和Linux2.6的实时调度策略.1.1进程的优先级计算由于Linux2.6调度器调度进程是依据优先级的大小(pno值),所以优先级的计算是人们所关心的。进程优先级的计算分为普通进程优先级的计算和实时进程优先级的计算.非实时优先级的计算,一般通过2个函数来实现:effective—prio()和recalc—task—prio()口1,首先介绍recalc_task_prio()函数.recalc—task—prio()函数的调用时机一般是当执行schedule()或active—task()系统调用,并且主要用于schedule()系统调用时,用于计算非实时进程的优先级.它首先通过计算并对当前进程(主要是对交互式进程)的平均睡眠时间做相应的调整;然后调用effective—prio()函数.effective—prio()函数并不是只被recalc—task_prio()所调用,它还主要被调用在scheduler—tick()时钟中断程序、sched—f6rk()、wake—up—new_task()等函数里.它用于计算进程的动态优先级(prio),同时也包括实时进程的动态优先级.对于非实时进程的计算它是通过该进程的平均睡眠时间(sleep—avg)和静态优先级(staile—prio等同于nice)2个因素来确定的,在i386结类型为Jiffies)沈阳化工大学学报文章编号:1004—4639(2010)01—0079—05(沈阳工业大学,辽宁沈阳110023)摘要:针对Linux2.6进程调度系统在实时性方面存在的不足,首先对Linux2.6进程调度系统的优先级计算以及调度策略进行详细的分析.然后,根据优先级计算和调度策略实时性方面存在的缺陷,引入基于进程截止期的EDF进程调度算法,并介绍EDF算法在Linux2.6内核代码中的具体实现.最后,以进程截止期满足率为标准的实验数据对比FIFO、RR和EDF调度策略在实时进程调度性能上的差异,证明EDF调度策略在处理实时进程方面具有更强的调度能力.关键词:Linux操作系统;进程调度;EDF;实时性中图分类号:TtBl6文献标识码:A1Linux第24卷第1期收稿日期:2009—0l—15作者简介:岳笑含(1982一),男,辽宁铁岭人,硕士研究生在读,主要从事实时操作系统的研究.通讯联系人:刘艳秋(1963一),男,吉林四平人,教授,博士,主要从事智能优化算法与可靠性理论的研究2010.03JoURNALSHENYANGCHEMICALTEcHNOLoGYV01.24No.1Mar.20lOOF万方数据1.2.1啪调度策略其中(sleep—avg/10—5)计算出来的值作为长的话,它就会得到+5的奖励,如果没有睡眠静态优先级无关,与计算有关的是rt一呻耐t),变实时进程计算动态优先级,那么就使得实时进程NORMAL、BATCH、FIFO和RR.本节只讨论了一种简单的、先人先出的调度算法,它不使用于可执行状态,就会一直执行,直道它自己受阻RR级进程才能抢占FIFO进程,而NORMAL级进程将不会被调用.EDF调度策略在Linux2.6上的改进证明是动态最优调度,而且是充要条件,处理器①进程的优先级越大,越先得到调度;②如果优先级相同,那么进程相对截止期沈阳化工大学学报prio=max(100,min((P一>static—prio一(sleep—avg/10+5)),139))对该进程的奖励/惩罚值,范围在(一5,+5)之间,那么就可以看出,当一个进程睡眠时间比较的话,那么它将得到一5的惩罚.1.1.2实时进程优先级的计算实时进程优先级的计算,是通过effective—prio()函数,但与实时进程的平均睡眠时间以及量.这个变量通过sys—sched—setparam()来设置和改变,并且该值不