对于switch_to的理解:
push+jmp相当于call指令。差别是call将下一条指令自动压栈。但是进程调度结束时需要执行的下一条指令并不一定是是call的下一条指令。所以需要用push和jmp细分。
struct task_struct * FASTCALL(__switch_to(struct task_struct *prev, struct task_struct *next))
FASTCALL代表寄存器传递函数参数
参考文章:
Linux进程调度——schedule()函数分析
https://blog.csdn.net/lsl180236/article/details/51155373
Linux内核下进程切换 (总结和其他博客都很好)
https://blog.csdn.net/xiaoxiaomuyu2010/article/details/11935393
linux 进程调度switch_to宏浅析+系统执行过程总结
https://blog.csdn.net/titer1/article/details/45289159
运行队列函数入队操作分析enqueue_task_fair
http://blog.chinaunix.net/uid-20729583-id-1884623.html
enqueue_task和dequeue_task源码分析
https://blog.csdn.net/conansonic/article/details/78203405
linux调度器(四)——主调度器与CFS
https://blog.csdn.net/wh8_2011/article/details/48311319
进程内核栈、用户栈
https://blog.csdn.net/bailyzheng/article/details/8015618
linux 内核的 switch_to原理
https://www.cnblogs.com/kkshaq/p/4433351.html

本文解析了Linux内核中进程切换核心函数switch_to的工作原理。通过对比call指令,解释了push+jmp组合的作用,并介绍了该函数如何利用寄存器传递参数。此外,还提供了多个参考资料以帮助读者更全面地理解进程调度。
910

被折叠的 条评论
为什么被折叠?



