多核计算机中,同一用户程序的两类线程能否在不同核心并行运行?
同一用户程序的两个线程能否分别由用户和操作系统管理并运行在不同核心?
我们观察一台多核计算机,其中一个核心运行着一个线程,另一核心运行着另一个线程。请问是否存在这样的可能:这两个线程属于同一用户程序,其中一个由操作系统管理,另一个由用户自行管理?
你的观点是错误的,这种情况完全有可能出现。
具体原因如下:
- 现代操作系统支持混合线程模型:同一用户程序可以同时包含两种线程——内核级线程(由操作系统负责调度、分配CPU核心执行)和用户级线程(由程序自身的线程库调度,调度逻辑对操作系统透明)。
- 当用户级线程通过线程库绑定到某个内核级线程后,操作系统可以将该内核级线程调度到任意空闲核心;而程序中另一个直接由操作系统管理的内核级线程,也能被调度到另一核心并行执行。
- 多核CPU的每个核心都是独立的调度单元,操作系统对线程的核心分配是基于线程自身的调度属性,而非程序整体的绑定关系,因此同一程序的不同线程完全可以分布在不同核心运行。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

