小小科普----多核CPU 是否能同时执行多个进程?

1,844 阅读3分钟

先说结论:多核CPU可以同时执行多个进程。
扩展了说,单核CPU就可以“同时”执行多个进程。
先普及两个概念,并发和并行:

**并发:**当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。

**并行:**当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。区别:并发和并行是即相似又有区别的两个概念,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行。

所以微观上说,多核CPU可以同时执行多个进程,进程数与CPU核数相当。但宏观上说,由于CPU会分时间片执行多个进程,所以实际执行进程个数会远多于CPU核数。

再说cpu

内核:6
就是它的核心,即最少可以并行处理的线程数
逻辑处理器:12
就是一个核心可以处理两个线程。但是两个线程在一个核心并行是有条件的,假设一个CPU核心可以处理加法和乘法,当没有人为的把它的核心分为两个逻辑处理器时,加法和乘法只能执行一个,通过超线程技术,把算加法和乘法的CPU资源独立出来,此时一个核心就可以并行处理加法和乘法。当有两个线程都是算加法的,此时的一个核心就只能处理一个加法,就算你有两个逻辑处理器,因为另外一个逻辑处理器是算乘法的,所以,此时的两个加法线程只能并发
总之,一个核心两个线程(逻辑处理器)并不意味着两个线程在同一个CPU核心中一直都可以并行执行,只是恰好碰到两个线程当前要执行的指令不使用相同的CPU资源时才可以真正地并行执行。