Linux SMP内核调度机制实现原理分析
2016-05-14任强
任强
【摘要】本文通过对Linux不同版本调度机制的研究,分析对SMP的支持能力。并分析不同版本的调度机制、算法对SMP性能的影响。支持SMP的Linux的逐步完善过程中所积累的经验及成果,无论在理论上还是实践上,都为其他嵌入式操作系统实现SMP架构提供了很好的借鉴作用。因此,深入分析Linux SMP系统的实现原理,对后续其他嵌入式操作系统实现SMP架构能够提供理论支持和实践依据。
【关键词】Linux;SMP;调度;内核
Linux从2.0版本开始增加对于SMP的支持,最初的实现较为简单,以后随着版本更新,SMP的实现也逐步趋于完善。
1. 本文主要对Linux 2.4和2.6版本的内核调度机制进行深入分析
1.1Linux2.2以前的内核中,SMP是在用户级实现,Linux内核本身并不能因有多个处理器核而得到加速。而在Linux 2.4内核以后,SMP在内核级实现,使用多处理器核可以加快内核的处理速度。目前的Linux 2.6有以下优点:采用时间复杂度为O(1)的调度算法,调度器开销恒定,与当前系统负载无关,实时性能更好;锁粒度大幅度减小;优化了计算密集型的批处理作业的调度;系统负载重的情况下,调度器也能发挥良好的性能。这些使得系统性能和实时性都有了很大的改善。
1.2Linux 2.4的调度机制的特点主要有两个:内核不可抢占以及调度算法简单高效。在Linux 2.4中,内核是不可抢占的,即进程在内核态执行时,它不能被任意挂起,也不能被另一个进程代替,除非进程自己放弃处理器。一个最典型的例子就是内核进程中如果出现死循环并且进程不调用schedule( )进行任务切换,系统就会失去响应。此时尽管各种中断(包括时钟中断)仍然在响应,但却不会发生调度,其他进程(包括内核进程)都没有机会运行。Linux 操作系统内核中负责进程调度的具体函数是schedule( ),它按照不同的调度策略对实时进程和非实时进程进行不同的调度处理。它主要完成两项工作:遍历就绪队列中的所有进程,调用goodness()函数计算每一个进程的权值,从中选择权值最大的进程投入运行。如果整个运行队列中的所有进程的时间片都耗尽,重新分配时间片。
1.3Linux的进程用task_struct结构体表示。如图1所示,系统中的所有进程被组织到以初始化任务init_task为表头的双向链表中,该链表是全系统唯一的,每个处理器核都分别对应了一个idle_task,它们的task_struct指针被组织到init_tasks[NR_CORES]数组中,调度器通过idle_task(cpu)宏访问这些idle进程。以runqueue_head为表头的链表记录了所有处于就绪态的进程(当前正在运行的进程也在其中,但idle_task除外),调度器总是从中选取最适合调度的进程投入运行。
1.4由于所有处理器核共享一个运行队列,需要使用一个运行队列锁来保证互斥访问,因此,在 SMP 系统中,一个核处理器从运行队列选择任务就会阻止其他核操作这个队列。结果是,空闲处理器核需要等待这个处理器核释放运行队列锁,这样会造成效率的降低。
1.5Linux 2.6在 Linux 2.4的基础上做出了很大的改进,它能够更好地发挥SMP的性能。首先,它改变了Linux 2.4中多个处理器核共享一个运行队列的做法,而是每个处理器核都有自己的运行队列,这样就允许同一时刻多个处理器核进行任务调度,而且系统根据所有处理器核的负载进行负载平衡。负载平衡程序由函数load_balance()实现,只要当前的就绪队列为空,它就会被调用,此外,在系统空闲时每隔1毫秒调用一次,而其他情况下每隔200 毫秒调用一次,以便重新分配任务负载,维持核间的负载平衡。但是由于负载平衡程序的执行开销较大,而且执行时间具有不确定性,所以一定程度上影响了Linux的实时性和可预测性。
均增加。玄武岩纤维的掺入,提高了混凝土材料抵抗冲击破坏的能力,最大程度地延缓裂缝的扩展,保证了混凝土材料试件的完整性。
(4)纤维体积率仅为0.10%的混凝土无论是初裂、终裂次数还是破坏能,较空白混凝土均有较大幅度的提高。在试件初裂后,纤维体积率越大,破坏所需的冲击能均显著升高,0.30%体积率对应冲击能达到空白混凝土的10倍以上。
3. 结论
基于纤维增强理论,通过正交试验分析玄武岩纤维对混凝土性能的作用规律,对纤维参数主次进行区别,并进一步优选评价指标确定配合比中的纤维参数。主要结论包括:
(1)玄武岩纤维与水泥混凝土材料有很好的适应性,进行相关配合比设计是可行的;
(2)利用正交试验分析方法,得出影响混凝土性能的纤维参数中,体积掺量是主要因素,长径比是相对次要因素。在配合比设计中,应着重考虑主要因素的选值;
(3)纤维对混凝土的工作性存在较大影响,可掺减水剂解决。与普通混凝土相比,在纤维混凝土的配合比设计中,重点考虑解决混凝土工作性问题。
参考文献
[1]中华人民共和国行业标准.JTG F30-2003 公路水泥混凝土路面施工技术规范.北京:人民交通出版社,2003.
[2]中华人民共和国行业标准.JTG E30-2005 《公路工程水泥及水泥混凝土试验规程》.北京:人民交通出版社,2005.
[3]赵玉肖.《玄武岩纤维增强水泥砂浆性能试验研究》.《中外公路》.2013年10月第33卷第5期.
[作者简介] 孙俊峰(1973-),男,籍贯:河北省沽源县人,学历:本科,职称:工程师,从事公路工程建设与管理工作。