linux调度算法
2016-10-03 16:28:02 0 举报
Linux调度算法
作者其他创作
大纲/内容
否
是
为TASK_ RUNNING
对于所有进程
让prev成为当前进程,并获取当前进程的CPU编号
执行执行 softirq 队列
计算每个进程的权值
当前进程的执行信号是否到了
该权值是否大于最高值c
执行 BUG()
当前调度程序的策略是否为SCHED_RR
执行 handle_softirq
是否被中断处理调用
时间份额除以2,再加上由nice值转换过来的TICK两
sched_data 指向一个 schedule_data 数据结构,用来保存供下一次调度时使用的信息。
是否有软中断请求
c更改为当前进程的权值
将need_resched恢复为0
对于可执行队列runqueue的每个进程
计算当前进程的权值并记录为c
c是否为0
回复最初的时间份额,并转移到队列的末尾
否则
吧改程序从可程序队列下撤
当前进程的状态为TASK_RUNNING
释放全局内核锁
执行 在中断中的调度
当前进程是否是内核程序
将next指向已知最佳的候选进程,设置其c为1000
判断当前进程的状态
执行Scheduling in interrupt/n
执行BUG()
开始(调度算法)
将进程的状态改为TASK_RUNNING
为TASK_ INTERRUPTIBLE
时间片是否用完
0 条评论
下一页