![单线程 CPU 上的多线程应用程序?](https://linux22.com/image/97662/%E5%8D%95%E7%BA%BF%E7%A8%8B%20CPU%20%E4%B8%8A%E7%9A%84%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
这个问题背后的动机源于探索英特尔伽利略第二代主板它有一个单线程处理器。
- 我正在寻找概念性解释,了解这对于依赖线程存在的所有用户空间应用程序意味着什么?
- 这是否意味着需要对内核进行修补,以便在软件中模拟线程调用的系统调用,而不是依赖 CPU 线程支持?
答案1
多任务系统处理多个进程和线程,无论系统中安装的处理器或内核的数量以及它们处理的“线程”的数量如何。多任务处理使用时间切片来工作:内核和每个正在运行的进程或线程都花费一些时间运行,然后系统切换到下一个可运行的线程。切换发生得非常频繁,这给人一种一切都在并行运行的印象,即使事实并非如此。
所有这一切的发生都无需对 API 等进行任何更改。多核系统需要能够运行比其物理支持更多的线程,单核情况只是其中的一个实例。
将CPU描述为单线程是指同时多线程(SMT,即英特尔世界中的超线程),而不是 CPU 运行多个线程(或进程或任务)的能力。向 CPU 添加 SMT 功能并不会添加任何指令来帮助运行线程,它只是允许在某些情况下更好地使用硬件。