CPU中进程、线程、核心数

1、进程与线程的关系


进程用官方的话来说:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。 我们常说的app,就是一个进程,当一个程序被运行,从磁盘加载这个程序的代码到内存时,这就开启了一个进程。如下图,打开资源管理器就可以看到这些进程的情况,内部包含一些内存,磁盘,cpu操作,io操作等

线程指的就是:操作系统能够调度的最小单位 。

进程可以独立存活,而线程必须依赖于进程,也就是说,一个进程中可以包含多个线程。

2、CPU核心数和线程数的关系


每个进程都要使用共享的cpu,目前主流的CPU都是多核的,线程是CPU调度的最小单位,也就是说,一个核心CPU只能运行一个线程,但Intel引入这个超线程技术之后,产生了逻辑处理器的概念,使得一个cpu中,可以执行两个线程,从而让cpu数和线程数达到 1:2 的关系 。如下图中,可以查看得到内核是2,逻辑处理器是4

也可以直接通过java代码来查看当前机器的cpu个数,显示的结果就是对应的逻辑处理器的个数

//获取的结果是4,而不是2
Runtime.getRuntime().availableProcessors();


在使用线程池时,可以根据判断是io密集型还是cpu密集型,从而来设置这个最大核心数的数量。一般io密集型的最大核心线程数为 2N ,cpu密集型的最大核心线程数为 N或者 N+ 1,这里的N指的就是逻辑处理器的个数。

//获取当前机器的逻辑处理器的个数
int n = Runtime.getRuntime().availableProcessors();
//创建io密集型线程池
new ThreadPoolExecutor(
        n*2 - 2,n*2,5L,TimeUnit.SECONDS,new LinkedBlockingDeque<>()
);
//创建cpu密集型线程池
new ThreadPoolExecutor(
        n - 1,n,5L,TimeUnit.SECONDS,new LinkedBlockingDeque<>()
);

                        

3、CPU和GPU联系


CPU和GPU由PCI总线连接,编程时,CPU来控制,GPU具体负责执行。有了GPU,CPU就从图形处理的任务中解放出来,可以执行其他更多的系统任务,这样可以大大提高计算机的整体性能。

4、GPU 核心和 CPU 核心


CPU 核心比较重,用来处理非常复杂的控制逻辑,以优化串行程序执行。
GPU 核心较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量。
cpu核心数量很少,gpu核心数量很多,简单的多任务程序适合交给gpu来运算。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/jjjqqq123321/article/details/129830679

原文链接:https://blog.csdn.net/zhenghuishengq/article/details/131714191

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值