在 x86 中,您可以使用 TSS 在正在运行的进程之间进行任务切换,但是,建议仅使用一个 TSS(必须这样做)并执行软件任务切换,特别是如果您想将内核移植到其他不支持的硬件没有TSS。
在 x86-64(64 位)中,没有 TSS(例如,它不会像 x86 中那样做任何事情),那么,如果没有它,人们将如何进行任务切换(从以前开始,您至少会使用一个)?
您可以像在任何其他平台上一样执行此操作:存储相应寄存器的内容:
对于您要切换的任务,并为您要切换到的任务恢复相同的内容。
通常这是通过将所有状态推送到您要切换的堆栈上,然后将其从您要切换到的堆栈中弹出来完成的。这样,只有堆栈指针需要传递或由内核管理来跟踪后台等待的内容。
实际上,似乎有一个 64 位模式的 TSS,它只是不用于硬件上下文切换;相反,它仅用于指定内核的堆栈是否以及何时发生向更高特权级别的转移。
但是,您仍然必须使用软件上下文切换来更改不同任务之间的控制。