进程调度
调度策略
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.进程上下文切换
                    
                
                
            
        
浙公网安备 33010602011771号