linux系统中进程调度策略

linux系统中进程调度策略

ID:3914371

大小:262.24 KB

页数:3页

时间:2017-11-25

linux系统中进程调度策略_第1页
linux系统中进程调度策略_第2页
linux系统中进程调度策略_第3页
资源描述:

《linux系统中进程调度策略》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2009年第5期商丘职业技术学院学报Vol.8,No.5第8卷(总第44期)JOURNALOFSHANGQIUVOCATIONALANDTECHNICALCOLLEGEOct.,2009文章编号:1671-8127(2009)05-0042-03Linux系统中进程调度策略1,22葛君,郑凤婷(1.软件工程国家重点实验室(武汉大学),湖北武汉,430072;2.商丘职业技术学院,河南商丘,476000)摘要:Linux是一个多用户多任务的操作系统.Linux中实现了对多个进程公平、高效的调度,并不是采用单一的调度策略,而是几种调度策略有机地综合应用.关键词:进程调度;优先级;时间片

2、轮转;实时进程中图分类号:TP31617文献标识码:A在任何一种操作系统中,进程调度一直是一个核心问题,进程调度策略的选择对整个系统性能有至关重要的影响.一个好的调度算法应该考虑很多方面:公平、有效、响应时间、周转时间、系统吞吐量等等,但这些因素之间又是相互矛盾的,最终的取舍根据系统要达到的目标而定.本文以Linux操作系统为例,分析其进程调度策略,以期对进程调度过程有更深层次的认识.1Linux的进程调度Linux支持多进程,进程控制块PCB(ProcessControlBlock)是系统中最为重要的数据结构之一,用来存放进程所必需的各种信息.PCB用结构task_struct来

3、表示,包括进程的类型、进程状态、优先级、时钟信息等.Linux系统中,进程调度操作由schedule()函数执行.这是一个只在内核态运行的函数,函数代码为所有进程共享.2Linux进程调度时机Linux的进程调度时机与现代操作系统中的调度时机基本一致,为了判断是否可以执行内核的进程调度程序来调度进程,Linux中设置了进程调度标志need_resched,当标志为1时,可执行调度程序.通常,Linux调度时机分以下两种情况:(1)主动调度:指显式调用schedule()函数明确释放CPU,引起新一轮调度.一般发生在当前进程状态改变,如:进程终止、进程睡眠、进程对某些信号处理过程中等

4、.(2)被动调度:指不显示调用schedule()函数,只是PCB中的need_resched进程调度标志,该域置位为1将引起新的进程调度,而每当中断处理和系统调用返回时,核心调度程序都会主动查询need_resched的状态(若置位,则主动调用schedule()函数).一般发生在新的进程产生时、某个进程优先级改变时、某个进程等待的资源可用被唤醒时、当前进程时间片用完等.3Linux进程调度策略一般来说,不同用途的操作系统的调度策略是不同的.Linux进程调度是将优先级调度、时间片轮转法调度、先进先出调度综合起来应用.Linux系统中,不同类型的进程调度策略也不一样.3.1与进程

5、调度相关的数据结构每个进程都是一个动态的个体,其生命周期依次定义的数据结构为:TASK_RUNNING,TASK_INTER2RUPTIBLE,TASK_UNINTERRUPTIBLE,TASK_ZOMBIE和TASK_STOPPED.一个进程在其生存期间,状态会发生多次变化.收稿日期:2009-04-02作者简介:葛君(1983—)女,河南商丘人,软件工程国家重点实验室(武汉大学)在读工程硕士,主要从事计算机操作系统及数据库研究.·42·葛君,郑凤婷:Linux系统中进程调度策略第5期与其数据结构相对应的即是Linux进程的状态,分别是:运行态、等待态、暂停态和僵死态.其中等待态

6、又分为可中断睡眠和不可中断睡眠两种.状态转换图如图1所示.图1Linux进程的状态及其转换其中:TASK_RUNNING:进程正在运行处于运行状态或者将要运行处于就绪状态.TASK_INTERRUPTIBLE:可中断睡眠,可以通过资源有效或信号唤醒.TASK_UNINTERRUPTIBLE:不可中断睡眠,只能通过资源有效唤醒.TASK_STOPPED:暂停状态,通过其他进程的信号才能被唤醒.TASK_ZOBIE:僵死状态,大部分资源已经释放,进程终止前的一个过渡状态.3.2进程状态及其转换过程的描述进程创建时的状态为不可打断睡眠,在do_fork()结束前被父进程唤醒后,变为执行状

7、态.处于执行状态的进程被移到run_queue就绪任务队列中等待调度,适当时候由schedule()按调度算法选中,获得CPU.若采用轮转法,即时,由时钟中断触发timer_interrupt(),其内部调用schedule(),引起新一轮调度,当前进程的状[1]119-135态仍处于执行状态,因而把当前进程挂到run-queue队尾.获得CPU且正在运行的进程若申请不到某资源,则调用sleep-on()或interruptible-sleep-on()睡眠,其tas

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。