CPU
物理 CPU 个数 (physical cpu)
指主板上实际插入的 CPU 个数,一般而言,家用主板只能插入一块 CPU 。
CPU 核心数 (CPU Core)
CPU 核心数也是指物理层面上的。最早期的时候,一个 CPU 只有一个核心。但是后来,为了提高性能,CPU 厂商开始在单个物理 CPU 上增加核心(实实在在的硬件存在),也就出现了双核心 CPU(dual-core cpu)以及多核心 CPU(multiple cores)。
CPU 线程数(CPU Thread )
在多核 CPU 的基础上,CPU 厂家为了提高 CPU 的利用率,提出了同时多线程技术(AMD: simultaneous multithreading)和超线程技术(INTEL: hyper–threading/HT)。两者本质上是一样的,只是不同厂家的命名方式不同而已。它们的作用就是把一个 CPU 核心分成两个逻辑 CPU,这样一个 CPU 核心可以同时处理两个线程。
总结
- 逻辑CPU = CPU线程数 = 物理CPU个数 X 每个CPU核心数 X 超线程数
- 每个逻辑 CPU 可以同时处理一个线程
以笔者的电脑为例
CPU 是 AMD 3600 6-CORE 12 Thread
所以拥有12个逻辑 CPU
操作系统中的进程和线程
进程 (Process)
对于操作系统来说,一个任务就是一个进程(Process)。
用户下达运行程序的命令后,就会产生进程。
进程需要一些资源才能完成工作,如 CPU 使用时间、存储器、文件以及 I/O 设备。
进程之间可以通过 IPC,InterProcess Communication 进行通信
线程 (Thread)
线程是操作系统能够进行运算调度的最小单位。大部分情况下,它被包含在进程之中,是进程中的实际运作单位。
一个进程可以有很多线程,每条线程并行执行不同的任务。
同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。
但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。