因为中断会引起Linux从用户态切入到内核态,为了描述中断程序运行的外围环境,我们需要理解Linux中执行上下文这一概念。
1 执行上下文的基本理念
我们先抛开Linux复杂的框架,回到最基本的原型系统,后续复杂的处理都是在基本的原型系统上一个一个版本生长出来的。所谓的把程序放到CPU上去执行,本质是为PC指针赋值,让CPU开始进入目标程序逻辑并被这个程序逻辑俘获。
CPU被俘获就是当前PC指针只能根据当前代码逻辑跳转(顺序执行,无条件转移,条件转移,函数调用,函数返回),这个俘获体现出相当的本地性,如有一个while(1){...},PC就会在这个while loop里面不停的转圈。每一个进程本质就是一个大的loop,如果不出意外,CPU一旦开始进入这个loop,就会一直被这个loop俘获,没有意外产生,PC永远都不会跳出loop,这个是由程序逻辑的连贯性和完备性所决定的。
PC指针被俘获体现出的本地性,让应用程序的执行逻辑产生了“我"(this)的感觉:CPU在忠实的执行我的代码,我决定了PC的下一条指令,各个运算的结果跟我的设计一致,我掌控了这一切。
只要让CPU执行满足: