linux调度程序如何将进程决定为实时,交互式批处理

时间:2013-08-26 16:41:36

标签: linux linux-kernel scheduling scheduler

当我们编写程序时,我们没有指定流程的性质,例如它是实时的,交互式的......我读到Linux内核根据流程的性质进行调度。找不到一篇解释Linux如何决定的文章。很高兴有人可以提供一些信息。这个问题只是学术上的兴趣。

我已经读过我可以使用系统调用sched_setscheduler来设置调度程序。但是当没有打电话时会发生什么?

调度程序如何将进程决定为交互式/批处理?

2 个答案:

答案 0 :(得分:3)

当未调用sched_setscheduler时,则使用默认调度策略,即SCHED_OTHER。这意味着调度程序是循环/时间共享,换句话说:线程以循环方式运行,而时间共享部分意味着如果他们不自愿放弃cpu,有时任务将被换出(抢占)为了让其他线程有执行时间。此外,此调度策略没有进程/线程优先级的概念。

http://linux.die.net/man/2/sched_setscheduler

答案 1 :(得分:0)

确定。找到this link的答案。

  

动态优先级奖金和处罚基于互动性   启发式。这种启发式方法是通过跟踪多少来实现的   时间任务花费睡眠(可能是在I / O上被阻止)而不是   运行。 I / O绑定的任务往往会因为它们而睡眠不足   阻止I / O,而CPU绑定的任务很少睡眠,因为它们很少阻止   在I / O上。通常,任务处于中间,而不是完全   CPU绑定或I / O绑定,因此启发式产生某种规模   而不是简单的二进制标签(I / O绑定或CPU绑定)。