CPU与线程

news/2025/1/30 4:03:25/

文章目录

  • (一)、计算机的组成
  • (二)、进程和线程
        • 1、线程的切换
        • 2、对于一个程序,设置多少个线程合适(线程池设置多少核心线程池)?
        • 3、工业实践,CPU三级缓存
        • 4、超线程
        • 5、缓存行(一般为64bytes,64*8bit)
        • 6、非线程安全

(一)、计算机的组成

  1. CPU:
    算术逻辑单元ALU(arithmetic and logic unit):实现多组算数运算和逻辑运算的组合逻辑电路
    寄存器Registers:存储二进制代码,由具有存储功能的触发器构成。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。
    寄存器PC(program counter):存储内存地址,该地址是下一条即将执行的指令的地址。
    缓存cache:存储时间片使用完但没执行完的线程的数据,例如:该线程未执行完的地址。
    在这里插入图片描述
    2、程序读入内存
    程序读入内存全是由0和1构成,从内存读入CPU计算,要通过总线
    当一个指令为0101,但是其可以表达数字5加法时,那么怎么区分该指令的正确操作。
    总线分为:控制线地址线数据线
    1. 地址线:CPU下一步需要执行的操作的地址
    2. 控制线:指令
    3. 数据线:数据

一个程序的执行:先把程序读入内存,找到起始地址(main),逐步读出指令和数据,通过CPU计算再写回内存。

(二)、进程和线程

进程:当一个程序进入内存的时候就可以称为进程,并为其分配资源:内存空间。进程进入内存,同时产生一个主线程
线程:是可执行的计算单元(任务),多个线程共享进程的内存空间。(共享空间,不共享计算)

1、线程的切换

当线程在cpu中的时间片已经用完,但该线程未执行完,那么保存线程上下文(线程的状态、线程结束执行的地址)。

2、对于一个程序,设置多少个线程合适(线程池设置多少核心线程池)?

注:Nt:线程数量,Nc:CPU数量,Uc:CPU利用率(0-1),W:线程等待时间,C:线程执行时间。

Nt = Nc * Uc * (1+W/C)

例如:一个单核CPU,线程等待时间50%,线程执行时间50%,CPU利用率100%,那么带入公式,该程序就设置为两个线程。

3、工业实践,CPU三级缓存

在这里插入图片描述

4、超线程

一个CPU有一个计算单元、多个寄存器
在这里插入图片描述

5、缓存行(一般为64bytes,64*8bit)

缓存行:一次性读取的数据块
程序的局部性原理:
空间局部性:一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问。
时间局部性:如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。
因为有缓存行,所有得有一种机制保证数据的一致性,这种机制被称为:缓存一致性协议(不同CPU有不同的缓存一致性协议)
在这里插入图片描述

6、非线程安全

多个线程对同一个对象的同一个实例变量进行操作时会出现值被更改、值不同步的情况,进而影响程序的执行流程。


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

相关文章

为什么要使用多线程?多线程的优点和缺点是什么?

首先说下多线程出现的原因: 为了解决负载均衡问题,充分利用CPU资源.为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰.为了处理大量的IO操作时或处理的情况需要花费大量的时间等等,比如:读写文件,视频图像的采集,处理,显示,保存等 多线程的好处: 1.使用线程…

多线程与多进程的优缺点

Java后端开发实习面经 (1)线程与进程的区别: 线程是进程划分成的更⼩的运⾏单位,⼀个进程在其执⾏的过程中可以产⽣多个线程。线程和进程最⼤的不同在于基本上各进程是独⽴的,⽽各线程则不⼀定,因为同⼀进程中的线程…

CPU 和 CPU Core 有啥区别?多核 CPU?多个 CPU?单核 CPU 为何也支持多线程呢?

由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。 CPU 组成 CPU 全…

多线程的好处与弊端

在创建线程之前先说明一下基本概念: 串行与并行: 串行(同步):模仿人类做事,做完一件事之后做下一件事(比如穿衣服上厕所) 并行(异步): 做一件事的时候,不用等上件事情做完,就做下一件事情(比如吃饭的时候…

线程开的越多就越好吗?

作者:九心 线程优化一直是启动优化中的一个必不可少的项目。作为一个 Android 程序员,你肯定希望应用启动的时候,火力全开,线程池拉满,每一个 CPU 核心满载而行。 可你把线程池拉满的时候,启动时长就一定会…

超线程和多线程的区别

关于线程,多线程,并发,并行等操作系统的基础知识,可以回顾我之前的博客 操作系统学习之一常用术语 物理CPU: 物理CPU就是插在主机上的真实的CPU硬件,在Linux下可以数不同的physical id 来确认主机的物理CP…

多线程还是多进程的选择及区别

鱼还是熊掌:浅谈多进程多线程的选择 关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那…

多进程和多线程区别以及优缺点

多进程和多线程主要区别是:线程是进程的子集,一个进程可能由多个线程组成。多进程的数据是分开的、共享复杂,需要用IPC,但同步简单;多线程共享进程数据、共享简单,但同步复杂。 多进程,window应…