多核CPU、多CPU与多进程、多线程关系

news/2024/11/16 16:49:46/

文章目录

      • 1 cpu架构和工作原理
      • 2 多核cpu和多cpu架构
      • 3 进程和线程
      • 4 多核、多CPU与多线程、多进程的对应关系
      • 5 总结

1 cpu架构和工作原理

计算机有5大基本组成部分,运算器,控制器,存储器,输入和输出。运算器和控制器封装到一起,加上寄存器组和cpu内部总线构成中央处理器(CPU)。cpu的根本任务,就是执行指令,对计算机来说,都是0,1组成的序列,cpu从逻辑上可以划分为3个模块:控制单元、运算单元和存储单元。这三个部分由cpu总线连接起来。
在这里插入图片描述

CPU的运行原理就是:控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。对于执行指令过程中所需要用到的数据,会将数据地址也送到地址总线,然后CPU把数据读到CPU的内部存储单元(就是内部寄存器)暂存起来,最后命令运算单元对数据进行处理加工。周而复始,一直这样执行下去。

2 多核cpu和多cpu架构

多个物理CPU,CPU通过总线进行通信,效率比较低。
在这里插入图片描述
多核CPU,不同的核通过L2 cache进行通信,存储和外设通过总线与CPU通信
在这里插入图片描述

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

在这里插入图片描述

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

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

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

3 进程和线程

进程是资源分配的最小单位,一个程序有至少一个进程。线程是程序执行的最小单位。一个进程有至少一个线程。
进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
进程和线程在多核cpu,多cpu中的运行关系

4 多核、多CPU与多线程、多进程的对应关系

多cpu的运行,对应进程的运行状态;多核cpu的运行,对应线程的运行状态。

操作系统会拆分CPU为一段段时间的运行片,轮流分配给不同的程序。对于多cpu,多个进程可以并行在多个cpu中计算,当然也会存在进程切换;对于单cpu,多个进程在这个单cpu中是并发运行,根据时间片读取上下文+执行程序+保存上下文。同一个进程同一时间段只能在一个cpu中运行,如果进程数小于cpu数,那么未使用的cpu将会空闲。

进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
对于多核cpu,进程中的多线程并行执行,执行过程中存在线程切换,线程切换开销较小。对于单核cpu,多线程在单cpu中并发执行,根据时间片切换线程。同一个线程同一时间段只能在一个cpu内核中运行,如果线程数小于cpu内核数,那么将有多余的内核空闲。

5 总结

  1. 单CPU中进程只能是并发,多CPU计算机中进程可以并行。

  2. 单CPU单核中线程只能并发,单CPU多核中线程可以并行。

  3. 无论是并发还是并行,使用者来看,看到的是多进程,多线程。

本文转载,原blog点击此处


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

相关文章

多核与多个CPU啥区别

处理器如今已经成为影响人们购买IT产品的重要因素,无论是PC、手机还是服务器市场,处理器的型号直接影响到产品的出售情况。对于手机和PC等消费产品来说,用户可以从CPU频率、核心数等要素分辨出处理器性能的优劣。但是对于多核心的服务器产品来…

vue 3 第三十四章:nextTick

nextTick是Vue3中的一个非常有用的函数&#xff0c;它可以在下一次DOM更新循环结束后执行回调函数。这个函数可以用来解决一些异步更新视图的问题&#xff0c;例如在修改数据后立即获取更新后的DOM节点。以下是一个简单的示例&#xff1a; <template><div><p&g…

设备互联(三)多屏协同简析

想对设备互联有深入了解&#xff0c;最简单直接的还是拿业内最好的精品进行分析。 如下是Pad跟手机的p2p组网的日志&#xff0c;平板作为GO,手机是GC&#xff0c;频率是5G频段&#xff0c;因为5G信号频宽较宽&#xff0c;无线环境比较干净&#xff0c;干扰少&#xff0c;网速稳…

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

花了很多时间来整理这方面的相关内容&#xff0c;参考博客&#xff1a;多CPU&#xff0c;多核&#xff0c;多进程&#xff0c;多线程 程序和进程 程序&#xff1a; 为完成特定任务&#xff0c;用某种语言编写的一组指令集合&#xff0c;即一段静态的代码进程&#xff1a; 是程…

多进程、多线程、多核CPU——(I)

前言 在介绍多线程时&#xff0c;首先分析进程、以及多道程序设计模型。进程是操作系统中最重要的抽象概念之一&#xff0c;使得在即使只有一个CPU的机器上&#xff0c;也支持&#xff08;伪&#xff09;并发&#xff0c;即将一个单独的CPU变成多个虚拟的CPU。 多道程序设计 …

Android 多屏显示

背景: 车载操作系统&#xff0c;现在的折叠屏手机&#xff0c; 已经售货机等&#xff0c;都会需要有多屏异显的功能 具体代码实现 添加显示到第二屏需要的代码 package com.mine.myapplication;import android.app.Presentation; import android.content.Context; import a…

浅谈多核CPU、多线程与并行计算

0.前言 最近发觉自己博客转帖的太多&#xff0c;于是决定自己写一个原创的。笔者用过MPI和C#线程池&#xff0c;参加过比赛&#xff0c;有所感受&#xff0c;将近一年来&#xff0c;对多线程编程兴趣一直不减&#xff0c;一直有所关注&#xff0c;决定写篇文章&#xff0c;算是…

多核cpu与多线程理解

计算机cpu与多线程 进程和线程: 进程包含线程,一个进程中包含多个线程. 线程是cpu调度和分配的基本单位,进程是操作系统进行资源分配(cpu,内存,硬盘io等)的最小单位. 单核cpu: 实现多进程依靠于操作系统的进程调度算法,比如时间片轮转算法,比如有3个正在运行的程序(即三个进程…