欢迎来到天天文库
浏览记录
ID:39465766
大小:22.00 KB
页数:4页
时间:2019-07-04
《Linux进程调度策略》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux进程调度策略的研究摘要:进程调度是多任务操作系统的核心,本文描述了Linux进程调度的过程。Linux系统中的每个进程用task_struct结构来描述,进程调度的依据是task_struct结构中的policy、priority、counter和rt_priority。Linux根据policy将进程划分为实时和普通两类,普通进程采用动态优先调度,实时进程采用先来先服务(FIFO)调度和时间片轮转(RR)调度。关键词:Linux,进程,调度策略,优先级,时间片1.前言进程调度的实质是资源的分配,如何使系统能够保持较短的响应时间和较高的吞吐量,如何在
2、多个可运行的进程中选取一个最值得运行的进程投入运行是操作系统调度器的主要任务。一个好的调度算法应该考虑到公平、高效、响应时间、周转时间、吞吐量等诸多因素。进程调度是操作系统的核心,调度算法的优劣直接关系到系统的运行效率。本文以Linux操作系统为例,详细描述其进程调度策略,以希望对进程调度过程有更为感性的认识。2.Linux进程调度原理进程是动态的,一个进程的所有信息都被放在其对应的task_struct数据结构中。每当一个新的进程创建时,一个新的task_struct结构将分配给该进程,并同时增加到进程向量的数组中。系统还有一个当前进程指针,用来指向当前正在
3、运行的进程。task_struct实际上就是通常所说的“进程控制块”PCB,它是系统对进程控制的惟一且最有效的手段。2.1进程调度的依据调度程序运行时,要在所有可运行状态的进程中选择最值得运行的进程投入运行。在每个进程的task_struct结构中有:policy、priority、counter、rt_priority,这4项就是选择进程的依据。其中policy是进程的调度策略,用于区分实时进程和普通进程,实时进程优先于普通进程运行;priority是进程(包括实时和普通)的静态优先级;counter是进程剩余的时间片,它的起始值就是priority的值;由
4、于counter在后面计算一个处于可运行状态的进程值得运行的程度goodness时起重要作用,因此,counter也可以看作是进程的动态优先级。rt_priority是实时进程特有的,是实时进程之间的相对优先级,用于实时进程间的选择。Linux用函数goodness()来衡量一个处于可运行状态的进程值得运行的程度。该函数综合了以上提到的4项,还结合了一些其他的因素,给每个处于可运行状态的进程赋予一个权值(weight),调度程序以这个权值作为选择进程的惟一依据。2.2进程调度的时机Linux的调度时机分两种情况:主动调度:主动调度是指显式调用schedule(
5、)函数明确释放CPU,引起新一轮进程调度。一般发生在当前进程状态改变,例如:进程终止、进程睡眠等;进程对某些信号处理过程中断等等。被动调度:被动调度是指不显式调用schedule()函数,只是将进程PCB中调度标志need_resched置1,而每当中断处理和系统调用返回时,核心都会主动查询need_resched的状态:如果置1,则主动调用schedule()函数。一般发生在新的进程产生时、某个进程优先级改变时、某个进程等待的资源可用被唤醒时、当前进程时间片用完等。1.Linux进程调度策略首先,Linux根据policy从整体上区分实时进程和普通进程(非实
6、时进程),因为实时进程和普通进程度调度是不同的,实时进程应该先于普通进程而运行。然后,对于同一类型的不同进程,采用不同的标准来选择进程:对于普通进程,Linux采用动态优先调度(多级反馈轮转调度算法)的策略,选择进程的依据就是进程counter的大小。对于实时进程,Linux采用了两种调度策略,即FIFO(先来先服务调度)和RR(时间片轮转调度)。1.1Linux进程模型Linux中的每个进程由task_struct结构来描述。在Linux中任务和进程是相同的术语,task_struct其实就是指PCB(进程控制块)。进程PCB中涉及进程调度的域如下:Stru
7、cttast_struct{…Volatilelongneed_resched;Longcounter;Longnice;Unsignedlongpolicy;Unsignedlongrt_priority;…};其中,need_resched域是进程调度标志,该域置位将引起新的进程调度。counter域是当前进程剩余的时间片值,随着进程的执行,时间片逐渐减小,时间片用完引起进程调度。它是进程的动态优先级,保证当前进程不会一直占有CPU,给其他进程被调度的机会。如果进程尚未终止,核心继续向该进程分配时间片,但是是否立即重新分配时间片,即向counter域赋值,
8、则根据policy域值不同而不同。时间
此文档下载收益归作者所有