gpt4 book ai didi

linux - SMP 如何处理中断?

转载 作者:IT王子 更新时间:2023-10-29 00:14:54 28 4
gpt4 key购买 nike

在 SMP(对称多处理器/多核)机器上如何处理中断?是否只有一个或多个内存管理单元?

假设两个线程,A 和 B 运行在不同的内核上(同时)触及页表中不存在的内存页,在这种情况下将出现页面错误,并从中引入一个新页面内存。

将发生的事件顺序是什么?如果有一个内存管理单元,页面错误转发给哪个核心?内核如何处理它?是否有多个内核实例,每个实例都运行在不同的内核上?如果是这样,它们如何同步页面错误处理等事件?

最佳答案

好吧,这取决于具体的架构,但根据我从英特尔文档中所记得的...

有两个主要的中断源:

  • 内部:这些由 CPU 本身生成。包括故障、陷阱、软件中断等。
  • 外部:这些是由外围设备产生的硬件中断。

内部中断总是传递给产生它的 CPU。外部的被发送到任意核心。

在现代模型中,中断也可以使用类似总线的系统来传递,而不是旧的中断驱动系统,但我忽略了当前任何操作系统是否正在使用这种模型。

关于MMU,当然每个核心都有自己的,但是它们通常被操作系统强制使用相同的段,所以它们可以对称地使用。请注意,物理内存和虚拟内存之间的大部分映射实际上都在内存中,并且始终是共享的。

关于您示例中的顺序:

  • 页面错误被转发到生成它的核心。
  • 内核更新其受共享锁或类似锁保护的 MMU 表。
  • 不,通常只有一个内核,除非您应用虚拟化模型。
  • 他们使用共享锁或类似结构进行同步。如果两个核心碰巧同时在同一页面出现故障……其实这没什么大不了的。

关于linux - SMP 如何处理中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235011/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com