这就是我提出问题的原因:我在一本教科书中读到过这样的内容“每个 CPU(或核心)一次可以在一个进程上工作。”
我假设这曾经是准确的,但不再完全正确。多线程如何发挥作用?或者这仍然是真的,linux 上的 cpu 核心一次仍然只能在一个进程上工作吗?
答案1
单个 CPU 一次处理一个进程。但“进程”是操作系统的一个构造;操作系统将在 VLC 中播放视频称为单个进程,但它实际上由许多单独的指令组成。因此,CPU 的任务并不是播放视频,而必须放弃它正在执行的所有操作。 CPU 可以承担播放视频的任务 → 切换到检查键盘或鼠标输入 → 在屏幕上绘制一些内容 → 检查设备是否已连接到任何已知端口 → 等等。一切都在眨眼之间。
现代计算机擅长多任务处理。这就是为什么您可以在 VLC 中启动视频并让它连续播放,即使您的计算机“同时”执行 100 项其他零散工作。
答案2
我相信一个单线程进程(程序)将被限制在单个 CPU 核心上执行,即使它运行在具有多核 CPU 的系统上。
如果一个进程是多线程的,并且它运行在具有多核 CPU 的系统上,则各个线程的执行可以移交给不同的 CPU 内核,因此程序可以从并行处理中受益。
我认为当多核 CPU 在 2000 年初首次出现时,很多程序仍然具有单线程架构,因此没有看到多核 CPU 的性能优势。
尽管系统总体上可以受益,因为它可以在其他 CPU 内核上运行其他进程。