免费注册 查看新帖 |

Chinaunix

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

有关TSS [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-14 22:48 |只看该作者 |倒序浏览
在intel手册-卷3里面看到,TSS只能在GDT中定义,不能在LDT和IDT中定义,并且对于 tss.esp0, tss.ss0, tss.ss1, tss.esp1, tss.ss2, tss.esp2 在初始化设置了之后就不能(由CPU)动态更改。那就意味着所有的任务都共用一个TSS。那我就有个疑问:

假设:
A1(ring0),A2(ring0)
B1(ring1),B2(ring1)
C1(ring2),C2(ring2)
D1(ring3),D2(ring3)

TSS的栈指针:
tss.esp0/ss0: stack0
tss.esp1/ss1: stack1
tss.esp2/ss2: stack2

-----------------------------------
那么:

以下的栈切换:

B1 -> A2 : B1自己的堆栈切换至stack0,最后在切换至A2自己的堆栈
C1-> A2  : C1自己的堆栈切换至stack0,最后在切换至A2自己的堆栈

C1 -> B2 : C1自己的堆栈切换至stack1,最后在切换至B2自己的堆栈
D1 -> B2 : D1自己的堆栈切换至stack1,最后在切换至B2自己的堆栈

D1 -> C2 : D1自己的堆栈切换至stack2,最后在切换至C2自己的堆栈

如果按照intel手册上说的,那上面的栈切换都能成功,也就是说,所有的任务转移(涉及到特权级变化,由低到高),在利用TSS切换时都是对应相同的栈(例如转移到0级,都用stack0,不管是那个任务)。

是应该这样理解吗?(我以前一直认为每个任务对应一个TSS,也怕是自己看intel手册的是否翻译错了......)

[ 本帖最后由 ts0612 于 2009-7-14 22:53 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-07-15 22:37 |只看该作者
1、“当前”--- 这个语意
2、TSS 的数量 1 ~ n

论坛徽章:
0
3 [报告]
发表于 2009-07-15 22:45 |只看该作者
说实在的是懒得讲。

看置顶贴子

论坛徽章:
0
4 [报告]
发表于 2009-07-16 05:35 |只看该作者
原帖由 mik 于 2009-7-15 22:45 发表
说实在的是懒得讲。

看置顶贴子

你懂就说,不懂就哪凉快哪去呆着,不要扯。
当版主得像当版主样。
这个版已经冷到一天没有一个帖了,你当版主还这德性?

论坛徽章:
0
5 [报告]
发表于 2009-07-16 13:07 |只看该作者
原帖由 beepbug 于 2009-7-16 05:35 发表

你懂就说,不懂就哪凉快哪去呆着,不要扯。
当版主得像当版主样。
这个版已经冷到一天没有一个帖了,你当版主还这德性?


能不能象个爷样?

这么大的怨气,整个怨妇样!

你来申请呀,有人支持你,我一定申请退位给你。咱个爷们,说到做到。


你以版主是啥?

论坛徽章:
0
6 [报告]
发表于 2009-07-16 18:27 |只看该作者
谁要做你那样的版主?脑筋正常一点。
门口挂几片臭肉,嘴里只会说:懒得说,他就会扯。这样就算爷们了?
别像在家里和父母说话一样任性,在外面,没人吃你这一套。既然做版主,就得先学会好好说话。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP