gpt4 book ai didi

linux - 为什么 Linux 不通过 TSS 使用硬件上下文切换?

转载 作者:IT老高 更新时间:2023-10-28 12:37:46 45 4
gpt4 key购买 nike

我阅读了以下声明:

The x86 architecture includes a specific segment type called the Task State Segment (TSS), to store hardware contexts. Although Linux doesn't use hardware context switches, it is nonetheless forced to set up a TSS for each distinct CPU in the system.

我想知道:

  • 为什么 Linux 不使用硬件支持来进行上下文切换?
  • 硬件方法不是比软件方法快得多吗?
  • 有没有利用硬件上下文切换的操作系统? windows用了吗?

最后,一如既往,感谢您的耐心和回复。

-----------添加--------------

http://wiki.osdev.org/Context_Switching得到了一些解释。

像我一样困惑的人可以看看它。 8^)

最佳答案

x86 TSS 对于硬件多任务处理非常慢,与软件任务切换相比几乎没有任何好处。 (事实上​​,我认为手动操作胜过 TSS 很多次)

TSS 还以使用起来烦人且乏味而著称,而且它不可移植,即使对于 x86-64 也是如此。 Linux 旨在处理多种架构,因此他们可能选择使用软件任务切换,因为它可以以独立于机器的方式编写。此外,软件任务切换提供了比 TSS 更强大的功能,并且通常比 TSS 更容易设置。

我相信 Windows 3.1 使用了 TSS,但至少 NT >5 内核没有。我不知道任何使用 TSS 的类 Unix 操作系统。

请注意,TSS 是强制性的。 操作系统所做的事情是创建单个 TSS 条目(每个处理器),并且每次他们需要切换任务时,他们只需更改这个单个 TSS。并且TSS中通过软件任务切换使用的唯一字段是ESP0SS0。这用于从 ring 3 代码到 ring 0 进行中断。如果没有 TSS,就不会有已知的 Ring 0 堆栈,这当然会导致 GPF 并最终导致三重故障。

关于linux - 为什么 Linux 不通过 TSS 使用硬件上下文切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711044/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com