多核CPU多线程工作模型

线程服务器doubleJ.U.C

记录下

进程和线程

  • 进程: OS(操作系统)概念,是程序在执行过程中分配和管理资源的基本单位,
  • 线程: CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

包含关系
没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻量级进程。

根本区别:进程是操作系统资源分配的最小单位,而线程是安排 CPU 执行任务调度的最小单位

进程和线程在多核cpu,多cpu中的运行关系

操作系统会拆分CPU为一段段时间的运行片,轮流分配给不同的程序。对于多cpu,多个进程可以并行在多个cpu中计算,当然也会存在进程切换;对于单cpu,多个进程在这个单cpu中是并发运行,根据时间片读取上下文+执行程序+保存上下文。同一个进程同一时间段只能在一个cpu中运行,如果进程数小于cpu数,那么未使用的cpu将会空闲。

多线程的概念主要有两种:一种是用户态多线程;一种是内核态多线程,对于内核态多线程(java1.2之后用内核级线程),在操作系统内核的支持下可以在多核下并行运行;
对于多核cpu,进程中的多线程并行执行。对于单核cpu,多线程在单cpu中并发执行,根据时间片切换线程。同一个线程同一时间段只能在一个cpu内核中运行,如果线程数小于cpu内核数,那么将有多余的内核空闲。

多核CPU和多个CPU运行机制问题

  1. 多核CPU和多个CPU运行的机制一样吗?
  2. 多核CPU或多个CPU下能并行执行多个进程么?

思考问题

  1. 多核CPU能并行运行多个进程么?
  2. 多个CPU的进程切换是同时的么?
  3. 如果多个CPU可以同时运行多个进程,那么其中一个进程中有多个线程,那该进程中的线程能并行执行么?

参考文章

进程,线程与多核,多cpu之间的关系
关于CPU和程序的执行
多核CPU 是否能同时执行多个进程?
多核 CPU 和多个 CPU 有何区别?