sufeng
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2004-08-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1498回复:9

很糊涂的问题,大家多指点。

楼主#
更多 发布于:2002-11-27 19:50
几个问题:
1.系统启动进入内核之后ring0,最后必然要回到用户态,这其中的切换需要什么代价?
是如何切换的?比如设置哪些状态,保护什么东东标志?
比如ring3可以通过 int 2e进入ring0,那么ring0怎么回到ring3.

2.关于system service.
我想win 32 api最终会调用native api。但是ntdll.dll和ntoskrnl.exe都会导出Ntxxxx,那么这个native api到底是哪个导出的?
ntdll.dll中的Ntxx通过int 2e进入内核, ntoskrnl.exe的Zwx也通过int 2e进入内核,为什么还要设计两个东东都通过int 2e进入,一个不就完了吗?
ntdll.dll运行ring3态,可以被用户程序调用,ntoskrnl.exe运行ring0态,是否只能被kernel mode程序调用? Zwxx通过int 2e重入ring0时,由于pre mode=ring0,所以没有安全检查??

---------------
后两个问题我同学问:
3.windows 2000为何要把gui,user也搞进kernel,有何大用?

4.为何system service用int 2e进入,而不用callgate??

-------------------
有点罗嗦,但是确实很糊涂,希望得到大家的指点。
sufeng
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2004-08-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-28 12:33
多谢ysy
呵呵,大家继续讨论。
sufeng
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2004-08-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-28 12:36
下面是pjf的解释。
------------------------------
1.系统启动进入内核之后ring0,最后必然要回到用户态,这其中的切换需要什么代价?
是如何切换的?比如设置哪些状态,保护什么东东标志?
//范围so大,岂是几句能说清楚的
比如ring3可以通过 int 2e进入ring0,那么ring0怎么回到ring3.
//ft iretd ,sysexit,......

2.关于system service.
我想win 32 api最终会调用native api。但是ntdll.dll和ntoskrnl.exe都会导出Ntxxxx,那么这个native api到底是哪个导出的?
//最后进入的是同一个由SSDT纪录的函数里,前者所做的预处理多一
//点而已。另外ntoskrnl导出的NT***与ntdll的不同,ntoskrnl的
//Zw***才用了int2e等。

ntdll.dll中的Ntxx通过int 2e进入内核, ntoskrnl.exe的Zwx也通过int 2e进入内核,为什么还要设计两个东东都通过int 2e进入,一个不就完了吗?
//显然,自己想想看

ntdll.dll运行ring3态,可以被用户程序调用,ntoskrnl.exe运行ring0态,是否只能被kernel mode程序调用?
//of course

Zwxx通过int 2e重入ring0时,由于pre mode=ring0,所以没有安全检查??
//right

---------------
后两个问题我同学问:
3.windows 2000为何要把gui,user也搞进kernel,有何大用?
//说法不准确,效率

4.为何system service用int 2e进入,而不用callgate??
//1、看看unix的核,想想它们的关系;2、看看由那些机器有callgate;3、XP在大多数机器上都不用int2e。

sufeng
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2004-08-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-28 18:38
呵呵,真正弄清楚决非一件容易的事情。
也许很多人知道结论,但是不一定就清楚他真正的内部实现机制,也是个似懂非懂。

要想搞定,要自己专心研究,看书,查资料,讨论也是必不可少,也许一个提示就茅塞顿开。

continue.

sufeng
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2004-08-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-29 13:07
多谢了。
游客

返回顶部