multithreading - 多核CPU共享MMU和页表吗?

标签 multithreading operating-system hardware multicore mmu

在单核计算机上,一次执行一个线程。在每次上下文切换时,调度程序都会检查要调度的新线程是否与前一个线程位于同一进程中。如果是这样,则无需对 MMU(页表)执行任何操作。在另一种情况下,需要使用新的进程页面表更新页面表。

我想知道在多核计算机上事情是如何发生的。我猜想每个核心上都有一个专用的MMU,如果同一进程的两个线程同时在2个核心上运行,则每个核心的MMU仅引用相同的页表。这是真的 ?您能为我指出有关该主题的良好引用资料吗?

最佳答案

看看这个方案。这是 Corei7 cpu 上单个核心的所有功能的高级 View 。该图片取自《计算机系统:程序员的视角》,Bryant 和 Hallaron。您可以访问 here 中的图表,第 9.21 节。

Computer Systems: A Programmer's Perspective, 2/E (CS:APP2e)Randal E. Bryant and David R. O'Hallaron, Carnegie Mellon University

关于multithreading - 多核CPU共享MMU和页表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9929755/

相关文章:

linux - 在Linux调度器中,包含多个线程的不同进程如何获得公平的时间配额?

java - 如何在按下后退按钮后停止 while 循环

c - 当我尝试在其他线程中调用 GtkWidget 对象时,GTK 应用程序崩溃

多线程环境下的java回调函数

language-agnostic - 像 codepad.org 和 ideone.com 这样的网站如何将您的程序沙箱化?

c - 程序的虚拟地址空间有多大?

ios - 我将如何着手编程蓝牙发射器以与 iOS 或 Android 一起使用?

ios - ExternalAccessory - 教程 - 如何 - 模拟器

java - 如何在代码中确定 Android 设备的纹理内存限制?

c++ - opengl 位于何处(gpu 软件或操作系统)?