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

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

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

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

【问题讨论】:

  • 至少取决于架构。
  • 您对“快速”有一个基本的误解。上下文切换绝非如此。

标签: cpu-registers


【解决方案1】:

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

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

【讨论】:

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