一种进程调度优化方法_2

文档序号:9564491阅读:来源:国知局
0调度策略或SCHED_RR调度策略,对于非实时普通任务,选用默认的SCHED_FIF0调度策略,对于作业密集型、响应时间要求低,交互性不强的批处理任务,可以选用SCHED_BATCH调度策略。
[0044]详细的,在操作系统中,用户空间和内核空间创建一个新的进程是通过不同的系统调用函数实现的。在用户空间是通过fork函数族的系统调用来创建一个新的进程,如fork()、clone()、vfork()函数,在内核空间通过调用kernel_thread()函数来创建一个内核进程。在创建新进程的过程中,通过不同的选项参数来确定进程所需资源的属性,如CLONE_FILES、CLONE_SIGHAND参数分别表示子进程和父进程共享相同的文件描述符合信号处理表。由于调用进程处于TASK_RUNNING状态,则子进程默认也处于TASK_ST0PPED状态。用了 CL0NE_ST0PPED选项,则子进程的初始状态将是TASK_ST0PPED状态。
[0045]其中,Linux操作系统中进程在系统中有五个状态:TASK_RUNNING、TASK_INTERRUPTIBEL、TASKJJNINTERRUPTIBLE、TASK_ST0PPED 和 TASK_Z0MBILE。TASK_RUNNING表示进程正在运行状态,进程可以进行实际的操作,TASK_INTERRUPTIBLE表示是处于等待队列中的进程,可以被信号中断唤醒,TASKJJNINTERRUPTIBLE表示不可中断等待状态,也是处于等待队列中的进程,但是不可以由其他进程通过信号中断睡眠,TASK_ST0PPED表示停止状态,进程被暂停,TASK_Z0MBILE表示僵死状态,进程终止了,是进程结束运行的一个过渡状态。
[0046]其中,Linux操作系统的进程从创建、运行到最后周期结束退出,进程的状态会发生一系列的变化。但从对CPU资源的占有角度看,只有TASK_RUNNING状态和非TASK_RUNNING 状态两种状态,即可以把 TASK_INTERRUPTIBLE、TASKJJNINTERRUPTIBLE、TASK_STOPPED、TASK_Z0MBIE归纳为非TASK_RUNNING状态。进程状态之间的转换就可以看成是TASK_RUNNING状态和非TASK_RUNNING状态之间的转换。
[0047]其中,当处于TASK_INTERRUPTIBLE状态的操作系统进程接受到SIGKILL信号时,操作系统进程状态会先转变为TASK_RUNNING状态,然后响应SIGKILL信号,转变为TASK_DEAD状态,而不会直接从TASK_INTERRUPTIBLE状态退出;当操作系统进程所等待的1/0模拟操作实现时,需要从非TASK_RUNNING状态转变为TASK_RUNNING状态,这时使操作系统进程的状态转换为TASK_RUNNING状态,并将操作系统进程的队列加入到CPU的可运行队列,使操作系统进程在下一个调度时机到来时有机会得到调度。
[0048]通过本发明提供的所提供的一种进程调度优化方法,用户可以根据自己的需要,通过给自动化脚本传入参数设置所启动操作系统监控器调度的策略和运行级别,使之能根据作业的需要占有物理处理器,比如对于实时性的任务,可以设置为实时进程的调度策略,选用SCHED_FIF0或SCHED_RR,对于非实时普通任务,选用默认的调度策略SCHED_FIF0,对于作业密集型、响应时间要求低,交互性不强的批处理任务,可以选用SCHED_BATCH策略。该方法根据创建操作系统的需要,用户可以指定所启动操作系统被调度的策略,而且当系统中运行2个或多个操作系统时,可以各自拥有不同的调度策略,在不同的调度策略下,可以具体设置该策略允许范围内的运行优先级,并且,在为操作系统监控器中添加一个新的调度策略后,通过在创建操作系统时指定参数policy,可以被操作系统监控器调度,且能正常运行。具体的,在操作系统调度优化中,主要包括调度策略的设计和运行有限级别的设置,该调度优化的处理流程如图2所示。图2为操作系统调度优化的处理流程图,如果用户在启动操作系统调度机时,没有通过自动化脚本指定启动参数pr1rity和policy,参数pr1rity指代优先级参数,参数policy指代调度策略参数,则操作系统采用默认的调度策略和优先级,如果仅仅指定了参数pr1rity或policy,则对操作系统的运行优先级或者调度策略进行设置,如果同时指定了两个参数,则需要对操作系统的调度策略进行设置,并在该策略运行级别的范围内设置合理的优先级。具体流程为:增加虚拟机运行级别和调度参数策略选项,然后进行脚本参数解析,接着判断是否设置运行级别或调度策略,若否,采用系统默认设置,若是,继续判断是否设置调度策略;若判断是设置调度策略,则设置不同的调度策略,具体是设置FIFO调度策略、设置RR调度策略、设置BATCH调度策略或者设置NEW调度策略,即设置SCHED_FIFO调度策略、设置SCHED_RR调度策略、设置SCHED_BATCH调度策略或者设置NEW调度策略。
[0049]综上,本发明所提供的一种进程调度优化方法,在linux操作系统中建立一套自动化脚本;利用自动化脚本的传入参数设置操作系统监控器的调度策略和运行级别;利用传入参数调节linux内核的进程的调度策略。可见,该方法通过自动化脚本,用户可以调节参数,通过参数来调节linux内核的进程的调度策略,用户可以根据自己的需要,设置所启动机器监控器调度的策略和运行级别,使之能根据作业的需要占有物理处理器,如此在操作系统启动运行期间根据自动化脚本传入的参数,调用进程的不同调度策略,实现操作系统能够根据实际需要,更快地获取底层物理资源,提高进程调度的效率。
[0050]以上对本发明所提供的一种进程调度优化方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
【主权项】
1.一种进程调度优化方法,其特征在于,包括: 在linux操作系统中建立一套自动化脚本; 利用所述自动化脚本的传入参数设置操作系统监控器的调度策略和运行级别; 利用所述传入参数调节linux内核的进程的调度策略。2.如权利要求1所述的方法,其特征在于,所述利用所述自动化脚本的传入参数设置操作系统监控器的调度策略和运行级别,包括: 将实时性的任务设置为实时进程的调度策略,选用SCHED_FIFO调度策略或者SCHED_RR调度策略; 将非实时性的普通任务设置为默认的调度策略,选用SCHED_FIFO调度策略; 将交互性不强的批处理任务设置为SCHED_BATCH调度策略。3.如权利要求2所述的方法,其特征在于,所述交互性不强的批处理任务包括作业密集型的批处理任务或者响应时间要求低的批处理任务。4.如权利要求1所述的方法,其特征在于,所述在linux操作系统中建立一套自动化脚本,包括: 在linux操作系统中,通过不同的系统调用函数创建新的进程; 在创建新的进程的过程中,通过不同的选项参数来确定进程所需资源的属性; 将创建新的进程的过程制作成一套自动化脚本,所述选项参数为所述自动化脚本的传入参数。5.如权利要求4所述的方法,其特征在于,所述通过不同的系统调用函数创建新的进程,包括: 在用户空间通过fork函数族的系统调用来创建一个新的进程;所述fork函数族中包括fork ()函数、clone ()函数和vfork()函数; 在内核空间通过调用kernel_thread()函数来创建一个内核进程。6.如权利要求4所述的方法,其特征在于,所述参数选项中包括CLONE_FILES参数和CLONE_SIGHAND参数,CLONE_FILES参数表示子进程共享相同的文件描述符合信号处理表,CLONE_SIGHAND参数表示子进程和父进程共享相同的文件描符合信号处理表。7.如权利要求4所述的方法,其特征在于,在创建新的进程的过程中,通过不同的选项参数来确定进程所需资源的属性之后,还包括: 若调用的新的进程处于TASK_RUNNING状态,则子进程默认处于TASK_STOPPED状态; 若选项参数选用CL0NE_ST0PPED选项,则子进程的初始状态将是TASK_STOPPED状态。8.如权利要求4所述的方法,其特征在于,所述新的进程在linux操作系统中有五个状态:TASK_RUNNING、TASK_INTERRUPTIBEL、TASKJJNINTERRUPTIBLE、TASK_STOPPED 和TASK_ZOMBILE ;所述 TASK_INTERRUPTIBLE、TASKJJNINTERRUPTIBLE、TASK_STOPPED 和 TASK_ZOMBIE 为非 TASK_RUNNING 状态。
【专利摘要】本发明公开了一种进程调度优化方法,该方法包括:在linux操作系统中建立一套自动化脚本;利用所述自动化脚本的传入参数设置操作系统监控器的调度策略和运行级别;利用所述传入参数调节linux内核的进程的调度策略。该方法实现操作系统能够根据实际需要,更快地获取底层物理资源,提高进程调度的效率。
【IPC分类】G06F9/48
【公开号】CN105320563
【申请号】CN201510889349
【发明人】宋腾
【申请人】浪潮(北京)电子信息产业有限公司
【公开日】2016年2月10日
【申请日】2015年12月7日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1