我们知道,从Linux内核版本3.3开始,内核代码自带NVMe SSD驱动程序,运行在内核态。但是,用户的应用程序又都是在用户态运行,所以驱动跑在内核态会有些不便。哪些不便呢?不急,我们先来科普一下Linux的用户态和内核态区别。
在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等。如果所有的程序都能使用这些指令,那么你的系统一天死机n回就不足为奇了。所以,CPU将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令。Intel的CPU将特权级别分为4个级别:RING0[……]