上下文的种类: 用户级上下文:其实就是虚拟内存(mm_struct),包括数据段,代码段,堆栈,mmap等 内核级上下文:内核栈 硬件级:寄存器(PC,IP,BP,SP,CR3等)
上下文切换类型: 1.进程/线程上下文切换:1.2.3都会发生,上下文存储在用户栈 2.内核上下文切换:只发生2.3,上下文存储在内核栈,内核栈每个线程都有一个 3.中断上下文切换:只发生3,上下文存储在中断栈,中断栈一般每个处理器一个
补充:在发生虚拟内存的切换时,需要切换页表,而页表的切换一般会导致TLB无效,同时,由于高速缓存具有局部性,所以也会导致高速缓存cache无效
参考: https://zhuanlan.zhihu.com/p/79772089 https://zhuanlan.zhihu.com/p/52845869 https://blog.csdn.net/xiaoaid01/article/details/51659037