Multithreading 多个线程如何在处理器内核上执行

Multithreading 多个线程如何在处理器内核上执行,multithreading,cpu,multicore,Multithreading,Cpu,Multicore,我想知道一个线程数更多的多线程程序是如何在处理器内核上执行的。例如,我的程序有12个线程,我在intel core-i5机器上运行它。它有四个CPU。每个核心运行3个线程吗?我很困惑,因为我看到有30个线程的程序在4核机器上运行 感谢核心负责执行线程周期。内核越多,可以同时运行的线程就越多。每个内核一次只能执行一条指令,但它的速度如此之快,似乎您同时运行多个线程。 英特尔处理器支持使单个内核支持多线程,因为操作系统看到每个物理内核的逻辑内核数量是原来的两倍。例如,仅为双核的核心i3实际上可以为每

我想知道一个线程数更多的多线程程序是如何在处理器内核上执行的。例如,我的程序有12个线程,我在intel core-i5机器上运行它。它有四个CPU。每个核心运行3个线程吗?我很困惑,因为我看到有30个线程的程序在4核机器上运行


感谢

核心负责执行线程周期。内核越多,可以同时运行的线程就越多。每个内核一次只能执行一条指令,但它的速度如此之快,似乎您同时运行多个线程。
英特尔处理器
支持使单个内核支持多线程,因为操作系统看到每个物理内核的逻辑内核数量是原来的两倍。例如,仅为双核的核心i3实际上可以为每个核心提供两个线程,即总共有四个线程可以同时运行。然而,即使核心i5处理器是四核处理器,由于它们不支持超线程(i5-661除外),它们可以同时服务的线程数量与核心i3处理器的线程数量几乎相等。

每个核心都可以同时执行一个线程。因此,如果有30个线程和4个内核,26个线程将等待上下文切换以执行。例如,线程1-4运行200ms,然后5-8运行200ms,依此类推,处理器核心能够一次执行一个线程。在四核中,4个线程同时执行。并非所有用户空间线程都是同时执行的,内核线程也会运行以调度下一个线程或执行其他一些内核任务

与多进程运行的方式相同:分时。在大多数非嵌入式设备上,内核设置一个中断,在一定时间后触发,然后加载一个线程并在用户空间中运行,然后当中断触发时,中断处理程序返回内核空间,内核有时会切换到另一个线程,再次设置中断。冲洗并重复。我有一个4/8芯的i7。它正在管理1215个线程。没问题,因为几乎没有一个在运行。你是说它有4个内核,对吗?“每个内核一次只能执行一条指令”:英特尔的核心微体系结构是。(就连英特尔的Atom微体系结构和ARM的Cortex-A8都是超标量的。)@Paul:这是对内核的一种普遍说法。好吧!我明白了。那么基本上,操作系统调度程序或内核就开始发挥作用了?@user225008是的indeed@Steve你觉得有什么书可以深入研究这个问题吗?@NandoSousa只是谷歌操作系统内核。如果你想全面了解操作系统的工作原理,你需要花费相当多的时间。他指的是4核,对,他错把4个CPU写成了QUE,你能纠正吗?