首页 > 其他分享 >你真的懂多线程吗?多线程 并行处理 CPU 操作系统

你真的懂多线程吗?多线程 并行处理 CPU 操作系统

时间:2024-07-10 16:57:14浏览次数:23  
标签:内存条 并行处理 核心 线程 内存 进程 多线程 CPU

了解多线程、并行处理首先需要了解什么CPU、CPU核数、操作系统

CPU物理数

即电脑拥有的物理CPU数量,普通电脑一般只有一个CPU插槽,也就是只有一个物理CPU。我们日常说的CPU,就是指封装好的一个物理CPU,作为商品进行售卖。但在编程讨论时,某些情况下,我们说的CPU含义又是指其中一个运算单元,即下面的说的CORE核心。平时讲的四核CPU、六核CPU指的就是CPU的运算单元数,CPU同时运行的线程数。

CORE核心数(物理核心数)

核心数为一个物理CPU拥有的运算单元数量,例如8核,即一个CPU有8个核心,拥有8个独立的运算单元。一个运算单元有一套寄存器,一般还有L1,L2的私有缓存,可以独立执行一个任务(一般是线程),所以一个核心同一时刻只能运行一个线程,不论这个线程是哪个进程的。每隔一定时间,大概几十毫秒,就会切换线程,即切换任务(可能是同一个进程的线程,也可能是另外一个进程的线程,如果是其它进程的线程,会切换CR3)。

为什么要切换CR3?

首先了解什么是CR3。每个进程都会有自己的一张分级的页表,用于查找该进程所访问到的物理内存(因为进程都是独立的,物理内存肯定是限制访问)。

当操作系统执行进程切换的时候,会将执行该进程页表的那个指针加载到CR3寄存器,这样当进程切换后,CPU访问的内存就是属于该进程的内存或者内核所使用的内存。进程对应的页表指针是由内核进行维护的。

当核心被切换到别的线程,并且这个线程属于别的进程,CR3必须更新为该线程所属的进程页表的那个指针,所以会切换CR3。我只简单理解为CR3用来标记线程所属的进程。

下面我们再说CPU的时候,直接用CORE核心来代替CPU的说法可能更明确

增加内存条以提高运行速度

增加内存条可以提高电脑运行速度,但这取决于当前内存是否足够以及电脑其他硬件的性能。

如果内存容量已经满足需求,再增加内存对速度的提升将非常有限。反之,如果内存容量不足,增加内存条可以显著提升电脑运行速度。内存条的主要作用是为程序运行提供临时存储空间,内存条容量越大,能同时运行的程序就越多,电脑的处理速度也就越快。

然而,电脑的整体性能不仅取决于内存,还与CPU、显卡等硬件的性能密切相关。如果CPU或显卡性能不足,即使增加再多的内存也无法显著提升电脑速度。

此外,如果是内存低造成的电脑运行慢,增加内存条可以提速。但如果原有内存已经足够,或者电脑运行慢的原因并非内存不足,那么增加内存条可能无法显著提升电脑速度。

因此,在考虑是否增加内存条时,需要综合考虑电脑的整体配置和性能需求。

CPU核心数和线程数

目前主流CPU有双核、三核、四核、六核、八核、十六核等。

每个核心可以处理一定数量的线程数,增加核心数目就是为了增加线程数,因为操作系统是通过线程来执行任务的。

一个CPU的性能不仅取决于核心数量,还取决于每个核心能够处理的线程数量以及这些线程如何被调度和执行。

每个核心能够处理的线程数量

每个核心能够处理的线程数量取决于处理器的架构和是否采用了超线程技术。‌

在传统的处理器设计中,‌每个核心只能执行一个线程。‌然而,‌随着超线程技术的引入,‌一个核心现在可以同时处理多个线程。‌超线程技术允许处理器核心在单个物理核心上模拟出多个逻辑线程,‌从而提高了处理器的整体性能。‌具体来说,‌一个核心通过超线程技术可以同时处理2个线程,‌这使得处理器能够在不增加物理核心数量的情况下,‌提升性能高达40%。‌

例如,‌如果一个处理器具有两个核心,‌并且采用了超线程技术,‌那么这两个核心就可以模拟出4个逻辑线程进行并行处理。‌这种情况下,‌处理器实际上拥有4个线程的处理能力,‌尽管物理核心数只有两个2。‌

总的来说,‌现代处理器通过超线程技术,‌能够在单个物理核心上支持多个逻辑线程的执行,‌从而提高了处理器的并行处理能力和整体性能。‌

 本文参考:简单理解:CPU物理数,核心数,线程数,进程,线程,协程,并发,并行的概念

 本文参考:I/O会一直占用CPU吗?

标签:内存条,并行处理,核心,线程,内存,进程,多线程,CPU
From: https://www.cnblogs.com/yyd-sun/p/18293471

相关文章

  • 初创芯片公司非常疯狂,将CPU性能提高100倍
    初创芯片公司非常疯狂,将CPU性能提高100倍[http://mp.weixin.qq.com/s?__biz=Mzg2NDgzNTQ4MA**&mid=2247741576&idx=5&sn=733a2dffecbfd99e41e97e93e204b2cb&chksm=ce6e327ff919bb691bf4e3ed418f27d816846b1c577477d5d7f063c103e01d9d4cbeca47195b&mpshare=1&scen......
  • 初创芯片公司非常疯狂,将CPU性能提高100倍
    初创芯片公司非常疯狂,将CPU性能提高100倍[http://mp.weixin.qq.com/s?__biz=Mzg2NDgzNTQ4MA**&mid=2247741576&idx=5&sn=733a2dffecbfd99e41e97e93e204b2cb&chksm=ce6e327ff919bb691bf4e3ed418f27d816846b1c577477d5d7f063c103e01d9d4cbeca47195b&mpshare=1&scen......
  • 初创芯片公司非常疯狂,将CPU性能提高100倍
    初创芯片公司非常疯狂,将CPU性能提高100倍[http://mp.weixin.qq.com/s?__biz=Mzg2NDgzNTQ4MA&mid=2247741576&idx=5&sn=733a2dffecbfd99e41e97e93e204b2cb&chksm=ce6e327ff919bb691bf4e3ed418f27d816846b1c577477d5d7f063c103e01d9d4cbeca47195b&mpshare=1&scene=......
  • 初创芯片公司非常疯狂,将CPU性能提高100倍
    初创芯片公司非常疯狂,将CPU性能提高100倍[http://mp.weixin.qq.com/s?__biz=Mzg2NDgzNTQ4MA&mid=2247741576&idx=5&sn=733a2dffecbfd99e41e97e93e204b2cb&chksm=ce6e327ff919bb691bf4e3ed418f27d816846b1c577477d5d7f063c103e01d9d4cbeca47195b&mpshare=1&scene=......
  • 【转】-多线程之Callable
    Java并发编程:Callable、Future和FutureTask该博客转载自​Matrix海子​的​Java并发编程:Callable、Future和FutureTask在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行......
  • 【转】-java多线程读写锁ReadWriteLock
    Java多线程中读写锁ReadWriteLock的使用该博客转载自​lavimer​的​Java多线程中读写锁ReadWriteLock的使用1.概念读写锁分为读锁和写锁,多个读锁之间是不需要互斥的(读操作不会改变数据,如果上了锁,反而会影响效率),写锁和写锁之间需要互斥,也就是说,如果只是读数据,就可以多个线程......
  • 多条宽带负载均衡是一种常见的网络优化技术,通常用于增加网络带宽、提高网络性能和可靠
    多条宽带负载均衡是一种常见的网络优化技术,通常用于增加网络带宽、提高网络性能和可靠性。在实现多条宽带负载均衡时,可以考虑以下几种方法:路由器级别的负载均衡:智能路由器:某些商业路由器支持多个WAN口,并能够智能地根据网络流量来分配数据到不同的宽带线路上,实现负载均衡。......
  • 信创学习笔记(二),信创之CPU芯片架构思维导图
    创作不易只因热爱!!热衷分享,一起成长!“你的鼓励就是我努力付出的动力”各架构,操作系统,指令,代表生产商,服务器使用产品主要供应商......
  • Python多线程与多进程编程:提升程序性能的实用技巧
    前言大家好!今天我们要深入探讨Python中的多线程与多进程编程,这可是提升程序并发性能的关键技能之一。记得我在处理大量数据时,通过多线程和多进程技术,大大提高了程序的执行效率。为了让大家也能掌握这些实用技巧,我将通过多个具体案例,详细讲解如何在Python中实现多线程和多......
  • k8s 关闭 enableServiceLink-Pod-CPU-内存占用过高
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<特性说明:enableServiceLinks特性,是k8s提供给pod发现和访问svc的两种方案之一(另一种是DNS)。该特性在pod启动时,kubelet会将activesvc通过env {SVCNAME}_SERVICE_HOST、......