概念
一个进程切换到另一个进程运行,称为进程的上下文切换
进程是由内核管理和调度的,所以进程的切换只能发生在内核态
进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源
处理过程
把交换的信息保存在进程的 PCB
当要运行另外一个进程的时候,我们需要从这个进程的 PCB 取出上下文,然后恢复到 CPU 中
分支主题
场景
1、CPU的时间片分配给各个进程
2、进程在系统资源不足(比如内存不足)时,要等到资源满足后才可以运行,这个时候进程也会被挂起,并由系统调度其他进程运行
3、当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时
4、当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行
5、发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序