进程上下文和中断上下文没有本质区别,进程上下文的产生也是通过中断 int 0x80 来实现的。只不过进程上下文调用的是系统函数,中断上下文调用的是中断服务例程。
进程上下文是一种内核所处的操作模式,此时内核代表进程执行。在进程上下文中,可以通过current 宏关联当前进程。此外进程是以进程上下文的形式连接到内核中的,因此,进程上下文可以睡眠,也可以调用调度程序。
中断上下文和进程上下文的区别来自以下几点:
- 也有current 指针,current 也是指向被中断的线程,但是中断上下文和进程没有关联,所以这个 current 没有用处。
- 因为没有返回例程(backing process),不能睡眠,因此在中断处理程序正在执行时,相应的中断线在所有处理器上都会被屏蔽。
- 具有较为严格的时间限制。因为中断处理程序屏蔽中断,需要快速执行。
参考:
- 《Linux 内核设计与实现》