进程调度

调度策略

SCHED_NORMAL(SCHED_OTHER):普通的分时进程

SCHED_FIFO:先入先出的实时进程

SCHED_RR:时间片轮转的实时进程

SCHED_BATCH:批处理进程

SCHED_IDLE:在系统空闲时进程调度的0号进程

 

调度类

 

CFS调度类

SCHED_NORMAL、SCHED_BATCH、SCHED_IDLE

 

实时调度类

SCHED_RR、SCHED_FIFO

 

调度时机

schedule()函数什么时候调用。

1、主动调用

  当进程需要等待资源而暂时停止运行,会将状态睡眠,主动请求调度,让出CPU。

2、被抢占

  (1)用户抢占

    发生时机,从系统调用返回用户空间,和从中断处理程序返回用户空间,判断TIF_NEED_RESCHED  

  (2)内核抢占

    在2.6以前不支持内核抢占,preempt_count>0不会发生抢占。发生时机,中断处理程序完成后,返回内核空间之前或者当内核代码再一次具有可抢占性的时候,如解锁及使能软中断等。

 

schedule()函数流程

1.清理当前进程

2.选择下一个要运行的进程

  pick_next_task()

3.设置新进程运行环境

4.进程上下文切换

  

posted @ 2020-11-23 16:15  11YS  阅读(146)  评论(0)    收藏  举报