实在不明白(保护模式问题)

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

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