【问题标题】:Distribution of CPU cycles when multiple process are running in parallel?多个进程并行运行时的 CPU 周期分布​​?
【发布时间】:2013-12-25 16:50:58
【问题描述】:

我的问题是 cpu 周期是否分配给不同的进程 循环赛时尚?

问题的背景是:-

我有 Windows 系统,比如说我打开了这 10 个不同的进程 在媒体播放器中播放音乐、在写字板中输入、在记事本中输入、在浏览器中浏览等。

当我在写字板打字的同时,音乐在后台不间断地播放。我想知道如何 来音乐播放器被赋予连续的 CPU 周期。我的理解是操作系统在不同的 CPU 周期之间轮换 以循环方式处理,但这种切换太快,最终用户无法发现中断 在音乐中(虽然实际上它被打断了)

【问题讨论】:

  • 这个问题更适合 StackExchange 网络的 SuperUser 站点。

标签: operating-system multiprocessing cpu-usage round-robin


【解决方案1】:

简单的循环是一种在一组进程(线程)之间共享计算资源的方法,而不是在 Windows 中使用的方法。每个线程都有它的静态和动态优先级。 scheduler 选择具有最高优先级的线程来运行,并给它一个执行时间槽。如果线程完全消耗了时隙,那么调度程序会预防性地将其从执行中换出,或者如果线程无事可做(例如它正在等待),则线程可以自愿将剩余的时隙还给系统用于结束 IO 操作)。

在您的特定问题中,还有另一件事可以产生连续播放的声音。它正在缓冲。媒体播放器预先从媒体中读取数据,然后将其排队到硬件中播放。所以硬件应该总是预先有一个缓冲的数据,否则声音会有中断。如今,即使在显着负载下,我们的计算机也足够强大,可以为硬件提供必要的流。

在过去,如果您一次运行多个应用程序并且系统开始从磁盘换入和换出进程(从操作系统的角度来看,比让媒体播放器有机会运行更重要)然后你可以让你的音乐在无声的间隙中播放。

【讨论】:

  • 谢谢谢尔盖。您所说的“如今我们的计算机已经足够强大,即使在显着负载下也可以向硬件提供必要的数据流”是什么意思?
  • 另一个问题是您说“在您的特定问题中,还有另一件事可以创建声音的连续播放。它正在缓冲。媒体播放器预先从媒体中读取数据,然后将其排队到播放的硬件。所以硬件应该总是提前缓冲数据,否则声音会中断。我认为您的意思是在媒体播放器读取缓冲数据到硬件播放之前需要 CPU 周期。一旦完成,就不需要 CPU 周期。只是硬播放缓冲的数据。我的理解正确吗?
  • 我看到您的问题不是关于进程/线程调度,而是更多关于它如何在没有明显中断的情况下播放声音流。因此,它更多的是关于现代 IO 吞吐量和缓冲。典型的声音流大约是 256 Kbit/sec,所以这几年都没有改变。相反,硬盘和控制器的传输速度显着增长。因此,即使您的 PC 加载了其他任务,并且由于现代 CPU 的多核架构,媒体播放器也有足够的时间来缓冲足够的数据。
  • 但是您说的完全正确,完成整个任务仍然需要 CPU 周期。
【解决方案2】:

a) CPU 填充声卡中的缓冲区,在 CPU 执行其他操作时从缓冲区播放。这样CPU就不用一直关心声卡了。

b) 进程之间的切换发生在毫秒甚至微秒的时间范围内,因此您作为人类不会注意到这一点。

c) 无事可做的进程(例如等待键的写字板)告诉操作系统它们处于空闲状态,因此操作系统不会给它们任何时间,直到发生某些事情(按下键或窗口已被按下)已移动,因此必须重新绘制)。

d) CPU 速度很快。即使您每秒可以键入 10 个键,CPU 每个键也不会花费超过 100 微秒(实际上要少得多,但这个值更容易计算),因此在以 10 个键/秒的速度键入时,您正在付出工作1ms/s 到 CPU。因此,您在打字时会占用 0.1% 的 CPU 时间。您甚至不会看到任务管理器中的 CPU 使用率上升。

【讨论】:

  • 哇。我可以长时间超过 10Keys/s,但我需要我的四只手(是的,猴子有)像一只愤怒的猴子一样敲打(再敲一次!)我的键盘。
【解决方案3】:

循环进入处理器不是循环,因为循环意味着共享上的平等,而不是。 您可以使用priority(windows) 或nice (Linux) 更改所有循环分配百分比。 CPU 在周期之间动态分配。

在您的上下文中,将更多优先级放在声音上会导致击键重复速度滞后。 (就像你在 133Mhz 电脑上做的那样)

很多额外的信息: 说 CPU 是使 pc 强大的唯一因素是一个常见的问题。 但真的不是。是核心,但不是引擎。

主处理器不会像我们“想”的那样处理您的声音。音频芯片用于。他们得到了具体的声音芯片处理负载。所以,如果你推送播放... CPU 推送播放,绘制一个播放器,将信息(mp3 mb 文件)放入 ram,然后发送到声音芯片,声音芯片完成这项工作。

无论如何,计算机的工作流程不是 CPU->keyboard->CPU 也不是那样的。 您必须检查存储声音并传递给声音芯片的 RAM。 延迟、当前状态、当前负载...

主板是最重要的组件(micro、cpu、sound、vga、other),因此总 BUS MHz(周期)的总和比 CPU 功率更重要。

作为最后一点。如果您在将声音用于其他应用程序/进程时遇到问题,只需为该进程添加更多优先级即可。

声音播放器的“背景状态”可能是其自身获得较低优先级的原因之一……但我不确定。

我知道这不是一个很酷的答案。也许重新编辑它们。 把想法摆在桌面上。

我建议您至少尝试 3 个具有相同文件的声音播放器。 如果没有任何变化,请尝试使用 3 个 txt 编辑器进行相同操作。 如果一切都没有改变,我们就进入了一个太空洞。

我认为是内存,如果不是,主板。 因为你没有发布任何关于你的系统的数据,我不能再说什么了。 如果您有 4gb 内存,则不是。 如果你有 133Mhz CPU,我们需要谈谈它:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-05
    • 2012-09-10
    • 1970-01-01
    • 2013-10-10
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多