cpu 究竟是如何运行每个线程的?

How exactly does cpu runs each threads?

1,我总是被告知每个线程都是执行上下文,但线程到底包含什么?它似乎包含调用堆栈、cpu 寄存器和实际执行代码 ?

2、线程也分为两种——os级线程和用户级线程。它们相互映射。当谈到 cpu runs thread 时,cpu 仅在其中任何一个上 运行 还是仅在 os 级别线程上?

3、cpurun线程的说明有点混乱。我的意思是,据我所知,CPU 只能 运行 机器代码,即 0 和 1。那么 cpu 的上下文切换是什么意思?如果每个线程都包含指令的二进制文件并且 cpu 只是 运行 不同的指令?

为了给出简短和过于简化的版本,假设:

  • 您有一个核心和多个指令流(也称为线程、进程或程序)。
  • CPU 有可能中断一个执行流并跳转到另一个地址,即中断处理程序。如果时钟连接到此中断引脚,则可以定期生成外部中断。

运行 多个线程或进程依赖于 上下文切换的概念

上下文切换是指当前指令流(线程)被中断,所有寄存器保存在堆栈中,堆栈指针改变并加载另一个上下文,所有保存的寄存器从其堆栈中恢复。

轻量级线程和进程之间的区别在于它们是否共享内存 space 以及是否可以与共享内存通信。