【问题标题】:Does during the software interrupt cpu switches to the interrupt context?在软件中断期间cpu会切换到中断上下文吗?
【发布时间】:2013-12-15 11:44:12
【问题描述】:

我知道当系统调用发生时会产生软件中断。该软件中断使 cpu 模式从用户模式切换到内核模式。据我了解,在硬件中断上下文切换期间,发生从用户(进程)上下文到中断上下文。但是在软件中断期间也会发生同样的事情吗? 我也尝试了很多文档,但我无法推断出满意的答案。

【问题讨论】:

    标签: linux linux-kernel linux-device-driver device-driver


    【解决方案1】:

    系统调用中断处理程序在中断上下文中运行,就像任何其他中断处理程序一样,但它只是切换到内核代码,然后立即离开中断上下文。

    请注意,大多数现代 CPU 不会使用软件中断实现系统调用,而是使用 SYSCALL 之类的东西。

    【讨论】:

      【解决方案2】:

      如果是 ARM 处理器和 linux 内核,

      在软件中断控制期间跳转到http://lxr.free-electrons.com/source/arch/arm/kernel/entry-common.S中定义的vector_swi例程。

      346 /*============================================= ================================== 347 * SWI 处理程序
      348 *------------------------------------------------ -----------------------------------------
      349 */
      350
      351 .align 5
      第352章 第353章 #ifdef CONFIG_CPU_V7M
      354 v7m_exception_entry
      第355章 第356章 .
      .
      .
      461 子 lr,lr,#4
      462 str lr,[sp,#S_PC]
      463 b ret_fast_syscall
      第464章 第465章

      当前执行上下文存储在执行 swi 指令的同一进程的堆栈中。然后系统开始执行上面定义的例程。

      【讨论】:

        猜你喜欢
        • 2016-10-30
        • 2017-06-01
        • 2017-11-19
        • 2015-12-20
        • 1970-01-01
        • 2017-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多