SMP 上如何处理中断?

2024-05-27

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

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

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


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

中断源主要有两个:

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

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

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

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

关于示例中的顺序:

  • 页面错误被转发到生成它的核心。
  • 内核更新其 MMU 表,这些表受到共享锁或类似锁的保护。
  • 不,通常只有一个内核,除非您应用虚拟化模型。
  • 它们使用共享锁或类似结构进行同步。如果两个核心同时在同一页面发生故障……实际上,这没什么大不了的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SMP 上如何处理中断? 的相关文章

随机推荐

  • Python子进程Exec格式错误

    抱歉 如果这个问题很愚蠢 我正在使用Pythonsubprocess在 Ubuntu Natty 11 04 中调用 bat 文件的语句 但是 我收到错误消息 Traceback most recent call last File pfa
  • APEX动态定义默认文件名?

    在 APEX 应用程序中 我有一个交互式报告 In Report Attributes gt Report Export gt Filename 您可以指定下载的默认文件名 问题 有没有办法动态定义这个默认文件名 是的 我知道 用户在下载时
  • Scikit Learn GridSearchCV 无需交叉验证(无监督学习)

    是否可以在没有交叉验证的情况下使用 GridSearchCV 我正在尝试通过网格搜索优化 KMeans 聚类中的聚类数量 因此我不需要或想要交叉验证 The 文档 http scikit learn org stable modules g
  • 相当于 Java 中 C++ 的 std::bind 吗?

    有没有一种方法可以像 C 中的 std bind 一样将 Java 中的参数绑定到函数指针 Java 中类似的东西会是什么 void PrintStringInt const char s int n std cout lt lt s lt
  • 使用 Kendo Upload 进行 Kendo Grid 内联编辑返回空结果

    我有 Kendo UI Gridinline编辑和我的领域之一 propertyLogo I use 剑道上传 https demos telerik com kendo ui upload index上传图像 使用kendoUpload函
  • Python Cherrypy 访问日志轮转

    如果我希望 Cherrypy 的访问日志仅达到固定大小 我将如何使用轮换日志文件 我已经尝试过了http www cherrypy org wiki Logging http www cherrypy org wiki Logging 这似
  • 在列表中查找元素及其索引

    我需要让列表的两个元素都满足谓词and这些元素的索引 我可以通过以下方式实现这一点 import Data List findIndices list Int list 3 2 4 1 9 indices findIndices gt 2
  • 用户输入导致frame.getContentPane.removeAll()停止工作

    在 JFrame 中 我用另一个 JPanel 替换 Jpanel package testing import java io import java util import java security import javax xml
  • Oracle Developer Tools for Visual Studio 2019 无法正确安装

    在 VS 2019 中 ODT 使用扩展名安装 而不是像以前的版本那样作为安装文件安装 因此 从 VS 2017 升级的 EF 6 使用的 MVC 项目 edmx 文件在扩展安装后不显示数据库图表 空白黑页 编辑 xml 选项等 仅此而已
  • WCF 回调通道被过早处置?

    我的应用程序正在使用带有回调通道的 net tcp WCF 服务 由于某种原因 我无法发送事件回调 这就是我正在做的事情 所有代码都在服务器端 初始化时 OperationContext Context get protected set
  • 在 TypeScript 中生成具有单个模块的声明文件

    给定以下文件夹结构 src foo ts bar ts baz ts index ts Where foo ts bar ts and baz ts每个导出一个默认类或事物 即在foo ts export default class Foo
  • 如何在 Eclipse 中的选定文本周围添加引号

    在编程过程中 我无数次需要在文本两边加上引号 我记得不久前 我看到有人选择文本 然后简单地使用键盘快捷键并在其周围加上引号 怎么办呢 日食中 1 Window gt Preferences gt Java gt Editor gt Temp
  • 如何使用js或jquery从中删除所有属性

    如何使用 js 或 jquery 删除所有属性 我不知道body里的属性是什么 我想把它们全部删除 您可以使用 DOM Level 1 Coreattributesproperty 以列表形式访问属性 作为普通的 JS function r
  • 如何在python 3.8中安装opencv-python

    我在 pycharm 中安装 opencv python 时遇到问题 打开 pycharm 后 我单击 设置 然后单击 项目解释器 单击 并搜索正确的模块 我开始安装 但失败了 Could not find a version that s
  • 将第二个 UIWindow 与 rootViewController 一起使用时,界面旋转变黑

    iOS 7 0 3 Xcode 5 0 1 我的应用程序中有第二个 UIWindow 用于在状态栏上方显示自定义放大镜 但是 一旦我设置了该窗口的 rootViewController 用于界面旋转和其他一些东西 主窗口在界面旋转动画期间就
  • FileAttributes.Encrypted 在 C# 中如何工作?

    我在谷歌上没有找到任何例子 任何人都可以展示它是如何工作的吗 当文件夹和文件被加密时如何解密 Link 文件属性枚举 http msdn microsoft com en us library system io fileattribute
  • ILMerge 最佳实践

    你用ILMerge吗 您是否使用 ILMerge 合并多个程序集以简化 dll 的部署 在将程序集合并在一起后 您是否发现生产中的部署 版本控制存在问题 我正在寻找一些有关使用 ILMerge 减少部署摩擦的建议 如果可能的话 我将 ILM
  • 有一种方法可以在 MongoDB 中强制引用完整性 [重复]

    这个问题在这里已经有答案了 当您搜索与 Mongo DB 相关的引用完整性时 标准响应是 MongoDB 不支持此 标准解释是 MongoDB 支持 refs 和 populate 但是没有什么可以阻止您将 ref 更改为无效值 对于许多具
  • 角度材料设计布局

    How can I design a layout with angular material layout like 我举了一个例子材料设计 http www google com design spec layout structure
  • SMP 上如何处理中断?

    SMP 对称多处理器 多核 机器上如何处理中断 内存管理单元是只有一个还是多个 假设两个线程 A 和 B 运行在不同的内核上 同时 访问页表中不存在的内存页面 在这种情况下 将会出现页面错误 并从内存中引入新页面 将会发生的事件的顺序是什么