【发布时间】:2017-11-28 08:29:43
【问题描述】:
下面这句话是什么意思:“内核在进程上下文中执行”?
这是否意味着如果 CPU 正在执行某个进程,然后发生了某个中断(系统调用、按键等),CPU 将保持当前正在运行的进程的页表加载和那么它会执行驻留在进程内核空间的中断处理程序吗?
如果是这个意思,那么好像中断处理程序是在进程上下文中执行的,那么中断上下文是什么意思呢?
【问题讨论】:
标签: linux linux-kernel operating-system
下面这句话是什么意思:“内核在进程上下文中执行”?
这是否意味着如果 CPU 正在执行某个进程,然后发生了某个中断(系统调用、按键等),CPU 将保持当前正在运行的进程的页表加载和那么它会执行驻留在进程内核空间的中断处理程序吗?
如果是这个意思,那么好像中断处理程序是在进程上下文中执行的,那么中断上下文是什么意思呢?
【问题讨论】:
标签: linux linux-kernel operating-system
进程上下文是它的当前状态。
我们需要保存当前正在运行的进程的context,以便它可以在处理中断后恢复。
进程上下文基本上是它的当前状态(它的寄存器中的内容)。
esp
ss
eip
cs
and more.
我们需要保存instruction pointer (EIP) 和CS (Code Segment) 以便在处理完中断后我们可以从停止的地方继续运行。
中断处理程序代码驻留在Kernel 内存中。一旦发生中断,我们立即从用户模式切换到内核模式。当前运行进程的状态被保存,一部分在用户栈上,另一部分在内核栈上(取决于架构)。假设它是x86,则通过从TSS 和Interrupt descriptor table 加载适当的ss、cs、esp 和eip 来运行中断处理程序。
【讨论】: