认识Cpu、核和线程及其他相关概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014473112/article/details/83476619

1、cpu、核和线程的关系

cpu个数: 是指物理上,也就是硬件上的核心数
核: 逻辑上的、模拟出来的核心数
线程数:同一时刻设备并行执行的程序个数,线程数=cpu个数 * 核数

2、单核cpu和多核cpu

单核也就是说一个物理上的cpu可以模拟出来的核心数是1个,多核自然就是多个,注意的是单核或者多核和cpu个数没有关系,存在多个cpu单核型,也存在一个cpu多核型。多核cpu减小了体积,同时也减小了耗能。

3、进程和线程

(1)进程是操作系统进行资源(包括cpu、内存、磁盘IO等)分配的最小单位(资源分配)
(2)线程是cpu调度和分配的基本单位(cpu调度)
(3)进程是拥有资源的基本单位,线程占有的资源很少,基本上就是程序计数器、栈和一些寄存器
为什么要有线程?
进程的切换需要重新分配资源,开销是很大的,线程切换相对来说比较简单;另外进程里面的任务可以按照时间片细分给线程,在核数超过1个的设备上,一次性可以执行多个线程,效率会显著提高

4、串行、并发、并行

(1)串行:多个任务,执行时一个执行完在执行另一个,类比:吃完饭再看球赛
(2)并发:多个线程在一个核心运行,同一时间其实只有一个线程运行,但是系统不停切换,看起来像是多个同时运行。线程的执行过程就是这样的,一个线程被按照时间片分为多个阶段执行,当时间片执行完时就会切换到另外一个线程。类比:一会吃饭,一会又跑去看球
(3)并行:不同核心执行的线程,线程在真正意义上同时运行。

5、适用场景

(1)计算机密集型
程序主要为复杂的逻辑判断和复杂的运算,cpu的利用率高,不建议开太多的线程,因为这样会导致频繁的线程切换,消耗资源、浪费时间
(2)IO密集型
程序主要为IO操作,因为IO操作会阻塞线程,cpu利用率不高,此时建议可以给多一点线程
总结:如果要提高性能,一是在硬件层面提高处理速度或者核心数;二是根据场景,合理设置现场数量

猜你喜欢

转载自blog.csdn.net/u014473112/article/details/83476619