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

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

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

    我最近开始潜入低级操作系统编程。我正在(非常缓慢地)阅读两本旧书《XINU》和《构建你自己的32位操作系统》,以及fine SO人员在我上一个问题中建议的一些资源, How to get started in operating system development .

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

    3 回复  |  直到 7 年前
        1
  •  6
  •   Community CDub    7 年前

    调查 IoConnectInterrupt 函数您可以找到ProcessorEnableTask,它将选择允许运行 InterruptService 例行程序(ISR)。
    根据这些信息,我可以假设在低水平的某个地方(参见 Adam's post)可以指定中断路由的位置。

    另一方面,注释文件操作实际上与中断和/或dma没有直接关系。文件操作是一种文件系统概念,根据文件系统所处的总线将其转换为较低级别。它可能是IDE或SATA磁盘,甚至可能是usb存储。在这种情况下,扇区读取将转换为usb总线上的3个逻辑操作,usb主机控制器驱动程序将提供中断服务,但它和最初的文件读取操作并没有真正的联系,那个可能是以任何方式被拆分成更小的事务。

        2
  •  3
  •   Windows programmer    16 年前

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