通俗点讲,就是进程需要的额外信息。参考文章
进程上下文
由多任务(线程)引出的进程上下文
现代计算机绝大多数都可以执行多任务(进程)。通常cpu数少于某一段时间要执行的任务(进程)总数。这必将导致,进程轮流执行。进程的一些信息存储在寄存器中,内核中,内存中。当cpu在不同的进程之间调度的时候,上一个进程需要将这些信息存储起来(不存储就会丢失啊),以备下次执行的时候使用,同时即将要执行的进程需要将他之前执行时(假设不是首次执行)的信息,加载进cpu。
这些需要临时存储起来的信息就是上下文。
这些信息包括:
- 用户级上下文
包括:正文,数据,用户堆栈,共享内存 - 寄存器上下文
包括:通用寄存器,程序寄存器(PC),处理器状态,栈指针 - 系统级上下文
包括:进程控制块,内存管理信息内核栈
可以简单的归纳为:CPU的所有寄存器中的值、进程的状态以及堆栈上的内容。
当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。
在linux中PCB数据结构存储了所有进程信息。
中断上下文
参考文章硬件通过触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。
中断发生的时候,从用户态进入内核态,这时候需要将中断进程的信息传给内核,同时还有硬件传递过来的和中断有关的信息,这些信息就是中断上下文。
同时进程也需要保存这些信息,以便再次运行进程。
这个涉及到内核了?有些看不懂