【问题标题】:Time quantum per process per thread每个线程每个进程的时间量
【发布时间】:2012-08-20 10:17:39
【问题描述】:

我有一个关于 Windows 和 linux 中进程和线程的时间量的问题。

我知道操作系统通常会为每个线程提供固定的时间量。 (我知道时间量子根据前台或后台线程而变化。也可能根据进程的优先级而变化。)

每个进程是否有固定的时间段?例如。如果操作系统为每个进程提供 36 个时间片,并且如果一个进程有 2 个线程,那么每个线程将获得 18 个时间片。如果线程数变为 3,则每个线程将得到 12。

但是,如果不存在每个进程的固定量程并且操作系统为每个线程提供固定量程(不依赖于父进程。)那么我可以通过生成多个线程来提高我的进程效率。(假设我不我的代码中有两个互斥量/信号量。)

我有一个可以在两个操作系统(Windows 和 linux)上运行的应用程序。所以,我是在一般意义上问它。

谢谢

【问题讨论】:

  • 这个可怕的术语“量子”从何而来? 99.99% 的线程在被 I/O、另一个线程或其他一些系统调用阻塞之前,从未运行过任何接近 OS 计时器调度间隔的东西。我认为“量子”应该是不可分割的?令人误解的愚蠢术语!
  • 你可能想看看这个:support.microsoft.com/kb/259025
  • smith - M$,我应该猜到了...

标签: c windows linux kernel


【解决方案1】:

从调度的角度来看,Linux 上的线程和进程是等价的。因此,如果一个进程产生两个线程,每个线程应该得到 36 个量程。虽然我想听听比我可信度更高的人来确认这一点。

【讨论】:

  • Windows 也是如此。调度程序处理线程,而不是进程。
  • @Harry:在这种情况下,一个进程可以通过拥有多个线程来窃取更多时间。这个说法对吗?
  • 是的,尽管称其为“偷窃”似乎有点奇怪。 :-)
【解决方案2】:

一个很有趣的问题:)

我并没有确切的细节,但从下面的链接你可以看到现代操作系统有一个基于估计的线程调度方法。

http://technet.microsoft.com/en-us/magazine/2007.02.vistakernel.aspx

【讨论】:

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