分类:
2010-05-26 17:54:36
在一台运行 Linux 的计算机中,CPU 在任何时候只会有如下四种状态:
【1】 在处理一个硬中断。
【2】 在处理一个软中断,如 softirq、tasklet 和 bh。
【3】 运行于内核态,但有进程上下文,即与一个进程相关。
【4】 运行一个用户态进程。
其中,【1】、【2】和【3】是运行于内核空间的,而【4】是在用户空间。其中除了【4】,其他状态只可以被在其之上的状态抢占。比如,软中断只可以被硬中断抢占。
Linux 内核模块是一段可以动态在内核装载和卸载的代码,装载进内核的代码便立即在内核中工作起来。Linux 内核代码的运行环境有三种:用户上下文环境、硬中断环境和软中断环境。
这里又看到“用户上下文环境”,联想起兄的一篇日志《Know which context you are in》,,谈一下自己的理解:
Linux 内核代码的运行环境有三种:进程上下文、硬中断环境和软中断环境。
进程上下文是由它的用户级上下文(user-level-context)、寄存器上下文(register context)以及系统级上下文(system-level-context)组成。(摘自Unix操作系统设计6.3节)
所谓用户上下文应为用户级上下文,是进程上下文的一部分,在很多地方都用的比较模糊,像今天看到的这篇文章中“用户上下文”其实指的就是“进程上下文”。