【发布时间】:2021-12-22 13:03:50
【问题描述】:
我有一个问题:如果发生上下文切换,为什么要重新加载新进程的页表?
【问题讨论】:
标签: memory process operating-system virtual-memory page-tables
我有一个问题:如果发生上下文切换,为什么要重新加载新进程的页表?
【问题讨论】:
标签: memory process operating-system virtual-memory page-tables
不必重新加载新进程的页表。它们仍然位于 RAM 中。我不认为页表可以交换到硬盘上。这意味着页表仍保留在 RAM 中,只有 CR3 寄存器(对于 x86-64)更改为指向正在发生的新进程的页表集。
我不知道操作系统在多大程度上使用了 x86-64 处理器的功能。我知道,今天,x86-64 处理器有一个标记的 TLB。并且一些页表条目可以通过 G 位设置为“全局”。缓存的翻译(在 TLB 中)不会在 CR3 重新加载时刷新全局条目,因此可以节省上下文切换的一些开销。
【讨论】: