Linux 051287161312 xlanchenustc edu cn Autumn 2009 nice Slides: 48 Download presentation Linux操作系统分析 中国科学技�大学�算机系 �香�( 0512-87161312) xlanchen@ustc. edu. cn Autumn 2009 与�度相关的系��用 nice getpriority/setpriority sched_getscheduler/sched_setscheduler sched_getparam/sched_setparam sched_yield sched_get_priority_min/sched_get_priority_max sched_rr_get_interval 2021/12/2411/23/09 Linux操作系统分析 8 例如 2021/12/2411/23/09 Linux操作系统分析 9 又如 2021/12/2411/23/09 Linux操作系统分析 10 2021/12/2411/23/09 Linux操作系统分析 11 2021/12/2411/23/09 Linux操作系统分析 12 Linux 2. 6. 26中的 �度策略: Policy,�度�型 include/linux/sched. h 在task_struct中,使用数据项policy来表达该进程采用的调度策略 2021/12/2411/23/09 Linux操作系统分析 15 �看 linux-2. 6. 26中各个policy的使用情况 2021/12/2411/23/09 Linux操作系统分析 16 kernel/sched. c 2021/12/2411/23/09 Linux操作系统分析 17 �度�型 �� const struct sched_class,�度� rt_sched_class kernel/sched_idletask. c fair_sched_class kernel/sched_fair. c idle_sched_class kernel/sched_rt. c rt_sched_class 2021/12/2411/23/09 fair_sched_class Linux操作系统分析 idle_sched_class 18 �� 2. 6. 26的schedule函数 kernel/sched. c,参见函数schedule() �度函数的关� : �度算法的关� 入列 CFS根据vruntime的�入列,其关�在于 vruntime�的�算 RT根据�先�入列 kernel/sched_fair. c,update_curr 2021/12/2411/23/09 Linux操作系统分析 19 Linux-2. 6. 26中每个CPU的就绪队列 2021/12/2411/23/09 Linux操作系统分析 20 Linux-2. 6. 26中进程的调度实体 include/linux/sched. h: task_struct 2021/12/2411/23/09 Linux操作系统分析 21 include/linux/sched. h 2021/12/2411/23/09 Linux操作系统分析 22 2021/12/2411/23/09 Linux操作系统分析 23 2. 在__update_curr中, kernel/sched_fair. c 3. 在yield_task_fair中, 4. 等等 2021/12/2411/23/09 Linux操作系统分析 25 考虑task_tick_fair 2021/12/2411/23/09 Linux操作系统分析 27 关键内部函数update_curr,参见源代码 2021/12/2411/23/09 Linux操作系统分析 28 include/linux/sched. h 2021/12/2411/23/09 Linux操作系统分析 29 考虑task_tick_rt 2021/12/2411/23/09 Linux操作系统分析 30 Linux-2. 4. 18中的调度算法 2021/12/2411/23/09 Linux操作系统分析 33 �例:�程 0(INIT_TASK)的��片: HZ代表了1秒内的tick数 因此一个tick就是 1/100秒 即 10 ms 可以计算出 DEF_COUNTER=10个tick 即 100 ms (实际上约 105 ms) 2021/12/2411/23/09 Linux操作系统分析 MAX_COUNTER=20个tick 即 200 ms 42