Linux进程调度分析 Linux进程调度分析

Linux进程调度分析

  • 期刊名字:电脑知识与技术
  • 文件大小:864kb
  • 论文作者:钟诚,卢卫恒,李德勇
  • 作者单位:江南计算技术研究所
  • 更新时间:2020-09-25
  • 下载次数:
论文简介

ISSN 1009- 3044E-mail: infocccc.net.cnComputer Knowiedge and Technology电脑知识'技术htp://www.dnzs.net.cnVol.7, No.1, January 211.pp.70-717Tel:+86- -51- -5690963 5690964Linux进程调度分析钟诚,卢卫恒,李德勇.(江南计算技术研究所,江苏无锡214083)摘要:Linux系统作为能够应用于多平台的多任务操作系统,它被广泛应用于嵌入式电子产品中,linux系统的效率就成为电子产品性能的重要因素之一。文章从linux进程调度的角度来分析linux系统的性能,对linux进程调度的原理、算法以及过程进行了分析。关键词:进程调度;内核;多任务中图分类号:TP311文献标识码:A文章 编号:1009 -042011)01-0070- -02Linux Process Scheduling AnalysisZHONG Cheng, LU Wei-heng, LI De -yong(iangnan Computing Technology Institute, Wuxi 214083, China)Abstract: The linux system is many task operate systems that can be applied to many platforms, it is extensively been applied to a built- inelectronics product, the efficiency of linux system becomes one of the important factors of electronics product function.The article is fomthe angle that the linux progress adjusted a degree to analyze the function of linux system, adjusted principle, calculate way and process ofdegree to carry on analysis to the linux progress.Key words: process scheduling; kemel; muliusk1概述Linux 操作系统是-一种开源、免费.能够运用于多平台的多任务操作系统。多任务操作系统就是能够同时并发的交互的处理多进程任务的系统,然而多个进程的运行,就不可避免的竞争系统的资源,尤其是在单处理器系统上,进程就不可能同时占用处理器资源,这样进程调度就是Linux内核不可或缺的成员,它是负贵选择下一个可以运行的进程。进程调度程序可以看成在可运行态进程之间分配有限资源的内核子系统,它是多任务操作系统的基础.只有通过调度程序得合理调度,系统资源才会最大化的发挥它的作用,多进程才会有并发执行的效果。2基本原理2.1原则进程的运行需要系统上的各种资源,如内存.cpu、各种专用模块等,因此linux进程的调度实际上就是合理的把这些资源分配给各个进程,而如何分配则是取决于具体的调度算法,不同的应用场合需要的资源存在着很多差异,选用什么样的调度算法要依据具体的资源分配策略。一个好的调度算法应该注意以下方面:1)高效率:使CPU尽可能的保持忙碌,最大限度地利用处理器的原则是.只要有可以执行的进程,那么就总会有进程正在执行。2)公平:保证每个进程得到合理的资源分配时间.避免一个进程长期占用同一个资源,不存在一一个进程长时间获得不到资源。3)响应时间:使进程切换或获取资源时的相应时间尽可能的短,以最快的速度进人到工作状态。4)周转时间:使得用户等待结果输出的时间尽可能矩。5)吞吐量:使得在单位时间内尽可能多的处理进程。2.2调度的依据调度程序在运行时,它主要依据每个进程的tsk struck结构中need. reeched .nice .counter .policy和nt prority各项根据不同的分配策略依靠调度算法决定下-个要执行的进程。1)need. _resched:当进程需要进行调度的时候,会去判断这个变量的值.如果为1,则会调用schedule0。2)counter:时间片,它表明一个进程处于运行状态所能够持续的时间,每当-一个时钟中断到来时,就会减1,当它的值减少为0时,会把need_resched变量置1,此时进程将会进入到调度队列从而不再运行。调度策略都要给每个进程规定一个默认的时间片,这个时间片的长度要合理的设置,时间片过长,会导致- -个进程长时间占用资源,这样进程的交互性就差,其它进程也难以公平的获得资源;时间片过短,会使进程频繁的切换,进程切换的时间所占比例增大.从而致使CPU的效率降低。3)nice: 进程的静态优先级,根据优先级的高低来确定不同进程的counter的初值。调度算法中最基本的一类就是基于优先级的调度,它根:据进程在系统中的重要程度以及所省的CPU处理时间而分级.优先级高的先执行,低的后执行,同优先级的按照轮转的方式执行。调度程序总是选择优先级最高并且时间片还没有使用完的进程首先执行,因此可以通过修改进程的优先级控制进程的调度。4)t_prority:进程的动态优先级,一-般每个进程都会有一个基本优先级.调度程序可以在实际运行过程中,根据需要动态提高或降低该值,可以控制进程的调度。中国煤化工YHCNMHG收稿日期:2010-11-02作者简介:钟诚(1986-),男,助理工程师,江南计算技术研究所硕士研究生,主要研究方向为信息安全。70_ .网络通讯及安全 .......本栏目责任编辑:冯蕾第7卷第1期(2011年1月)Computer Knowtedge and Technology电訾知识与技术5)policy:进程的调度策略.进程分为实时进程和普通进程,它们所采用的调度算法不同,实时进程对执行的效率要求更高,一般情况下优先级都会高于普通进程。对于普通进程,选择进程主要依据counter和nice。3调度算法3.1时间片轮转调度算法在通常的时间片轮转算法中.系统将可以运行的程序按照先后顺序加人到一个等待队列中.每次分配时将CPU使用权交给队列头部的进程.同时赋予一个时间片,随着时钟中断的不断到来,减少时间片.当时间片用完时.系统发出信号,通知调度程序,调度程序终止该进程的执行,并把该进程送到队尾.等待下一次轮询。这时将CPU资源交给队列苘部的进程.同样根据策略分给它-一个时间片,依次循环。这样就可以保证每个进程都在较为合理的时间内获得资源,不会出现一个进程独占的现象。3.2优先权调度算法由于各个进程的应用环境差异,执行的功能有所区别,因此不同的进程对于系统的紧迫程度就有所不同.有些进程需要进入系统后优先处理.而有些进程则不需要实时处理,这便引入了优先权调度算法。根据系统对实时性要求的情况又可进- 步分为非抢占式和抢占式调度算法。非抢占式调度算法,在这种方式下,系统一旦把CPU资源分给优先级最高的进程之后.在该进程结束之前,不会再次调用调度函数,只有因为该进程正常结束或者由于某些事件导致该进程放弃CPU时,调度函数才会把CPU资源重新交给另一个优先级最高的进程。这种方式适用于批处理系统等对于实时性要求不严格的系统中。抢占式调度算法,在这种方式下.系统把CPU资源分给当前队列中优先级最高的进程之后,- -旦出现了另一个优先级更高的进程,则立刻调用调度雨数把CPU资源交给这个进程。这种调度算法在新进程到来时都会与正在执行的进程进行优先级比较,如果高于肖前进程就调用调度函数,否则就进入等待队列。抢占时调度算法更好的满足紧迫的进程,故常用与实时性要求较高的系统中。3.3多级反馈队列调度算法这种调度算法综合了时间片轮转调度算法和优先权调度算法的优点.首先根据等待队列中进程的优先级,把时间片分给优先级最高的-批进程.在这些进程中运行时间片轮转调度,当有更高的优先级进程到来时,会优先分给时间片。4Linux进程调度过程分析4.1转入调度程序的时机1)进程在执行的过程中遇到状态切换的时候:当进程需要进人休眠或者终止状态时而调用了相应的进程处理函数时,这些函数会触发进程调度函数。2)有新的并且符合运行条件的进程加入到等待队列中;3)进程从其他系统调用中返回用户态时:进程当从系统调用中返回时,都会对调度标识的检测.如果调度标识指示需要调度,则调用调度函数进行调度。4)当前运行的进程不再拥有counter值时;5)设备驱动程序:当设备API经常调用驱动程序时,驱动程序会反复检测need.,esched值,需要时调用schedule兩数获取或放弃CPU资源。4.2调度函数schedule当系统的进程符合4.1中所叙述的时机后,便转入调度函数。此过程一般分为三部分内容:调度前的检查过程,对当前进程的处理.选择下一个可以执行的进程。1)调度前的检查过程:调度函数主要对当前进程的地址空间进行检查,如果该进程没有地址空间可以使用,则必然出错,检查是否是中断服务程序调用了调度函数.如果是则出错。2)对当前进程进行处理:首先检查当前进程的状态,如果当前进程的状态为TASKZOMBE或是TASK.INTERRUPTIBLE,则直接将该进程从运行队列中删除;其次,检查当前进程的时间片,如果是来用时间片轮转调度算法,该值为0则对进程重新分配时间片,再将该进程置队列尾部。3)将资源交给符合条件的新的进程:搜索运行队列中所有进程的权值,并与当前进程的权值进行比较.选撣权值最大的进程,如果运行队列中所有进程的权值都降为零时.则表示当前队列中的进程的时间片都使用光了,需要根据策略重新获取时间片。最终选取下一个可执行的进程,将内核地址空间切换至用户地址空间。5总结进程调度程序时内核的重要组成部分,这是因为linux系统的运行离不开进程.而进程又都必须占用计算机的唯一资源CPU。然而,进程执行的功能,所備的性能差异很大.调度算法很难做到既适合众多的可运行的进程,又具有可伸缩性,还可以在吞吐量与调度周期之间求得平衡,同时还要满足各种负载,因此如何最大化的权衡各种告中县linww讲程调度的¥键所在。中国煤化工参考文献:[1]张同光.Linux 2.6内核分析一对 进程调度机制的分小长春工业大学学YHCNMHG[2]杨嘉,王移芝.Linux内核调度器算法研究与性能分析[I].计算机技术与发展2006(3).[3]谢伟毅.Linux调度算法在桌面应用环境中的改进[]计算机工程与应用2006(23).本栏目责任编辑:冯静.......网络遇讯及安全" 71.

论文截图
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。