OS中线程与CPU线程的关系

作者: Dakini_Wind | 来源:发表于2019-07-26 22:20 被阅读1次

一、提出由来

在复习操作系统中回顾到了线程这一概念,对此它是这样定义的:
线程是进程运行和执行的最小调度单位。

线程这两个字,我不由联想到了CPU中的线程,比如某某CPU是4核8线程。

那么,这两个线程有何关系?它们是否相同?

二、明确定义

在CPU中所谓4核8线程:
“核”指的是CPU物理核心;
“线程”指的是虚拟核(逻辑核),它是通过超线程技术,将一个物理核分为2个逻辑核来提高性能。

看到这,想来这两个线程的确是不相同的,名字太具有误导性。
不过,两者究竟有何关系呢?

三、探究关系

接下来,我通过Java运行多线程,根据其对CPU占有率来简陋的推测关系。
代码如下:

public class MulThread {
    public static void main(String[]args){

        Thread t1 = new MyThread();
        Thread t2 = new MyThread();
        Thread t3 = new MyThread();
        Thread t4 = new MyThread();
        //Thread t5 = new MyThread();
        //Thread t6 = new MyThread();
        t1.start();
        t2.start();
        t3.start();
        t4.start();
        //t5.start();
        //t6.start();
    }
}


class MyThread extends Thread{

    private int k;

    @Override
    public void run() {
        k = 0;
        while (true) {
            k++;
        }
    }
}

执行后观察CPU使用率:


观察CPU使用率

观察得出结论:
1 . 在同一进程下,开机的线程数少于等于CPU核心数(物理核心),一个线程在同一时间只会运行在一个逻辑核上。
大于物理核心数小于等于逻辑核心数,同样也是只会运行在一个逻辑核上。
2 . 当小于等于CPU核心数时,2个逻辑核为一组(应属于同一个物理核心)对该线程进行维护管理,在每经过大约30s后,部分线程会交由另一逻辑核运行。

四、比喻

本体 喻体
线程(os) 钉子
物理核 锤子
逻辑核(即CPU线程)

运行一个线程,便是:

有一天,
一个人被分配到了一个任务:钉钉子。
只见他两只手各拿一个锤子,
但是他两只手并不协调,
所以他坚持用一只手拿锤子钉钉子,
大约每隔30s,
一只手累了,
变换另一只手继续工作。

相关文章

  • OS中线程与CPU线程的关系

    一、提出由来 在复习操作系统中回顾到了线程这一概念,对此它是这样定义的:线程是进程运行和执行的最小调度单位。 线程...

  • 线程数优化设置,cpu、内存、io问题排查

    cpu数、核数、与线程数关系: 1、线程数究竟设多少合理 2、线程池大小设置,CPU的核心数、线程数的关系和区别,...

  • 关于线程

    多线程与线程优化CPU核心数与线程数的关系多核心多线程 Simultaneous Multithreading.简...

  • 线程池

    线程是调度CPU资源的最小单位,线程模型分为KLT模型和ULT模型,Java采用的是KLT模型,java线程与OS...

  • 01 线程基础、线程之间的共享和协作

    1 基础概念 1.1 CPU核心数和线程数的关系 1.1.1 CPU与线程数量 cpu个数:是指物理上,也及硬件上...

  • java并发笔记

    进程与线程关系 1、进程与线程均是CPU执行时间段的描述。 2、进程是资源分配的基本单位,线程是CPU调度的基本单...

  • Java线程——Thread

    线程Thread Java的线程对应OS中的线程,相当于对OS线程的封装 UncaughtExceptionHan...

  • iOS复习----多线程(一)

    一、线程和进程 关系: 线程是进程的执行单元,进程的所有任务都在线程中执行; 线程是CPU调用的最小单位; 进程是...

  • Java线程

    一 基础概念 CPU核心数与线程数的关系: 核心数与线程数比例为1:1 例如4核,可以同时跑4个线程,In...

  • Java的线程36-39

    线程、多线程与线程池总结--孙福生 Java中的线程 线程是进程当中的一个执行流程多进程:在OS中能(同时)运行多...

网友评论

    本文标题:OS中线程与CPU线程的关系

    本文链接:https://www.haomeiwen.com/subject/tgdjrctx.html