1、什么是上下文
其实在计算机行业中, context 这个词被翻译成“上下文”是有点问题的。第一次接触这个词的人肯定是一头雾水,不知道到底是在讲什么。
(虽然我也没能想出来一个非常合适的译名用来取代“上下文”)
context 指的是(进程)运行时所处的环境和自身的状态,可以理解为当时情况的一个快照。
更具体来说,就是进程的各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。
2、上下文的具体内容
一个进程的上下文可以分为三个部分:
-
用户级上下文:正文、数据、用户堆栈以及共享存储区;
-
寄存器上下文:通用寄存器、程序寄存器(IP)、处理器状态寄存器(EFLAGS)、栈指针(ESP);
-
系统级上下文:进程控制块task_struct、内存管理信息(mm_struct、vm_area_struct、pgd、pte)、内核栈。
3、上下文切换
所谓的上下文切换(context switch),指的是发生进程调度(进程切换)时,内核(kernel)要把当前进程的状态和数据保存起来以备以后使用,同时把之前保存的进程的相关状态调出来,这样新调度出来的进程才能运行。