阅读背景:

中断发生时用户堆栈和内核堆栈的切换

来源:互联网 
如果一个中断产生时任务正在用户代码中执行,那么该中断会引起CPU特权级从3到0的变化,此时CPU就会运行用户态堆栈到内核态堆栈的切换操作。CPU会从当前任务的任务状态段TSS中取得新堆栈的段选择符和偏移量。因为中断服务程序在内核中,属于0级特权级代码,所以48位的内核态堆栈指针会从TSS的ss0和esp0字段中获得。在定位了新堆栈(内核态堆栈)之后,CPU就会首先把原用户态堆栈指针ss和esp压入内核态堆栈,随后把标志积存器eflags的内容和返回位置cs,eip压入内核态堆栈。如果一个中断产生时任务正在用户代码中执行,那么该中断会引起CPU特权级从3到0的变化,此时CPU就会


你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: