cpu、核与线程

cpu与核心

物理核

  • 物理核数量=cpu数(机子上装的cpu的数量)*每个cpu的核心数

虚拟核

  • 所谓的4核8线程,4核指的是物理核心。通过超线程技术,用一个物理核模拟两个虚拟核,每个核两个线程,总数为8线程。
  • 在操作系统看来是8个核,但是实际上是4个物理核。
  • 通过超线程技术可以实现单个物理核实现线程级别的并行计算,但是比不上性能两个物理核。

单核cpu和多核cpu

  • 都是一个cpu,不同的是每个cpu上的核心数
  • 多核cpu是多个单核cpu的替代方案,多核cpu减小了体积,同时也减少了功耗
  • 一个核心只能同时执行一个线程

进程和线程

理解

  • 进程是操作系统进行资源(包括cpu、内存、磁盘IO等)分配的最小单位
  • 线程是cpu调度和分配的基本单位
  • 我们打开的微信,浏览器都是一个进程
  • 进程可能有多个子任务,比如微信要接受消息,发送消息,这些子任务就是线程。
  • 资源分配给进程,线程共享进程资源。

对比

对比进程线程
定义进程是程序运行的一个实体的运行过程,是系统进行资源分配和调配的一个独立单位线程是进程运行和执行的最小调度单位
系统开销创建撤销切换开销大,资源要重新分配和收回仅保存少量寄存器的内容,开销小,在进程的地址空间执行代码
拥有资产资源拥有的基本单位基本上不占资源,仅有不可少的资源(程序计数器,一组寄存器和栈)
调度资源分配的基本单位独立调度分配的单位
安全性进程间相互独立,互不影响线程共享一个进程下面的资源,可以互相通信和影响
地址空间系统赋予的独立的内存地址空间由相关堆栈寄存器和和线程控制表TCB组成,寄存器可被用来存储线程内的局部变量

线程切换

  • cpu给线程分配时间片(也就是分配给线程的时间),执行完时间片后会切换都另一个线程。
  • 切换之前会保存线程的状态,下次时间片再给这个线程时才能知道当前状态。
  • 从保存线程A的状态再到切换到线程B时,重新加载线程B的状态的这个过程就叫上下文切换。
  • 而上下切换时会消耗大量的cpu时间。

线程开销

  • 上下文切换消耗
  • 线程创建和消亡的开销
  • 线程需要保存维持线程本地栈,会消耗内存

串行,并发与并行

串行

  • 多个任务,执行时一个执行完再执行另一个。
  • 比喻:吃完饭再看球赛。

并发

  • 多个线程在单个核心运行,同一时间一个线程运行,系统不停切换线程,看起来像同时运行,实际上是线程不停切换。
  • 比喻: 一会跑去食厅吃饭,一会跑去客厅看球赛。

并行

  • 每个线程分配给独立的核心,线程同时运行。
  • 比喻:一边吃饭一边看球赛。

多核下线程数量选择

计算密集型

  • 程序主要为复杂的逻辑判断和复杂的运算。
  • cpu的利用率高,不用开太多的线程,开太多线程反而会因为线程切换时切换上下文而浪费资源。

IO密集型

  • 程序主要为IO操作,比如磁盘IO(读取文件)和网络IO(网络请求)。
  • 因为IO操作会阻塞线程,cpu利用率不高,可以开多点线程,阻塞时可以切换到其他就绪线程,提高cpu利用率。

总结

  • 提高性能的一种方式:提高硬件水平,处理速度或核心数。
  • 另一种方式:根据场景,合理设置线程数,软件上提高cpu利用率。

我觉得分享是一种精神,分享是我的乐趣所在,不是说我觉得我讲得一定是对的,我讲得可能很多是不对的,但是我希望我讲的东西是我人生的体验和思考,是给很多人反思,也许给你一秒钟、半秒钟,哪怕说一句话有点道理,引发自己内心的感触,这就是我最大的价值。(这是我喜欢的一句话,也是我写博客的初衷)

作者:jiajun 出处: http://www.cnblogs.com/-new/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。

### CPU 核心线程和频率的概念及其关系 #### CPU 核心 CPU核心是指中央处理器内部能够独立执行指令的实际物理单元。每个核心都可以单独处理不同的任务,从而实现并行计算的能力。多架构使得现代计算机可以在同一时间运行多个应用程序而不会显著降低性能[^1]。 #### 线程 线程是操作系统进行运算调度的最小单位;一个程序至少包含一个进程, 一个进程中可以启动多个子任务即为线程。对于具备超线程技术(Hyper-Threading Technology) 的Intel处理器来说,即使只有一个物理核心也可以模拟成两个逻辑核心来工作,这意味着它可以同时处理更多的数据流或指令序列。因此,在支持该特性的硬件环境下,即便是在单个核心上也能表现出更好的并发性和效率提升效果[^3]。 #### 频率 频率指的是每秒钟内发生的周期性变化次数,通常用来衡量电子设备的工作速度。就CPU而言,它表示的是时钟信号在一秒钟之内完成振荡循环的数量(GHz)。早期为了增强个人电脑的整体表现力,制造商主要通过增加单一核心的操作速率来进行优化升级。然而由于功耗以及散热等方面的限制因素影响,单纯依靠提高主频的方法已经难以满足日益增长的需求。所以现在更多地转向了发展多结构以达到更高效的资源利用目的[^2]。 #### 它们之间的关系 - **核心 vs. 性能**: 更多的核心意味着更强的任务并行处理能力,尤其是在面对复杂应用或多任务环境时尤为明显。 - **线程 vs. 效率**: 利用超线程或其他形式的多线程机制可以让每一个物理核心看起来像是拥有额外的虚拟核心一样运作,进而提高了系统的吞吐量响应速度。 - **频率 vs. 功耗/温度管理**: 较高的操作频率虽然有助于加速某些类型的负载,但也伴随着更大的电力消耗和发热风险。因此当前的趋势是从追求极限高频向平衡设计转变——既保持足够的算力又兼顾能耗控制[^4]。 ```cpp // C++代码示例展示创建新线程的方式之一 #include <iostream> #include <thread> void threadFunction() { std::cout << "This is a separate thread." << std::endl; } int main(){ std::thread t(threadFunction); t.join(); // 主线程等待t结束 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值