【问题标题】:How linux scheduler decides a process as realtime, interactive, batchlinux调度器如何决定一个进程是实时的、交互式的、批处理的
【发布时间】:2013-08-26 16:41:35
【问题描述】:

当我们编写程序时,我们没有指定进程的性质,例如它是否是实时的、交互式的……我读到 Linux 内核会根据进程的性质进行调度。找不到一篇解释 Linux 如何决定的文章。如果有人可以提供一些信息,那就太好了。该问题仅具有学术兴趣。

我读到我可以使用系统调用sched_setscheduler 来设置调度程序。但是如果没有调用会发生什么?

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

【问题讨论】:

  • 您不会“编写”进程。您编写源代码,稍后可能编译为可执行的二进制程序。
  • @BasileStarynkevitch 更正:0

标签: linux linux-kernel scheduling scheduler


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    好的。从this link找到答案。

    动态优先级奖励和惩罚基于交互性 启发式。这种启发式是通过跟踪多少 任务花费在睡眠上的时间(可能在 I/O 上被阻塞)而不是 跑步。受 I/O 限制的任务往往会休眠很多,因为它们 在 I/O 上阻塞,而 CPU-bound 任务很少休眠,因为它们很少阻塞 在 I/O 上。很多时候,任务在中间,并不完全 受 CPU 限制或 I/O 限制,因此启发式方法会产生某种规模 而不是一个简单的二进制标签(I/O-bound 或 CPU-bound)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2017-07-22
      • 1970-01-01
      相关资源
      最近更新 更多