0

我正在阅读https://wiki.osdev.org/Task_State_Segment的页面

据我了解,当跳转或调用任务描述符时,它将“自动”切换环和与与该任务描述符链接的相应 TSS 段相对应的寄存器。

但是在切换任务时,比如说ring 3到其他ring 3,寄存器是否会自动保存在实际的TSS中?(加载到 tr 寄存器中)。

因为在这个 osdev 页面(上面的链接)上它说寄存器没有保存,但如果没有保存,任务如何自行更新它的 TSS?这将产生巨大的安全问题。

(我知道硬件切换已经过时,但我仍然想了解它的机制。)

4

1 回答 1

0

该页面实际上与 osdev 无关。它是关于 linux 使用什么的。Linux 不切换任务,因此它只关心任务中的特权切换。

当您调用或 jmp 到作为任务或任务门的选择器时,您的寄存器将保存到当前tr寄存器标识的任务段中;然后tr将切换到目标选择器,并且将从该任务段加载寄存器。

于 2021-09-08T04:32:51.567 回答