CPU与核心及进程和线程认识

电子说

1.3w人已加入

描述

CPU与核心

物理核

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

虚拟核

所谓的4核8线程,4核指的是物理核心。通过超线程技术,用一个物理核模拟两个虚拟核,每个核两个线程,总数为8线程。

在操作系统看来是8个核,但是实际上是4个物理核。

通过超线程技术可以实现单个物理核实现线程级别的并行计算,但是比不上性能两个物理核。

单核cpu和多核cpu

都是一个cpu,不同的是每个cpu上的核心数

多核cpu是多个单核cpu的替代方案,多核cpu减小了体积,同时也减少了功耗

一个核心只能同时执行一个线程

进程和线程

理解

进程是操作系统进行资源(包括cpu、内存、磁盘IO等)分配的最小单位

线程是cpu调度和分配的基本单位

我们打开的微信,浏览器都是一个进程

进程可能有多个子任务,比如微信要接受消息,发送消息,这些子任务就是线程。

资源分配给进程,线程共享进程资源。

对比

线程

线程切换

cpu给线程分配时间片(也就是分配给线程的时间),执行完时间片后会切换都另一个线程。

切换之前会保存线程的状态,下次时间片再给这个线程时才能知道当前状态。

从保存线程A的状态再到切换到线程B时,重新加载线程B的状态的这个过程就叫上下文切换。

而上下切换时会消耗大量的cpu时间。

线程开销

上下文切换消耗

线程创建和消亡的开销

线程需要保存维持线程本地栈,会消耗内存

串行,并发与并行

串行

多个任务,执行时一个执行完再执行另一个。

比喻:吃完饭再看球赛。

并发

多个线程在单个核心运行,同一时间一个线程运行,系统不停切换线程,看起来像同时运行,实际上是线程不停切换。

比喻: 一会跑去食厅吃饭,一会跑去客厅看球赛。

并行

每个线程分配给独立的核心,线程同时运行。

比喻:一边吃饭一边看球赛。

多核下线程数量选择

计算密集型

程序主要为复杂的逻辑判断和复杂的运算。

cpu的利用率高,不用开太多的线程,开太多线程反而会因为线程切换时切换上下文而浪费资源。

IO密集型

程序主要为IO操作,比如磁盘IO(读取文件)和网络IO(网络请求)。

因为IO操作会阻塞线程,cpu利用率不高,可以开多点线程,阻塞时可以切换到其他就绪线程,提高cpu利用率。

总结

提高性能的一种方式:提高硬件水平,处理速度或核心数。

另一种方式:根据场景,合理设置线程数,软件上提高cpu利用率。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分