与内核模式不同,用户模式由于使用虚拟内存而使用地址转换。因此,似乎必须在发生访问时转换内存地址(即使没有 TLB 未命中)进行权衡。
由于内核模式直接访问 RAM 而无需任何地址转换,如果我们在内核模式而不是用户模式下运行代码,RAM 中的性能会有所提升吗?
最佳答案
Is there any performance gain in RAM if we run a code in Kernel mode rather than User mode?
可能不会。 MMU总是被使用。它只是针对内核模式和用户模式进行了不同的配置(因此内核代码的“地址转换”可能是某种“身份”功能)。
和CPU cache考虑因素比 MMU 重要得多。缓存未命中可能会花费数百个周期或纳秒(从 RAM 模块获取数据)。另外,context switches成本高昂。
但是您需要基准测试。见结尾Answers section of P.Norvig page .
(事实上,内核地址空间没有任何主要的 page faults ;我猜想 - 但不是真的知道 - 在某些硬件上它可能有次要页面错误)
另请阅读 Unikernel方法。
关于linux - 用户模式与内核模式的 RAM 性能比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35015944/