代码之家  ›  专栏  ›  技术社区  ›  Giovanni Galbo

多核/多核机器中的中断是如何工作的?

  •  21
  • Giovanni Galbo  · 技术社区  · 17 年前

    我最近开始深入低级操作系统编程。我目前正在(非常缓慢地)阅读两本旧书《XINU》和《Build Your Own 32 Bit OS》,以及我上一个问题中优秀的SO建议的一些资源, How to get started in operating system development .

    可能只是我还没有在这些资源中遇到它,但这可能是因为这些资源中的大多数都是在无处不在的多核系统之前编写的,但我想知道的是,中断在多核/多处理器系统中是如何工作的。

    例如,假设DMA想要发出文件读取操作已完成的信号。哪个处理器/内核确认有中断信号?是处理器/核心启动了文件读取吗?是哪个处理器/内核先到达它吗?

    2 回复  |  直到 17 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

    查看 IoConnectInterrupt 您可以找到ProcessorEnableMask函数,该函数将选择允许运行 InterruptService 常规(ISR)。
    根据这些信息,我可以假设在低水平的某个地方(见 Adam's post)可以指定将中断路由到哪里。

    旁注文件操作与中断和/或dma没有直接关系。文件操作是一种文件系统概念,其转换为低级的东西取决于文件系统所在的总线,它可能是IDE或SATA磁盘,甚至可能是usb存储。在这种情况下,扇区读取将被转换为usb总线上的3个逻辑操作,usb主控器驱动程序将提供中断服务,但它与原始文件读取操作并没有真正的关系,这可能会以任何方式拆分为较小的事务。

        2
  •  3
  •   Windows programmer    17 年前

    在过去,中断会影响所有处理器。在现代,某些类型的硬件可以由操作系统编程,以向特定的处理器发送中断。当然,如果你可以动态地而不是静态地选择一个处理器,你就不会想将中断发送到启动I/O的任何处理器,你会想将其发送到当前负担最小、可以最有效地启动下一个I/O操作的任何处理器和/或当前负担最小、能够最有效地执行等待结果的线程的任何处理器。

    推荐文章