加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

CPU内核与进程、线程

(2023-09-11 14:22:20)
标签:

cpu

进程

线程

并行

并发

分类: Linux
物理CPU
物理插入在主板的CPU数量;
在Linux上查看/proc/cpuinfo,其中的physical id就是每个物理CPU的id,有几个不同的physical id就有几个物理CPU。

CPU内核
每个CPU的物理内核数量;
在Linux上查看/proc/cpuinfo,其中的core id就是每颗物理CPU的物理内核id,有几个不同的core id就有几个物理内核。

逻辑CPU
操作系统可以使用逻辑CPU来模拟真实CPU。
在没有多核处理器的时候,一个物理CPU只能有一个物理内核,而现在有了多核技术,一个物理CPU可以有多个物理内核,可以把一个CPU当作多个CPU使用,也就是所谓的逻辑CPU。
没有开启超线程时,逻辑CPU的个数就是总的CPU物理内核数。
然而开启超线程后,逻辑CPU的个数就是总的CPU物理内核数的两倍。
在Linux上查看/proc/cpuinfo,其中的processor就是逻辑CPU,有几个processor就有几个逻辑CPU。
总的逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数

进程与线程区别
进程是操作系统资源分配的基本单位;
而线程是任务调度和执行的基本单位;
每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

并发
单核心CPU中,进程中的线程只能是并发;
单CPU中进程只能是并发,多CPU计算机中进程可以并行。
单CPU单核中线程只能并发,单CPU多核中线程可以并行。

并行
多核心可同时处理多个进程的任务,这些核心可同时执行不同的指令流,并行处理多个任务;
其次,每个进程的资源需求也是影响多核CPU并行运行多个进程的因素之一。不同的进程需要不同的资源,如CPU时间、内存、磁盘和网络带宽等。如果多个进程同时需要大量的某种资源,如CPU时间或内存,那么这些进程就会互相竞争从而影响并行运行的效果。
再次,操作系统的调度策略也是影响多核CPU并行运行多个进程的因素之一。操作系统需要决定如何分配CPU时间和其他资源给不同的进程,以达到最优的系统性能和用户体验。操作系统可以使用不同的调度策略来实现这一目标,如时间片轮转、优先级调度、实时调度等。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有