|
|
|
|
|
yes
|
|
|
要检查CPL低于DPL
|
|
|
刚才又查了下手册,满足用CALLGATE从低级到高级的要求如下:
CPL低于GATE的DPL RPL低于GATE的DPL CPL低于目标代码段的DPL |
|
|
访问门,必须满足:
max(cpl,rpl)<=dpl(gate) |
|
|
和gate的目标代码段的dpl无关
|
|
|
访问是无关,但如果CPL没有低于目标段的DPL,那就会引起GP
|
|
|
不会gp的,否则怎样通过门从ring3进入ring0呢?
|
|
|
如果CPL高于目标DPL,那就是从高特权级转到低特权级,肯定会GP
修正刚才的说法,不是CPL低于目标段DPL,而是不高于 |
|
|
谢谢两位的解答!
我想知道的是,从Ring3通过调用门进入Ring0,则CPL=RPL=DPL(调用门);但是获得调用门的选择器后,虽然选择器的RPL=0,但是CPL不是还等于3吗,这样就不满足CPL<=DPL(Ring3代码段)的条件了,怎样实现特权的转换呢?????? |
|
|
更正一下,刚才说得的CPL<=DPL,DPL为Ring0目标代码段的DPL。
|
|
|
所谓CPL低于DPL是指CPL的数值(3)大于DPL的数值(0)
|
|
|
通过调用门是先设置中断处理函数的地址,再触发中断
为什么windows允许设置中断向量表呢, |
|
|
这个去问盖茨吧
|
|
|
学习。
|
|
|
还是看linux的代码明白,
哪需要这么复杂的东西啊,intel为了兼容不是在整我们嘛 |
|
|
windows下这些段是不是故意给人改写的啊
linux下像idt都是在0级的,你三级的程序想去改写它? |
|
|
人家就是故意的,2K下你能随便修改吗?
INTEL的设计是有道理的,LINUX和W2K之所以只用两层只不过是为了兼容 |
|
|
你想编写32-BIT保护模式的操作系统吗?建议读英文原版的技术资料.
|
|