2009年第5期商丘职业技术学院学报Vol.8,No.5 第8卷(总第44期)JOURNALOFSHANGQIUVOCATIONALANDTECHNICALCOLLEGEOct.,2009文章编号:1671-8127(2009)05-0042-03
Linux系统中进程调度策略
葛 君1,2,郑凤婷2
(1.软件工程国家重点实验室(武汉大学),湖北武汉,430072;2.商丘职业技术学院,河南商丘,476000)
摘 要:Linux是一个多用户多任务的操作系统.Linux中实现了对多个进程公平、高效的调度,并不是采用单
一的调度策略,而是几种调度策略有机地综合应用.
关键词:进程调度;优先级;时间片轮转;实时进程
中图分类号:TP31617 文献标识码:A
在任何一种操作系统中,进程调度一直是一个核心问题,进程调度策略的选择对整个系统性能有至关重要的影响.一个好的调度算法应该考虑很多方面:公平、有效、响应时间、周转时间,但这些因素之间又是相互矛盾的,最终的取舍根据系统要达到的目标而定.本文以,分析其进程调度策略,以期对进程调度过程有更深层次的认识.
1 Linux的进程调度
Linux支持多进程,进程控制块)是系统中最为重要的数据结构之一,用来存放进程所必需的各种信息.,包括进程的类型、进程状态、优先级、时钟信息等.
Linux()函数执行.这是一个只在内核态运行的函数,函数代码为所有进程共享.
2 Linux进程调度时机
Linux的进程调度时机与现代操作系统中的调度时机基本一致,为了判断是否可以执行内核的进程调度程序来调度进程,Linux中设置了进程调度标志need_resched,当标志为1时,可执行调度程序.通常,Linux调度时机分以下两种情况:(1)主动调度:指显式调用schedule()函数明确释放CPU,引起新一轮调度.一般发生在当前进程状态改变,如:进程终止、进程睡眠、进程对某些信号处理过程中等.(2)被动调度:指不显示调用schedule()函数,只是PCB中的need_resched进程调度标志,该域置位为1将引起新的进程调度,而每当中断处理和系统调用返回时,核心调度程序都会主动查询need_resched的状态(若置位,则主动调用schedule()函数).一般发生在新的进程产生时、某个进程优先级改变时、某个进程等待的资源可用被唤醒时、当前进程时间片用完等.
3 Linux进程调度策略
一般来说,不同用途的操作系统的调度策略是不同的.Linux进程调度是将优先级调度、时间片轮转法调度、先进先出调度综合起来应用.Linux系统中,不同类型的进程调度策略也不一样.
3.1 与进程调度相关的数据结构
每个进程都是一个动态的个体,其生命周期依次定义的数据结构为:TASK_RUNNING,TASK_INTER2RUPTIBLE,TASK_UNINTERRUPTIBLE,TASK_ZOMBIE和TASK_STOPPED.一个进程在其生存期间,状态会发生多次变化.
收稿日期:2009-04-02
作者简介:葛 君(1983—)女,河南商丘人,软件工程国家重点实验室(武汉大学)在读工程硕士,主要从事计算机操作系统及数据库
研究.
42