寄存器如何在上下文切换中快速存储和检索数据?

Posted

技术标签:

【中文标题】寄存器如何在上下文切换中快速存储和检索数据?【英文标题】:How do registers quickly store and retrieve data on a context switch? 【发布时间】:2011-10-23 23:44:12 【问题描述】:

寄存器是最快的内存类型。在上下文切换时,寄存器必须将其数据保存在某处,然后必须将正确的数据加载到该特定上下文的寄存器中。如果寄存器没有从其他寄存器存储和检索数据,这可能是一个缓慢的过程。

但我不确定使用什么寄存器来存储和检索上下文切换的数据。我不认为他们使用其他寄存器。他们用什么?

另外,上下文切换多久发生一次?

【问题讨论】:

至少取决于架构。 您对“快速”有一个基本的误解。上下文切换绝非如此。 【参考方案1】:

通过谷歌搜索得到这个相当深入的 wiki article on context switching。

这种情况发生的频率取决于操作系统;在 Linux 上,这取决于本周流行的调度程序算法,以及编译时使用的参数。

【讨论】:

那篇文章说它将信息保存到 TSS。那是什么硬件?那是寄存器吗? 文章中的短语“TSS”被热链接到另一个页面。您可以点击了解更多关于 TSS 的信息。 @z-buffer 表示“上下文”的数据结构的名称。 “段”这个名字意味着它存储在内存中。 @z-buffer 显然,没有什么可以阻止您将寄存器状态保存到其他寄存器中,除了 CPU 并不真正倾向于有空闲寄存器内存来存储“正常”寄存器的副本每个正在运行的进程。 @z-buffer 链接的文章还明确提到了将寄存器值推送到 stack(在内存中)以用于他们描述的软件上下文切换方法。

以上是关于寄存器如何在上下文切换中快速存储和检索数据?的主要内容,如果未能解决你的问题,请参考以下文章

线程上下文切换是如何完成的?

CPU上下文切换

[转]上下文切换

cpu上下文切换

CPU上下文切换

CPU 上下文切换之理论篇(上)