定义这个概念主要是为了系统安全:内核要和用户程序分开,内核一定要安全不能被用户程序干涉。但有时候用户程序也需要读取内核的某些数据。于是操作系统内核程序开辟一些可以供用用户程序访问的段,但是不允许用户程序写入数据。内核不用知道用户程序的数据.内核不用调用用户程序的数据.内核不用转移到用户程序中来。用户程序只能访问到内核的某些共享的段.我们称这些段为一致代码段。用户程序不能访问内核不共享的段。
于是就有了代码段的一致(Comforming)和非一致的概念:
一致代码段:也就是共享的段。
a、 低特权级程序可以访问高特权级数据。但是特权级不会改变。即:DPL(描述符特权级)<CPL(当前特权级)是跳转成功后,CPL不变,从而体现出一致。
b、 特权级高的程序不允许访问特权级低的数据,这是防止用户篡改核心态的数据。导致核心态执行用户代码。而造成内核崩溃。
非一致代码段:也就是普通代码段。
a、 只允许同级间访问,即只有CPL=DPL才允许转移
b、 绝对禁止不同级间的访问,即用户态不允许访问特权态,特权态不允许访问用户态。
对于数据段:
所有的数据段都是非一致性的,但是与代码段不同,数据段可以被更高特权级的程序访问而无需使用特殊的访问门。