CPU上下文切换

什么是cpu上下文切换?

  • 多任务同事竞争cpu, cpu切换任务时会发生上下文切换
  • 上下文切换时需要记录当前任务状态个下一个任务地址(指针)
  • 上下文指某一时间点cpu寄存器和程序计数器的内容

上下文切换的过程

  1. 记录当前任务的上下文(寄存器和计数器的所有状态)
  2. 找到新任务的上下文并加载
  3. 切换到新任务的程序计数器位置并恢复其任务

cpu有哪些执行任务的方式?

进程、线程或者硬件触发信号导致中断的操作。

进程和线程的区别?

  • 进程是资源分配及执行的最小单元, 线程是任务调度的及运行的基本单元
  • 线程没有资源,进程给指针提供虚拟内存、栈、变量等共享资源,而线程可以共享进程的资源

上下文分为哪几种?

进程上下文切换、线程上下文切换、以及中断上下文切换三类。

进程的上下文

  1. 为了保证所有的进程都得到公平的调用, cpu被划为一段段的时间片, 这些时间片再轮流分配给每个进程, 当进程所占的时间片被耗尽时, 就会被系统挂起切换到其他正在等待cpu的进程运行。

  2. 进程在资源不足时(比如内存不足), 要等待有资源满足后才可以直接运行, 这时进程也会被挂起, 并有系统调度其他进程运行。

  3. 当进程通过睡眠函数 sleep 时会挂起, 系统将会重新调度

  4. 高优先级进程导致当前进度挂起, 由高级进程优先执行。

  5. 硬件中断,导致当前进程挂起, 转而执行内核中的中断服务程序

线程的上下文

  1. 当进程只有一个线程时, 可以认为进程等于线程

  2. 当进程拥有多线程时, 这些线程会共享进程内的共享虚拟内存、和全局变量等资源。这些资源在上下文时是不需要修改的

  3. 线程有自己的私有数据, 比如栈和寄存器, 这些是在线程做上下文切换需要保存的。

中断上下文切换

快速响应硬件的事件,中断处理会打断进程的正常调度和执行。同一CPU内,硬件中断优先级高于进程。切换过程类似于系统调用的时候,不涉及到用户运行态资源。但大量的中断上下文切换同样可能引发性能问题

发表评论

电子邮件地址不会被公开。 必填项已用*标注