【linux软件基础知识】执行进程切换和switch_to

本文探讨Linux内核中进程切换的关键步骤,主要关注switch_to宏的执行过程。进程切换涉及页全局目录的切换和内核态堆栈及硬件上下文的切换。switch_to宏接收三个参数,分别对应于前后两个进程以及用于保存中间进程描述符的输出参数。在宏执行期间,CPU寄存器的状态被保存和恢复,确保进程上下文的正确切换。详细阐述了宏如何在进程A、B和C之间进行切换,并解释了last参数的重要作用。
摘要由CSDN通过智能技术生成

执行进程切换

进程切换可能只发生在精心定义的点: schedule()函数。这里,我们仅关注内核如何执行一个进程切换,从本质上说,每个进程切换由两步组成,

  • 切换页全局目录以安装一个新的地址空间,
  • 切换内核态堆栈和硬件上下文,因为硬件上下文提供了内核执行新进程所需要的所有信息,包含 CPU寄存器。

context_switch进程切换的代码如下所示:

/*
 * context_switch - switch to the new MM and the new
 * thread's register state.
 */
static inline
task_t * context_switch(runqueue_t *rq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果Autosar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值