内核/逻辑处理器/线程/多线程/多CPU/多核CPU

news/2024/11/16 21:48:41/

文章目录

  • 1. 逻辑CPU
  • 2. 线程数和逻辑CPU个数,内核个数
  • 3.线程/进程/多核CPU
    • 3.1 线程
    • 3.2 多核cpu
    • 3.3 进程和线程

1. 逻辑CPU

先查看电脑cpu信息,可以看到,是8个逻辑cpu
在这里插入图片描述

2. 线程数和逻辑CPU个数,内核个数

在任务管理器中,看到其实是4个内核,但是逻辑处理器是8个,有多少个逻辑处理器,就说明你的cpu可以同时处理几个线程

线程数=逻辑处理器个数
在这里插入图片描述

  • 一个物理CPU可以有1个或者多个物理内核
  • 一个物理内核可以作为1个或者2个逻辑CPU

操作系统可以使用逻辑CPU来模拟真实CPU。
在没有多核处理器的时候,一个物理CPU只能有一个物理内核,
有了多核技术,一个物理CPU可以有多个物理内核,可以把一个CPU当作多个CPU使用,即逻辑CPU。
没有开启超线程时,逻辑CPU的个数就是总的CPU物理内核数。
开启超线程后,逻辑CPU的个数就是总的CPU物理内核数的两倍。

实际能看到的2个物理CPU:
在这里插入图片描述
实现16个逻辑CPU的原理图:

在这里插入图片描述

参考:

  • 物理CPU,物理CPU内核,逻辑CPU概念详解
  • 或者简书:https://www.jianshu.com/p/6a53819fa89b

3.线程/进程/多核CPU

3.1 线程

from multiprocessing import cpu_count
print(cpu_count())> 8

在python中,使用上述代码可以获取当前系统的逻辑cpu个数,也就是支持并发的线程个数。


3.2 多核cpu

在这里插入图片描述

  • 左图:多个物理CPU,CPU通过总线进行通信,效率比较低。
  • 右图:多核CPU,不同的核通过L2 cache进行通信,存储和外设通过总线与CPU通信

感谢评论区同学的提醒,这里更新一下CPU三级cache的内容,以下内容摘录自:小林coding-图解系统
在这里插入图片描述

  • CPU 的高速缓存,通常可以分为 L1、L2、L3 这样的三层高速缓存,也称为一级缓存、二级缓存、三级缓存。
  • L1缓存是每个CPU核一个,每个 CPU 核心都有一块属于自己的 L1 高速缓存,指令和数据在 L1 是分开存放的,所以 L1 高速缓存通常分成指令缓存和数据缓存。
  • L2 高速缓存同样每个 CPU 核心都有
  • L3 高速缓存通常是多个 CPU 核心共用的

CPU多个核之间L1和L2 cache是独享的,L3 cache是共享的。


3.3 进程和线程

  • 进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,
  • 线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
  • 联系:线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程;
  • 根本区别进程是操作系统资源分配的基本单位,而线程任务调度和执行的基本单位

所以对于程序员来说,其实更多时候是和线程打交道,一个程序是一整个进程,程序中可以有多个线程,用来并行进行不同的事情。

参考:

  • ✅关于多 CPU、多核和多线程
  • cpu的个数、核心数、线程数
  • 进程,线程与多核,多cpu之间的关系
  • cpu的核数和进程_CPU与核心及进程和线程认识
  • How many cores does my computer have?
  • What does it mean when we say “4 cores 8 threads”?
  • Is there a Mac OS equivalent to the Linux “lscpu”?

    macOS下查看cpu信息,类似linux的lscpu的指令是:
    sysctl -a|grep cpu|grep hw


http://www.ppmy.cn/news/244141.html

相关文章

解决数据可视化大屏拼接处理器4大需求的方案及产品分析

图像/视频拼接处理器是大屏显示系统不可或缺的部分,负责将一个完整的信号画面划分为数个等分部分,分配给同样数量的画面显示单元,通过多个普通画面显示单元组成大规模的信号图像显示屏。对于现代控制室来说,大屏拼接显示系统已经与…

Arrays源码

介绍 java.util中的工具类,提供数组相关的常用操作,排序、比较、填充、二分查找等功能 该类还包含一个静态内部类ArrayList,其中add、remove、clear方法都是没有实现的。 常量&变量 /*** The minimum array length below which a para…

常见的数据泄露隐患有哪些,该如何防范?

随着我国互联网的发展和普及,工作生活中数据窃取、数据泄露事件时有发生。所以,我们需要了解数据泄露有哪些安全隐患及防范措施。 社交软件泄密严重。 我国互联网社交应用软件的发展及普及,成为了境外黑客间谍的温床,他们通过开…

vue.set this.$set的作用

Vue.set 的作用就是在构造器外部操作构造器内部的数据、属性或者方法 当一个对象在vue中是响应式的,如果仅仅使用普通的方式向这个对象添加或修改这个属性的值,是不会触发视图更新的 但是使用 vue.set 或者 this.$set 的方式可以使得新添加的属性也是响…

【存储方式】

存储方式 1. 顺序存储2. 链式存储3. 哈希存储4. 树形存储5. 关系式存储6. 分布式存储7. 对象存储结论 不同的存储方式在不同的场景下拥有各自的优势和适用性。本文将分别简单介绍七种不同的存储方式,包括顺序存储、链式存储、哈希存储、树形存储、关系式存储、分布式…

详解信号逻辑电平标准: CMOS、TTL、LVCMOS、LVTTL、ECL、PECL、LVPECL、LVDS、CML

Refer: (285条消息) FPGA几种电平:TTL,CMOS以及LVTTL,LVCMOS_Love coldplay的博客-CSDN博客 常用的电平标准有TTL、CMOS、LVTTL、LVCMOS、ECL、PECL、LVPECL、RS232、RS485等,还有一些速度比较高的LVDS、GTL、PGTL、CML、HSTL、SSTL等。 供…

使用pagehelper 实现 mybatis 分页查询

通过 pagehelper实现 mybatis 分页查询 1. 添加依赖:2. 配置PageHelper:3.在代码中使用PageHelper:4. 获取更多分页信息: 1. 添加依赖: 首先,你需要在项目的pom.xml文件中添加PageHelper的依赖。具体如下&…

Java教程【01.04】Java中的static和final关键字

Java中的static和final关键字 在Java中,static和final是两个常用的关键字,用于定义类、方法和变量的特性。在本教程中,我们将学习如何使用static和final关键字以及它们的用途。 static关键字 static关键字用于创建静态成员,这意味着它们属于类本身而不是类的实例。通过使…