首页 > 解决方案 > Linux 中如何使用/不使用硬件上下文开关?

问题描述

旧的 x86 英特尔架构在硬件级别提供上下文切换(以TSS的形式)。但是我已经读过,Linux 长期以来一直“放弃”使用硬件上下文切换功能,因为它们的优化程度较低、灵活性较低并且并非在所有架构上都可用。

令我困惑的是软件(linux)如何控制硬件操作(保存/恢复上下文)?Linux 可以选择使用硬件设置上下文,但硬件上下文切换仍然会发生(使“优化”参数无关紧要)。

此外,如果 linux 没有使用硬件上下文切换,那么如何保存值%eip(指向用户程序中的下一条指令)并由内核恢复内核堆栈指针?(反之亦然)

我认为内核需要一些硬件支持来保存用户程序%eip并在中断服务程序开始之前切换%esp (用户到内核堆栈)寄存器。

如果这种支持确实是由硬件提供的,那么 linux 怎么使用硬件上下文切换呢?

好糊涂!!!

标签: linuxlinux-kernelkernel

解决方案


推荐阅读