关于CPU的核心和线程与进程的不同

cpu核心

最近的CPU,一个CPU插座有多个核心(实际进行处理的零部件)。
例如,在名为Intel Xeon E5-2643V4的CPU中,核心数为6。
CPU核心是指实际进行命令的部件,在SMT登场前。
“CPU核心数=可以同时执行的指令数”。
正在运行的程序称为“进程”,进程具有一个或多个“线程”。
由于这个线程给CPU核心指令,所以CPU核心的数量=可以同时执行的线程的数量。
在这里插入图片描述

进程和线程之间的区别

进程是指正在运行的程序。
在一个进程中,分配一个内存空间(内存区域)。
如果进程请求操作系统(如果有空闲),内存空间会增加。

线程是在进程中顺序执行指令的部分,是使用CPU核心的单位。
如前所述,在SMT(同时多线程)出现之前,一个线程中的一个核心是基本的。
但是最近的CPU,SMT(Intel称为超线程)功能的模型越来越多,有了这个功能,你可以为一个核心分配多个线程(很多是两个线程),你可以这样做。

物理上你可以把一个核心,从操作系统上伪装成两个核心,从而提高核心的利用率。

因此,如果CPU支持2个线程的SMT,则“线程数量”是“核心数量”的一倍。

单线程和多线程

是否在一个进程中使用多个线程取决于应用程序的创建方式。
例如软件是单线程,假如我想提前软件的动作,即使装载了很多CPU的核心,也是没有意义的。
另一方面,在多线程的情况下,由于可以在一个进程中并行执行多个处理,所以性能趋于良好。

另外,OS管理进程间是否侵蚀内存区域,但在多线程中,由于多个线程共享分配给进程的1个内存区域,所以多线程应用程序不会在线程间相互侵蚀内存,编程的人需要意识到。

CPU的指令集架构

现在x86系是主流。
以前因为有32位OS,32位OS用x86,64位OS用x64或者x86_64区别,现在32位OS几乎没有了,不用特意写_64,也多指“x86=64位OS用”。
从很久以前开始,无论是32位操作系统还是64位操作系统,都配备了x86_64的CPU。
也就是说,体系结构是分开的,但是在一个CPU上可以使用这两种体系结构。
作为x86系列的实现,如果是Intel则有“Intel64”AMD的话则有“AMD64”命令集。
Windows和RedHat Enterprise Linux现在只支持x86系统。
(因为服务器的操作系统只有64bit版本,所以只使用x86_64架构)

猜你喜欢

转载自blog.csdn.net/qq_18191333/article/details/108868838
今日推荐