目录

  • cpu架构和工作原理
  • 多核cpu和多cpu
    • 架构
    • cpu的缓存
  • 进程和线程
  • 进程和线程在多核cpu,多cpu中的运行关系
  • 总结

cpu架构和工作原理

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

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

多核cpu和多cpu

架构

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

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

cpu的缓存

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

随着多核CPU的发展,CPU缓存通常分成了三个级别:L1L2L3。级别越小越接近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执行指令,把结果写到高速缓存;高速缓存中的数据写回主内存

进程和线程

进程是程序的一次执行,一个程序有至少一个进程,是资源分配的最小单位,资源分配包括cpu、内存、磁盘IO等。线程是程序执行的最小单位,一个进程有至少一个线程。

进程和线程在多核cpu,多cpu中的运行关系

多cpu的运行,是针对进程的运行状态来说的;多核cpu的运行,是针对线程的运行状态来说的。

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

对于多核cpu,进程中的多线程并行执行,执行过程中存在线程切换,线程切换开销较小。对于单核cpu,多线程在单cpu中并发执行,根据时间片切换线程。同一个线程同一时间段只能在一个cpu内核中运行,如果线程数小于cpu内核数,那么将有多余的内核空闲。

总结

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

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

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

转载于:https://www.cnblogs.com/valjeanshaw/p/11469514.html

进程,线程与多核,多cpu之间的关系相关推荐

  1. 为什么要把进程/线程绑定到特定cpu核上运行?(cpu core id coreIdx)opdevsdk_sys_bindThreadCoreId()

    看海康hikflow_demo代码,在线程处理函数里调用了绑定函数,把这个线程绑定到某个cpu核上,不知为何要这么做? 原因 答1 现在大家使用的基本上都是多核cpu,一般是4核的.平时应用程序在运行 ...

  2. CPU,核心,线程,超线程技术以及它们之间的关系

    CPU,核心,线程,超线程技术以及它们之间的关系 总结: 1.CPU就是处理器.(物理核心) 2.我们任务管理器下看到的CPU总数,是你的CPU物理核心数用超线程技术虚拟出来的核心数. 3.线程数就是 ...

  3. 计算机主机是cpu与内存,内存条和CPU之间的关系是什么

    您想知道内存和CPU之间的关系是什么吗?这是来自Qiutian.ZqNF.Com的有关内存和cpu之间关系的内容.欢迎阅读! 内存和CPU之间的关系是什么? cpu负责计算和处理,而内存则用于数据交换 ...

  4. linux指定cpu运行程序,进程/线程绑定到特定CPU核的linux实现(有代码有实例)

    前言 现在计算机上的CPU大多都是多核的,有4核甚至是8核的.但是一个计算机启动之后其进程数是远远多于CPU核数的,因为操作系统会给自动调度这些进程在CPU核上轮流运行.但是对于应用程序或者进程,其性 ...

  5. 进程线程(五) groups和CPU资源分群分配

    基于cpu cgroups进行CPU资源分配 Linux的sched_autogroup(全新内容) 基于cpuset cgroups进行进程CPU绑定(全新内容) Docker和cgroups Sy ...

  6. 计算机专业需要单核还是多核,单核和多核计算机CPU之间的区别

    双核2113的优势不是频率,而是同时处理5261个以上的事物. 4102单核只能同时做一件事,例如,您同时在1653 BT,前台看电影的同时下载文件和QQ的同时下载. 如此多的程序需要CPU同时响应操 ...

  7. 单片机、ARM、DSP与CPU之间的关系大揭秘

    你知道单片机.ARM.DSP都是CPU吗,它们之间又有什么不同,小编进行了整理和编辑. CPU:中央处理器 CPU 包括运算逻辑部件.寄存器部件和控制部件等,其本质就是一个集成电路,实现的功能就是从一 ...

  8. 5000并发_彻底理解 jmeter 的线程数与并发数之间的关系

    概述 在jmeter中,只要提到并发,99%的同学立马想到线程组.需要多少并发就启动多少线程组,这已经成了大部分人的共识.这种理解方式很明显是把并发数和线程数的概念混淆了.线程组中不光有线程数,也有循 ...

  9. 多CPU ,多核和进程以及多线程之间的关系

    今天开始,这个专题主要讲解 java 并发编程系列,从操作系统的进程.CPU.线程等底层开始, 到java 并发工具类,线程.线程池,并发容器.CAS.AQS等原理.源码和使用均做深入的解析.今天讲 ...

最新文章

  1. Oracle中的数据字典技术及常用数据字典总结
  2. 你的sql查询为什么这么慢?
  3. 计算机科学与技术专业导向ppt,计算机科学与技术专业导向讲座 第讲.ppt
  4. 关于Qt的三种协议以及是否收费
  5. 剑指offer之二叉搜索树的第K个节点
  6. 不同文件类型输出及ContentType表
  7. 00001-整数倒置-Java-leetcode-要考虑到溢出问题
  8. java学习笔记 --- 多线程(多线程的控制)
  9. Python+tkinter模拟京东旋转图片式验证码输入
  10. 2022年 预训练的下一步是什么?
  11. 计算从1970年到现在累计的秒数
  12. vim设置默认utf-8编码
  13. emoji.php,简单的处理emoji的PHP类库
  14. 【前端小技能】Vue集成百度离线地图
  15. 以后在校期间的规划计算机专业的,计算机专业职业生涯规划方案书样本.doc
  16. Git amend 修改上次提交
  17. 计算机论文 指导老师评语,毕业设计指导老师评语(精选5篇)
  18. 教师计算机考核有啥用,教师计算机使用管理制度和考核方案
  19. CentOS7下宽带连接
  20. 解决VScode中文乱码问题

热门文章

  1. 每日一言:站在高山之巅的人
  2. Visual C++游戏编程基础之多背景循环动画
  3. AIIA-2021版《电信行业人工智能应用白皮书》
  4. 安卓蓝牙打印机无法打印问题
  5. 隧道放样方法+超欠挖计算方法+程序
  6. 【雷达仿真 | FMCW TDMA-MIMO毫米波雷达信号处理仿真(可修改为DDMA-MIMO)】
  7. DTC品牌如何冷启动?
  8. 什么是云服务器?如何选择?
  9. GTD时间管理:高效管理你的时间,GTD软件一款就够
  10. 监控平台(J2EE)声音告警程序功能设计与实现