简历网站免费,企业网站多少钱,百度网址大全下载到桌面,一个新手怎么做推广【0】README
text description from orange’s implemention of a os . 【1】特权级概述
当当前代码段试图访问一个段或者门时#xff0c;目标段的DPL将会和 CPL 以及段或门选择子的RPL相比较#xff0c;如何比较#xff1a;#xff08;这里是干货#xff09;
#xf…【0】README
text description from orange’s implemention of a os . 【1】特权级概述
当当前代码段试图访问一个段或者门时目标段的DPL将会和 CPL 以及段或门选择子的RPL相比较如何比较这里是干货
1数据段 DPL规定了可以访问此段的最低特权级如一个数据段的DPL1那么只有CPL0或1的程序才有权访问2调用门 DPL规定了当前执行的程序或任务可以访问此调用门的最低特权级这与数据段是一致的3TSS DPL规定了可以访问此TSS的最低特权级这与数据段的规则是一致的4非一致代码段不使用调用门的情况下 DPL规定了访问此段的特权级如一个非一致代码段的特权级为0那么只有CPL0的程序才可以访问5一致代码段和非一致代码段使用调用门的情况下 DPL规定了访问此段的最高特权级如一个一致代码段的DPL2那么CPL0或1 的程序将无法访问此段5.1即是说 一致代码段允许低特权级访问高特权级不允许高特权级访问第特权级5.2通过调用门访问的非一致代码段的特权级验证也是这样 允许低特权级访问高特权级不允许高特权级访问低特权级6以上的特权级检验除开RPL的话都是允许同级特权级代码段间的访问的 【2】RPL-requested privilege level-请求特权级
2.1 RPL 是通过段选择子的第0位和第1位表现出来的2.2即是说 如果RPL的数字比CPL的数字大即其特权级比较小那么RPL将会起决定性作用 反之亦然2.3 os 过程往往用 RPL 来避免低特权级应用程序访问高特权级段内的数据 【3】不同特权级间的转移
使用jmp 或 call 指令可以实现以下4 种转移
3.1 目标操作数包含目标代码段的段选择子3.2 目标操作数指向一个包含目标代码段选择子的调用门描述符3.3 目标操作数指向一个包含目标代码段选择子的TSS3.4 目标操作数指向一个任务门 这个任务门指向一个包含目标代码段选择子的TSS
我们来看看通过调用门来访问代码段是如何进行特权级验证的干货 假设我们想由代码A 转移到 代码B运用一个调用门G 即调用门G中的目标选择子指向代码B的段。进行特权级验证涉及这么几个要素CPL、RPL、代码B 的DPLDPL_B、调用门G 的DPLDPL_G。特权级验证方法如下methods
M1 A访问G 这个调用门时规则相当于访问一个数据段要求 CPL 和 RPL 都小于或者等于DPL_G。即是CPL 和 RPL 需要比 DPL_G 更高的特权级上M2 如果M1的验证通过的话系统还要比较CPL 和 DPL_BM2.1 如果代码B 是一致代码段的话要求DPL_B CPLM2.2 如果代码B 是非一致代码段的话call 指令 和 jmp指令又会不同M2.2.1 在用call 指令时要求 DPL_B CPLM2.2.2 在用jmp时只能是 DPL_BCPL 使用调用门进行转移时特权级检验的规则call jmp 跳转指令 将上图做个总结-Conclusion
C1目标是一致代码段 DPL_BCPLDPL_G RPLDPL_GC2目标是非一致代码段C2.1采用 call 指令调用 DPL_BCPLDPL_G RPLDPL_GC2.2采用 jmp 指令调用 DPL_BCPLDPL_G RPLDPL_G Attention
因为从低特权级 跳转到 高特权级是需要切换堆栈的所以这就必须要用到TSS了。TSS里面存储有ring0~ring2共3个特权级的堆栈信息当跳转到那个ring就将其堆栈抽取出来赋给 ss 和 sp 参见 http://blog.csdn.net/PacosonSWJTU/article/details/48657053