process - 进程之间的上下文切换是否会使 MMU(内存控制单元)失效?

标签 process operating-system cpu mmu

这是我系统讲座的 PowerPoint 中的一句话,但我不明白为什么上下文切换会使 MMU 失效。我知道它会使缓存无效,因为缓存包含另一个进程的信息。但是,对于 MMU,它只是将虚拟内存映射到物理内存。如果上下文切换使其无效,这是否意味着 MMU 在不同进程中使用不同的映射机制?

最佳答案

Does this mean the MMU use different mechanism of mapping in different processes?

你的结论基本上是对的。
每个进程都有其从虚拟地址到物理地址的映射(称为上下文)。
例如,地址 0x401000 可以转换为进程 A 的 0x01234567 和进程 B 的 0x89abcdef。
拥有不同的上下文可以轻松实现进程的 isolation、轻松的按需分页和简化的重定位。

因此每次上下文切换都必须使 TLB 无效,否则 CPU 将继续使用旧的转换。

然而,有些页面是全局的,这意味着它们具有独立于当前进程地址空间的相同转换。
例如,内核代码以相同的方式映射到每个进程,因此不需要重新映射。

所以最后只有一部分 TLB 失效了。
您可以阅读 Linux handles the process address space 如何获取应用理论的真实示例。

关于process - 进程之间的上下文切换是否会使 MMU(内存控制单元)失效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439408/

相关文章:

python - 监视目录中的文件更改

c++ - 高 CPU 使用率 OpenGL Ver 3.1 + SDL2

c - 对子进程的操作 C

c - 有没有办法用命令行结束Windows任务(而不是进程)?

java - 如何在 WSO2 ESB 4.8.1 中获取进程 ID

powershell - 在powershell中操作进程的主窗口

java - 获取指定文件路径的file.separator

c - AH=2的BIOS INT 13H每次只能读取72个扇区。为什么?

memory - 与字节寻址相比,从字寻址存储器中获取 4 字节字是否更容易?

caching - 缓存内存: What is the difference between a tag and an index?