文章目录

  • 区分 多CPU && 多核CPU
  • CPU缓存
  • 并行 && 并发
  • 多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发 之间的关系
  • Linux下查看CPU相关信息

希望开此篇能帮到你。

区分 多CPU && 多核CPU

最早意识到这两个概念可能不一样是在什么时候呢,不是在买电脑的时候哈,是在安装虚拟机的时候。

安装虚拟机的时候,有一步是要我们选择虚拟机的CPU数量和核数的,我当时其实就有点懵,这俩有区别吗?2CPU各2核和1CPU4核有什么不一样吗?这还要选啊?

但是很快就打消了这个疑虑,没有太在意了。现在想想,错过了认知的机会啊。
一个CPU呢,可以由很多的核,但是,它依旧是一个CPU,不会因为它开了8个核就变成了八个CPU。

这里的CPU,是物理CPU,后面就以物理CPU来命名。此外,还有逻辑CPU,逻辑CPU数怎么算呢?
物理CPU数 * 每个CPU核数,如果支持超线程的话,再乘个2。

这些概念先记一下,后面要用。

多个物理CPU,CPU通过总线进行通信,效率比较低。

多核CPU,不同的核通过L2 cache进行通信,存储和外设通过总线与CPU通信。


CPU缓存

CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上。

随着多核CPU的发展,CPU缓存通常分成了三个级别:L1,L2,L3。级别越小越接近CPU,所以速度也更快,同时也代表着容量越小。L1 是最接近CPU的, 它容量最小,速度最快,每个核上都有一个 L1 缓存,L1 缓存每个核上其实有两个 L1 缓存, 一个用于存数据的 L1d Cache,一个用于存指令的 L1i Cache。L2 缓存 更大一些,速度要慢一些, 一般情况下每个核上都有一个独立的L2 缓存; L3 缓存是三级缓存中最大的一级,同时也是最慢的一级, 在同一个CPU插槽之间的核共享一个 L3 缓存。

读取数据过程。就像数据库缓存一样,首先在最快的缓存中找数据,如果缓存没有命中则往下一级找, 直到三级缓存都找不到时,向内存要数据。一次次地未命中,代表取数据消耗的时间越长。

计算过程。程序以及数据被加载到主内存;指令和数据被加载到CPU的高速缓;CPU执行指令,把结果写到高速缓存;高速缓存中的数据写回主内存。


并行 && 并发

并行,你按下时间静止,你会看到有好多个 进程/线程 都活着。
并发,你按下时间静止,你会看到只有一个 进程/线程 活着,其他都在排队。


多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发 之间的关系

1、进程的运行不仅仅需要CPU,还需要很多其他资源,如内存啊,显卡啊,GPS啊,磁盘啊等等,统称为程序的执行环境,也就是程序上下文。

2、线程是CPU调度和分配的基本单位,一定要和 进程是操作系统进行资源分配(包括cpu、内存、磁盘IO等)的最小单位 区别清楚。有句话说CPU只能看到线程,可以这么理解,假设我是CPU,我闭着眼,操作系统调度器将一个进程分配给我之后,我拿到进程睁开眼,我看到的是什么?我看到的是进程中的很多线程,那么我现在能调度和分配的是什么?进程?不行,因为我看不到其他进程,何来调度分配,只能调度我看到的那些线程,如果我是4核的话,把线程ABCD分配到核心1234,其他的线程依然要等待分配,至于等待多久,如何分配,暂不在本文讨论范围。

3、多核心技术是将多个一样的CPU放置于一个封装内(或直接将两个CPU做成一个芯片),而英特尔的HT技术(超线程技术)是在CPU内部仅复制必要的资源、让一个核模拟成两个线程;也就是一个实体核心,两个逻辑线程,在一单位时间内处理两个线程的工作,模拟实体双核心、双线程运作。

4、一个进程最多在一个物理CPU上运行(能拿到资源不错了),如果这个CPU的空闲的核大于等于进程的线程数,就安排了,如果不够,那就先安排一部分线程,其余的等着。


多核CPU,可以并行执行多进程、多线程。多线程应该不用我解释了,多进程参考nginx架构。
多个CPU,可以并行执行多进程,自然可以并行多线程。怎么并行多进程呢?要么咱多手动多开几个进程,要么fork出子进程。


Linux下查看CPU相关信息

CPU的信息主要都在/proc/cupinfo中:

# 查看物理CPU个数
cat /proc/cpuinfo|grep "physical id"|sort -u|wc -l# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo|grep "cpu cores"|uniq# 查看逻辑CPU的个数
cat /proc/cpuinfo|grep "processor"|wc -l# 查看CPU的名称型号
cat /proc/cpuinfo|grep "name"|cut -f2 -d:|uniq

Linux查看某个进程运行在哪个逻辑CPU上

ps -eo pid,args,psr
#参数的含义:
pid  - 进程ID
args - 该进程执行时传入的命令行参数
psr  - 分配给进程的逻辑CPU例子:
[~]# ps -eo pid,args,psr | grep nginx
9073 nginx: master process /usr/   1
9074 nginx: worker process         0
9075 nginx: worker process         1
9076 nginx: worker process         2
9077 nginx: worker process         3
13857 grep nginx                   3

