用户态和内核态
Linux的架构中,很重要的一个能力就是操纵系统资源的能力。但是,系统资源是有限的,如果不加限制的允许任何程序以任何方式去操纵系统资源,必然会造成资源的浪费,发生资源不足等情况。为了减少这种情况的发生,Linux制定了一个等级制定,即特权。Linux将特权分成两个层次,以0和3标识。0的特权级要高于3。换句话说,0特权级在操纵系统资源上是没有任何限制的,可以执行任何操作,而3,则会受到极大的限制。
我们把特权级0称之为内核态,特权级3称之为用户态。
Intel x86架构使用了4个级别来标明不同的特权级权限。R0实际就是内核态,拥有最高权限。而一般应用程序处于R3状态–用户态。在Linux中,还存在R1和R2两个级别,一般归属驱动程序的级别。在Windows平台没有R1和R2两个级别,只用R0内核态和R3用户态。在权限约束上,使用的是高特权等级状态可以阅读低等级状态的数据,例如进程上下文、代码、数据等等,但是反之则不可。R0最高可以读取R0-3所有的内容,R1可以读R1-3的,R2以此类推,R3只能读自己的数据。