聊天时经常听别人说到上下文切换,一直不知道什么是上下文,怎么个切换法。
今天百度了下才知道,上下文切换,一般都是指进程的上下文切换。
当一个进程在执行时,CPU中所有寄存器的值、进程的状态以及堆栈中的内容被称为该进程的上下文。
也就是关于当前进程的寄存器内容以及内存页表的详细信息等等内容,一句话概括也就是关于描述进程的信息。即TTS和CR3等中的内容。
当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的上下文,以便在再次执行该进程时,能够得到切换之前的状态,进而继续执行下去。
在LINUX中,当前进程上下文均保存在进程的任务数据结构中。
在发生中断时,内核就保存被中断进程的上下文,转而去执行中断服务进程,以便中断服务程序结束时,能恢复被中断进程的执行。
补充一点,当一个进程运行时 ,产生了一个中断, CPU转而执行中断处理程序 , 虽然CPU当时保存了被中断进程的上下文, 但这和中断处理丝毫没有关系 , 也就是 说, 中断处理程序没有用到被中断进程的上下文。