Linux操作系统分析13_scheduling.ppt
《Linux操作系统分析13_scheduling.ppt》由会员分享,可在线阅读,更多相关《Linux操作系统分析13_scheduling.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux内核源代码导读内核源代码导读 中国科学技术大学计算机系中国科学技术大学计算机系陈香兰(陈香兰(05513606864)Spring 2009进程调度进程调度v调度策略v调度算法12/22/20222Linux内核源代码导读内核源代码导读进程的分类进程的分类v不同类型的进程有不同的调度需求v第一种分类:第一种分类:I/O-boundl频繁的进行I/Ol通常会花费很多时间等待I/O操作的完成CPU-boundl计算密集型l需要大量的CPU时间进行运算12/22/20223Linux内核源代码导读内核源代码导读v第二种分类交互式进程(interactive process)l需要经常与用户
2、交互,因此要花很多时间等待用户输入操作l响应时间要快,平均延迟要低于50150msl典型的交互式程序:shell、文本编辑程序、图形应用程序等12/22/20224Linux内核源代码导读内核源代码导读批处理进程(batch process)l不必与用户交互,通常在后台运行l不必很快响应l典型的批处理程序:编译程序、科学计算实时进程(real-time process)l有实时需求,不应被低优先级的进程阻塞l响应时间要短l典型的实时进程:视频/音频、机械控制等12/22/20225Linux内核源代码导读内核源代码导读Linux中的进程调度中的进程调度vLinux既支持普通的分时进程,也支持实
3、时进程vLinux中的调度是多种调度策略和调度算法的混合。v什么是调度策略?是一组规则,它们决定什么时候以怎样的方式选择一个新进程运行vLinux的调度基于分时和优先级随着版本的变化,分时技术在不断变化优先级越来越复杂12/22/20226Linux内核源代码导读内核源代码导读vLinux的进程根据优先级排队根据特定的算法计算出进程的优先级,用一个值表示这个值表示把进程如何适当的分配给CPUvLinux中进程的优先级是动态的调度程序会根据进程的行为周期性的调整进程的优先级l较长时间未分配到CPU的进程,通常l已经在CPU上运行了较长时间的进程,通常12/22/20227Linux内核源代码导读
4、内核源代码导读与调度相关的系统调用与调度相关的系统调用vnicevgetpriority/setpriorityvsched_getscheduler/sched_setschedulervsched_getparam/sched_setparamvsched_yieldvsched_get_priority_min/sched_get_priority_maxvsched_rr_get_interval12/22/20228Linux内核源代码导读内核源代码导读调度算法调度算法vLinux 2.4的调度算法需要遍历可运行队列,算法O(n)Epoch,基本时间片,动态优先级vLinux 2.6
5、.17的调度算法(2.6.23之前)采用双队列(Active;expire),按照优先级组队,O(1)vLinux 2.6.26的调度算法非实时:CFS,vruntime,红黑树实时:优先级队列vLinux进程可以指定该进程所采用的调度策略v调度算法根据进程的调度策略,采用不同的调度算法12/22/20229Linux内核源代码导读内核源代码导读Linux 2.6.26中的中的调度策略:调度策略:Policy,调度类型,调度类型在在task_struct中,使用数据项中,使用数据项policy来表达该进程采用的调度策略来表达该进程采用的调度策略12/22/202210Linux内核源代码导读内
6、核源代码导读查看各个查看各个policy的使用情况的使用情况12/22/202211Linux内核源代码导读内核源代码导读12/22/202212Linux内核源代码导读内核源代码导读调度类型调度类型v阅读const struct sched_class,调度类rt_sched_classfair_sched_classidle_sched_classrt_sched_classfair_sched_classidle_sched_class关于调度的描述,关于调度的描述,参见参见sched_coding.txt和和sched-design-CFS.txt12/22/202213Linux内核
7、源代码导读内核源代码导读调度类接口举例调度类接口举例v找到主要与运行队列有关的enqueue_task、dequeue_taskvIdle相关:idle_sched_classno enqueue/yield_task for idle tasksdequeue_task_idlevFair相关enqueue_task_fairdequeue_task_fairvRt相关enqueue_task_rtdequeue_task_rt12/22/202214Linux内核源代码导读内核源代码导读接口关系接口关系12/22/202215Linux内核源代码导读内核源代码导读12/22/202216L
8、inux内核源代码导读内核源代码导读Idle类特殊类特殊12/22/202217Linux内核源代码导读内核源代码导读Fair类类进而查看进而查看1)enqueue_entity2)_enqueue_entity(红黑树)(红黑树)3)sched_entity结构结构4)struct rq5)struct cfs_rqCompletely Fair Scheduler 完全公平调度完全公平调度12/22/202218Linux内核源代码导读内核源代码导读Rt类类进而查看:进而查看:1)enqueue_rt_entity2)_enqueue_rt_entity每个每个cpu有一个队列有一个队列3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统 分析 13 _scheduling
限制150内