当发生中断的时候,涉及到由本程序转换到中断处理程序的过程,就有一个保存断点以及程序状态的栈。但是我们知道运行在用户态的程序需要向核心态转换。所以当前运行的程序就会查自己的
C
S
CS
CS的选择子的等级
C
P
L
CPL
CPL,与目标中断向量中的
D
P
L
DPL
DPL相比较,确认是否发生了特权级的转换:
如果发生就把当前
T
S
S
TSS
TSS段中的栈首地址
s
s
ss
ss和
e
s
p
esp
esp压到核心态的栈中,然后再把
C
S
CS
CS和
I
P
IP
IP和
E
F
L
A
G
S
EFLAGS
EFLAGS压入到栈中。如果是异常还要把
e
r
r
c
o
d
e
errcode
errcode压入到栈中,这里面记录了哪个段发生了错误。