0

我的问题是 cpu 周期是否以循环方式分配给不同的进程?

问题的背景是: -

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

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

4

3 回答 3

1

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

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

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

于 2013-12-25T08:29:32.510 回答
0

a) CPU 填充声卡中的缓冲区,在 CPU 执行其他操作时从缓冲区播放。所以CPU不必一直关心声卡。

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

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

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

于 2013-12-25T08:19:15.357 回答
0

进入处理器的循环不是循环,因为循环意味着共享上的平等,而不是。您可以使用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 编辑器进行相同操作。如果什么都没有改变,我们就进入了一个太空洞。

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

于 2013-12-25T08:50:58.923 回答