标签归档:陷阱

陷阱(trap)与中断(interrupt)区别

很多汇编与体系结构的书都没有说清楚陷阱(trap)与中断(interrupt)的区别。造成了读者概念上的混乱。

其实两者大同小异,两者都打断程序执行,保护上下文,转而执行服务例程,之后恢复上下文,继续执行程序。

中断(int)主要由I/O,时钟等外设产生的,他的产生是不可以预期的,与程序运行异步。
而陷阱(trap)是由程序自己产生的,如x86系列上,程序员可以通过int指令来产生陷阱
像DOS的21中断,linux的80中断
MASM(DOS):

int 21h

GAS(Linux):

int 0x80

通过trap服务程序来执行一系列系统提供的功能。

值得注意的是:中断产生时,常常会屏蔽其他的中断,而陷阱产生时则不会。