摘要:
Linux切换并没有使用X86CPU的切换方法,Linux切换的实质就是cr3切换(内存空间切换,在switch_mm函数中)+ 寄存器切换(包括EIP,ESP等,均在switch_to函数中)。这里我们讲述下switch_to主流程:1. 在switch_mm函数中将new_task->pgd设置到cr3寄存器中,实现页表切换,由于每个进程3-4G的页表映射机制完全一样(从内核页表中直接复制过来的),故这里虽然切换了pgd,但是并无影响,只是在任务回到用户空 间中时,才会发生变化,因为每个任务在0-3G中的页表映射都是各自独立的;2. 压入esi edi ebp到cur_task堆栈中 阅读全文