在软件中断期间,cpu是否切换到中断上下文



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

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

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

在ARM处理器和linux内核的情况下,

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

346/*=============================================================================347*SWI处理程序
348*----------------------------------------------------------------------------
349*/
350
351.对齐5
352入口(矢量_swi)
353#ifdef CONFIG_CPU_V7M
354 v7m_exception_entry
355#其他
356子sp,sp,#S_FRAME_SIZE



461 sub-lr,lr,#4
462 str-lr,[sp,#S_PC]
463 b ret_fastrongyscall
464#endif
465 ENDPROC(矢量_swi)

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

最新更新