多CPU 多核CPU | 多进程 多线程 | 并行 并发相关推荐

  1. 单核cpu多核cpu如何执行多线程

    花了很多时间来整理这方面的相关内容,参考博客:多CPU,多核,多进程,多线程 程序和进程 程序: 为完成特定任务,用某种语言编写的一组指令集合,即一段静态的代码 进程: 是程序的一次执行过程,或是正在 ...

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

    文章目录 1. 逻辑CPU 2. 线程数和逻辑CPU个数,内核个数 3.线程/进程/多核CPU 1. 逻辑CPU 先查看电脑cpu信息,可以看到,是8个逻辑cpu 2. 线程数和逻辑CPU个数,内核个 ...

  3. java 多进程多线程_Java并发编程原理与实战三:多线程与多进程的联系以及上下文切换所导致资源浪费问题...

    一.进程 考虑一个场景:浏览器,网易云音乐以及notepad++ 三个软件只能顺序执行是怎样一种场景呢?另外,假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作),而 ...

  4. 线程VS进程,多线程VS多进程,并行VS并发,单核cpuVS多核cpu

    目录 概论 进程VS线程 并发VS并行 多线程VS多进程 总结 概论 程序是为完成特定任务.用某种语言编写的组指令的集合.即指一段静态的代码,静态对象. 进程是程序的次执行过程, 或是正在运行的 一个 ...

  5. 多CPU/多核/多进程/多线程/并发/并行之间的关系

    多CPU,多核,多进程,多线程 当面临这些问题的时候,有两个关键词无法绕开,那就是并行和并发. 首先,要先了解几个概念: 1.进程是程序的一次执行. 2.进程是资源分配的基本单位(调度单位). 3.一 ...

  6. 多CPU,多核,多进程,多线程以及进程和线程的简单理解以及区别

    当面临这些问题的时候,有两个关键词无法绕开,那就是并行和并发. 首先,要先了解几个概念: 1.进程是程序的一次执行. 2.进程是资源分配的基本单位. 3.一个进程可以包括多个线程. 4.在单CPU计算 ...

  7. 多核cpu与多线程理解

    计算机cpu与多线程 进程和线程: 进程包含线程,一个进程中包含多个线程. 线程是cpu调度和分配的基本单位,进程是操作系统进行资源分配(cpu,内存,硬盘io等)的最小单位. 单核cpu: 实现多进 ...

  8. 单核CPU与多核CPU工作原理

    单核CPU与多核CPU工作原理 今天要介绍一下单核CPU和单核(超时间轴)CPU以及多核CPU的工作原理 一.单核CPU 起源: CPU的起源是1971年英特尔公司推出,由此正式宣告计算机的诞生,可以 ...

  9. Django 多进程多线程的一些个人理解

    一.Django 开发环境与生产环境 开发/调试 python manage.py runserver 0.0.0.0:8080 生产环境 Nginx + uWSGI + supervisor 生产环 ...

最新文章

  1. 废旧光盘手工小制作_[创意手工]废旧光碟手工制作变废为宝
  2. SpringBoot 2.1.3配置log4j2日志框架完整代码示例
  3. 2019-06-12 Java学习日记之JDBC
  4. 数据库中有痣但是有时取不到_农村这种长得像“泥鳅”的鱼,以前没人吃,现在可能有钱都吃不到...
  5. 探索性数据分析EDA及数据分析图表的选择
  6. 第41课 蜗牛与葡萄树 《小学生C++趣味编程》
  7. 查不到元素_浓重中国元素游戏的本地化地狱
  8. 〖Linux〗VirtualBox修改虚拟电脑硬盘(vdi)空间大小
  9. 反射认识_03_改变成员变量Fields
  10. python 上传文件并保存
  11. linux下sqlmap安装教程,Linux安装sqlmap
  12. ssm在线视频教育网站
  13. Labview模拟温度检测报警系统
  14. 4阶显式Runge-Kutta法解常微分方程的通用程序--python实现
  15. 软考高级软件架构风格定义以及分类
  16. ⼩程序(微信)【面试】
  17. linux三剑客及常见命令,Linux三剑客及使用介绍
  18. hpuoj 1715: 感恩节KK专场——2015年的第一场雪 (暴力)
  19. python爬取豆瓣评论,并制作成词云
  20. WinForm显示3D图(Sharpgl)

热门文章

  1. 走过30年岁月的WPS,它的复兴之路该怎么走
  2. 拼图游戏(搜索算法)
  3. 学食品安全考计算机,食品卫生学考点总结.docx
  4. 无线蓝牙耳机哪个价位性价比最高?500以内最好的蓝牙耳机推荐
  5. 用 Neo4j 快速构建明星关系图谱,你一定感兴趣
  6. 浪涌、群脉冲、ESD等级标准
  7. 本地生活服务,快手直播电商外的又一大金矿!
  8. 小说阅读网html+css+JavaScript
  9. 谈谈我的学习工作经历,自学linux去中兴上班
  10. OpenCV4.3 Java 编程入门:离散傅里叶变换