首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >单核CPU是怎么同时运行多个程序的?

单核CPU是怎么同时运行多个程序的?

作者头像
Lihua奏
发布2026-07-01 20:01:33
发布2026-07-01 20:01:33
770
举报

看过上一篇的都知道,单核CPU的工作流程是 串行。既然是 串行,按道理来说,一次就只能运行一个程序,这在之前被叫做:单道批处理系统

就像你去银行办理业务,你前面的人没有处理完,你就只能等着。

首先我们知道,CPU的处理速度是极快的。

那问题来了,如果程序在等待用户输入,CPU却闲着,那这就是极大的浪费,我们必须压榨它的每一点性能。

怎么解决?

时间片轮转:操作系统把CPU的时间切成极小的片段,称为 时间片,通常几毫秒。

人是感知不到这几毫秒变化的,所以 同时运行多个程序 的效果就出来了。

那问题又来了,谁负责从程序A切换到程序B?

还是操作系统,它有个专门负责这件事的模块:调度器

它会做这样的事:

  1. 程序A用完了 -> 暂停它
  2. 把CPU控制权交给程序B ->运行它
  3. 如果程序B因为在等网络数据(暂时用不上CPU) -> 跳过,让程序C先跑

这里还有个关键点。

暂停程序A的时候,需要保留它当前的工作进度;切到程序B的时候,也要恢复它上一次暂停时的工作进度。这样才能保证每个程序都能接着上次的状态继续往下跑。

这也被称作:上下文切换

那问题又来了。看过上图我们就知道,在单核CPU里,音乐其实也是断断续续处理的,为什么我们听到的却是连续播放的呢?

你可能会觉得,这是因为断开的时间非常短,人感觉不出来。这个解释没错,但还有另一个原因。

答案是:声卡中的缓冲区

缓冲区:顾名思义,就是用来临时存放数据、起缓冲作用的存储区域。

来看音乐播放器的工作模式:

  • 声卡是独立的硬件,它只需要从缓冲区取数据,然后按节奏输出声音
  • CPU的任务,则是不断给缓冲区补充数据

所以就算CPU不是每一瞬间都在处理音乐,只要缓冲区里还有数据,声音就能继续放出来。

相信很多旧电脑都出现过这种情况:明明电脑已经卡死了,但声音还是过了几秒之后才消失,这就是原因。

诶,又有个问题。视频也有缓冲区,为什么往往是视频先卡住,然后才轮到音频卡住?

原因是:消耗速度不同

  • 视频帧:每帧画面数据量大,还需要解码(H.264/H.265压缩算法),消耗带宽和算力都更多
  • 音频数据:相比之下更轻量,缓冲区也更容易维持住

总结

最后,如果只用一句话去理解这篇,那就是:单核CPU同一时刻确实只能真正执行一个程序,但操作系统通过时间片轮转、调度器和上下文切换,做出了“多个程序同时运行”的效果。

而音乐之所以听起来不断,是因为声卡缓冲区把“CPU断断续续地供数据”和“声音连续输出”这两件事隔开了。所以这篇真正想讲清楚的,不只是“单核怎么多任务”,而是:很多我们以为的“同时进行”,本质上都是快速切换和缓冲配合出来的结果。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lihua奏 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档