处理器总处于以下状态中的一种:
(1)用户态,运行于进程上下文。
(2)内核态,运行于进程上下文,内核代表进程运行于内核空间;
(3)内核态,运行于中断上下文,内核代表硬件运行于内核空间。
进程上下文,就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容。
中断上下文,就是中断发生的时候,硬件传递给中断处理程序的关于硬件的一些变量和参数,以及内核需要保存的一些环境,主要是被中断的进程的环境。
Linux内核工作在进程上下文或者中断上下文。
(1)提供系统调用服务的内核代码代表发起系统调用的应用程序运行在进程上下文。
(1)用户态,运行于进程上下文。
(2)内核态,运行于进程上下文,内核代表进程运行于内核空间;
(3)内核态,运行于中断上下文,内核代表硬件运行于内核空间。
进程上下文,就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容。
中断上下文,就是中断发生的时候,硬件传递给中断处理程序的关于硬件的一些变量和参数,以及内核需要保存的一些环境,主要是被中断的进程的环境。
Linux内核工作在进程上下文或者中断上下文。
(1)提供系统调用服务的内核代码代表发起系统调用的应用程序运行在进程上下文。
(2)中断处理程序,异步运行在中断上下文。中断上下文和特定进程无关。
参考资料:
2. 进程上下文和中断上下文
3, 软中断上下文能够睡眠吗