免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2080 | 回复: 1
打印 上一主题 下一主题

特权级别切换时堆栈切换的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-06 19:42 |只看该作者 |倒序浏览
任务内不同特权级的变换,在堆栈切换的时候,资料上说,TSS中包含有指向0级、1级和2级堆栈的指针。在特权级发生向内层(高特权级)变换时,根据变换到的特权级使用TSS中相应的堆栈指针对SS及ESP寄存器进行初始化,建立起一个空栈。 在建立起内层堆栈后,处理器先把外层堆栈的指针SS及ESP寄存器的值压入内层堆栈,以使得相应的向外层返回可恢复原来的外层堆栈。
问题来了,既然已经用高特权级相应的堆栈指针初始化了SS和ESP寄存器,是不是这两个寄存器原来的值被覆盖了?那么如何实现将原来低特权级SS和ESP的值压入高特权级(内核)堆栈呢?我百思不得其解,望高手帮我解答。

论坛徽章:
0
2 [报告]
发表于 2009-04-06 22:53 |只看该作者
我觉得应该是在切换之前就保存现场了吧。
而不是先切换再保存。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP