1、基础知识
用户态和内核态
一般现代CPU都有几种不同的指令执行级别,Linux总共划分为4个指令执行级别:内核运行在0级别上,1,2级别默认不运行,用户程序运行在3级别上。在内核指令执行级别上,代码可以执行特权指令,访问任意的物理地址。
在用户指令执行级别上,代码的掌控范围会受到限制。只能在对应级别允许的范围内活动。
cs寄存器的最低两位表明了当前代码的特权级:CPU每条指令的读取都是通过cs:eip这两个寄存器:其中cs是代码段选择寄存器,eip是偏移量寄存器。
上述判断由硬件完成。
一般来说在Linux