认识cpu、核、进程与线程——备忘篇

本文深入解析CPU架构,包括物理CPU与核心的区别,逻辑核的概念及超线程技术的应用。探讨了进程与线程的关系,上下文切换的开销,以及在不同计算场景下如何合理设置线程数以提高CPU利用率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cpu与核心
物理CPU

  • 物理CPU是相对于虚拟CPU而言的概念,指实际存在的CPU处理器,安装在PC主板或服务器上。

物理核

  • CPU中包含的物理内核(核心)个数,比如多核CPU,单核CPU(古老的CPU)。这个多核或者单核已经集成在CPU内部了。

  • 在linux系统下面的/proc/cpuinfo文件的条目中:

    有多少个不同的physical id就有多少个物理CPU。

    cpu cores记录了对应的物理CPU(以该条目中的physical id标识)有多少个物理核。


[root@zyshanlinux-01 ~]# cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 60
model name  : Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz
stepping    : 3
microcode   : 0x22
cpu MHz     : 2393.631
cache size  : 6144 KB
physical id : 0
siblings    : 1
core id     : 0
cpu cores   : 1
物理核数量=cpu数(机子上装的cpu的数量)*每个cpu的核心数

逻辑核(逻辑CPU或虚拟核)

  • 所谓的4核8线程,4核指的是物理核心。用Intel的超线程技术(HT)将物理核虚拟而成的逻辑处理单元,现在大部分的主机的CPU都在使用HT技术,用一个物理核模拟两个虚拟核,即每个核两个线程,总数为8线程。

    在windows系统下面看下图,我们看到有8个cpu记录,其实我们使用的四核CPU只是使用HT技术虚拟出来8个逻辑CPU;在linux系统下面的/proc/cpuinfo文件的条目中siblings记录了对应的物理CPU(以该条目中的physical
    id标识)有多少个逻辑核。

  • 在操作系统看来是8个核,但是实际上是1个物理CPU中的4个物理内核。

  • 通过超线程技术可以实现单个物理核实现线程级别的并行计算,但是比不上性能两个物理核。

单核cpu和多核cpu

  • 都是一个cpu,不同的是每个cpu上的核心数。

    多核cpu是多个单核cpu的替代方案,多核cpu减小了体积,同时也减少了功耗。

    一个核心只能同时执行一个线程。

进程和线程
理解

  • 进程是操作系统进行资源(包括cpu、内存、磁盘IO等)分配的最小单位。

    线程是cpu调度和分配的基本单位。

    我们打开的聊天工具,浏览器都是一个进程。

    进程可能有多个子任务,比如聊天工具要接受消息,发送消息,这些子任务就是线程。

    资源分配给进程,线程共享进程资源。

对比
在这里插入图片描述
线程切换

  • cpu给线程分配时间片(也就是分配给线程的时间),执行完时间片后会切换都另一个线程。

    切换之前会保存线程的状态,下次时间片再给这个线程时才能知道当前状态。

    从保存线程A的状态再到切换到线程B时,重新加载线程B的状态的这个过程就叫上下文切换。

    而上下切换时会消耗大量的cpu时间。

线程开销

  • 上下文切换消耗

    线程创建和消亡的开销

    线程需要保存维持线程本地栈,会消耗内存

串行,并发与并行

  • 串行 多个任务,执行时一个执行完再执行另一个。

    比喻:吃完饭再看视频。

并发

  • 多个线程在单个核心运行,同一时间一个线程运行,系统不停切换线程,看起来像同时运行,实际上是线程不停切换。

    比喻: 一会跑去厨房吃饭,一会跑去客厅看视频。

并行

  • 每个线程分配给独立的核心,线程同时运行。

    比喻:一边吃饭一边看视频。

多核下线程数量选择
计算密集型

  • 程序主要为复杂的逻辑判断和复杂的运算。

    cpu的利用率高,不用开太多的线程,开太多线程反而会因为线程切换时切换上下文而浪费资源。

IO密集型

  • 程序主要为IO操作,比如磁盘IO(读取文件)和网络IO(网络请求)。

    因为IO操作会阻塞线程,cpu利用率不高,可以开多点线程,阻塞时可以切换到其他就绪线程,提高cpu利用率。

总结

  • 提高性能的一种方式:提高硬件水平,处理速度或核心数。

    另一种方式:根据实际场景,合理设置线程数,软件上提高cpu利用率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值