3G/1G 虚拟机拆分有什么优势?32位Linux内核

lou*_*xiu 5 linux memory-management linux-kernel

虚拟内存一:问题[LWN.net] http://lwn.net/Articles/75174/

特别是,硬件的地址转换缓冲区可以在内核和用户空间之间共享。

我对此完全困惑。为什么虚拟机分裂时他们可以共享TLB?我知道某些CPU中有页面全局位

表明 TLB 条目对于不同进程是通用的,不需要刷新。

TLB和vm split 3G/1G有什么关系?请详细评论。提前致谢。

更新:为什么不使用页面全局位来指示TLB条目被操作系统(内核空间)使用?如果是这样,为什么还需要分割vm空间?示例:TLB 中有两个条目(vm 线性地址相同),但其中一个全局位已设置。?当上下文切换时,只需刷新未设置全局位的条目。这可能吗?

Update2:我检查了intel-ia-32架构软件开发人员手册,发现TLB条目中没有全局位(存在于PDE和PTE中)。但是当上下文切换时,CPU如何确定TLB条目全局位是否设置或未设置?

sar*_*old 5

TLB 还包括一个主管标志,指示映射是否可以由常规进程使用,或者是否仅当进程在设置了主管标志的情况下运行时(即,当进程在内核上下文中执行时)可用。

这个管理标志允许 TLB 对进程有用(它不会自动获得内核 GB 数据的特权),允许内核在内核模式下执行时完全访问所有进程的内存。

这意味着进程可以进入和退出内核模式,而不会产生 TLB 刷新惩罚。

如果内存未分割(例如,正在使用 4:4 补丁,为用户空间提供 4 GB,为内核空间提供 4 GB),则必须在每次内核进入/退出时刷新 TLB,以映射特权空间或用户空间所有复制进和复制出内核的数据都必须经过繁琐的重新映射机制。