4-11-线程上下文切换

文章目录
  1. 1. 线程上下文切换
    1. 1.1. 上下文
    2. 1.2. 上下文切换(任务状态保存及再加载)
    3. 1.3. 上下文切换具体活动
    4. 1.4. 上下文切换原因
    5. 1.5. linux线程
    6. 1.6. 寄存器(CPU 内部的数量较少但是速度很快的内存)
    7. 1.7. 程序计数器(专用的寄存器,用于表明指令序列中 CPU 正在执行的位置)
    8. 1.8. PCB-切换桢

线程上下文切换

上下文

指某一时间点 CPU 寄存器和程序计数器的内容。

上下文切换(任务状态保存及再加载)

CPU 给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务,任务的状态保存及再加载, 这段过程就叫做上下文切换。

image-20210706114544472

上下文切换具体活动

  1. 挂起一个进程,将这个进程在 CPU 中的状态(上下文)存储于内存中的某处。

  2. 在内存中检索下一个进程的上下文并将其在 CPU 的寄存器中恢复。

  3. 跳转到程序计数器所指向的位置(即跳转到进程被中断时的代码行),以恢复该进程在程序中。

上下文切换原因

  1. 时间片用完之后正常调度
  2. io阻塞将此任务挂起
  3. 没有抢占到锁资源
  4. 代码主动挂起,让出cpu
  5. 硬件中断

linux线程

在 Linux 系统中,线程就是能并行运行并且与他们的父进程(创建他们的进程)共享同一地址空间(一段内存区域)和其他资源的轻量级的进程。

寄存器(CPU 内部的数量较少但是速度很快的内存)

与之对应的是 CPU 外部相对较慢的 RAM 主内存)。寄存器通过对常用值(通常是运算的中间值)的快速访问来提高计算机程序运行的速度。

程序计数器(专用的寄存器,用于表明指令序列中 CPU 正在执行的位置)

存的值为正在执行的指令的位置或者下一个将要被执行的指令的位置,具体依赖于特定的系统。

PCB-切换桢

上下文切换过程中的信息是保存在进程控制块(PCB, process control block)中的。PCB 还经常被称作“切换桢”(switchframe)。信息会一直保存到 CPU 的内存中,直到他们被再次使用。