下面这句话是什么意思:* “内核在进程上下文中执行”*?这是否意味着如果CPU正在执行某个进程,然后发生了某个中断(系统调用、按键等),CPU将保持当前运行进程的页表加载,然后它将执行驻留在进程内核空间中的中断处理程序?如果这是它的意思,那么它看起来像中断处理程序是在 * 进程上下文 * 中执行的,那么 * 中断上下文 * 是什么意思呢?
gstyhher1#
流程上下文是其当前状态。我们需要保存当前正在运行的进程的context,以便在处理中断后可以恢复它。进程上下文基本上是它的当前状态(寄存器中的内容)。
context
esp ss eip cs and more.
我们需要保存instruction pointer (EIP)和CS (Code Segment),以便在中断处理后,我们可以从停止的位置继续运行。中断处理程序代码驻留在Kernel内存中。一旦发生中断,我们立即从用户模式切换到内核模式。保存当前运行进程的状态,一部分保存在用户堆栈上,另一部分保存在内核堆栈上(取决于体系结构)。假设它是x86,那么通过从TSS和Interrupt descriptor table加载适当的ss、cs、esp和eip来运行中断处理程序。
instruction pointer (EIP)
CS (Code Segment)
Kernel
x86
TSS
Interrupt descriptor table
ss
cs
esp
eip
v7pvogib2#
process context是在内核中运行的代码,代表用户进程(系统调用或异常)或内核线程。interrupt context是由于硬件中断而在内核中运行的代码;它运行从硬件IRQ触发的中断服务例程。我真的不明白你的问题,但简而言之,不,这不是你说的意思。特别是因为你混淆了软件中断,比如系统调用和硬件中断。
process context
interrupt context
2条答案
按热度按时间gstyhher1#
流程上下文是其当前状态。我们需要保存当前正在运行的进程的
context
,以便在处理中断后可以恢复它。进程上下文基本上是它的当前状态(寄存器中的内容)。
我们需要保存
instruction pointer (EIP)
和CS (Code Segment)
,以便在中断处理后,我们可以从停止的位置继续运行。中断处理程序代码驻留在
Kernel
内存中。一旦发生中断,我们立即从用户模式切换到内核模式。保存当前运行进程的状态,一部分保存在用户堆栈上,另一部分保存在内核堆栈上(取决于体系结构)。假设它是x86
,那么通过从TSS
和Interrupt descriptor table
加载适当的ss
、cs
、esp
和eip
来运行中断处理程序。v7pvogib2#
process context
是在内核中运行的代码,代表用户进程(系统调用或异常)或内核线程。interrupt context
是由于硬件中断而在内核中运行的代码;它运行从硬件IRQ触发的中断服务例程。我真的不明白你的问题,但简而言之,不,这不是你说的意思。特别是因为你混淆了软件中断,比如系统调用和硬件中断。