首页
社区
课程
招聘
对windows NT tss的困惑
发表于: 2008-12-3 10:39 6620

对windows NT tss的困惑

2008-12-3 10:39
6620
tss是用来任务切换的时候保存处理器状态,嗯这个没有问题,linux里面就是这么做的,但是combojiang大大在http://bbs.pediy.com/showthread.php?t=6206 曾经说过“TSS的设计意图是为了在任务切换的时候保存处理器状态,从执行效率的考虑出发,Windows NT并没有使用这个特征,它只维护一个TSS供多个进程共享。”。。那么我就不明白了,windows nt是怎么处理进程切换的问题,仅靠一个tss应该是处理不了进程切换的吧,windows是不是还有采用其他办法保存那些寄存器呢。。。。求大大帮忙。。。。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 242
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
NT系列为了兼容各种硬件平台,用自己的的方法保存进程环境的

你关心的应该X86下的地址空间和线程上下文、IO位图之类。
线程上下文在KTHREAD(或者ETHREAD?自己去看吧)的CONTEXT与中保存
地址空间说白了就是个页表。页表地址是在EPROCESS中保存,线程切换的时候会替换。
IO位图也是在线程切换的时候被COPY到TSS的。

只是凭记忆说的,可能有错,具体还是自己看WRK。可以从KeAttachProcess入手看。
TSS在WINDOWS中应该基本上是跟WINDOWS的任务切换的实际实现是没关系的。
2008-12-3 12:37
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
听ls大大这么一说,感觉明白了不少,具体的我就自己去查了。。非常感谢。。。。
2008-12-3 12:47
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
我只知道任务切换是在时钟中断的时候实现的,有否用tss就不知道了^^^

但我一直不明白combojiang在http://bbs.pediy.com/showthread.php?t=6206中部分例子失败的原因??
2008-12-3 14:15
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我也不明白为什么会失败,combojiang大大也没有给出答案,看看楼下会不会有高人出现给我们解答。。。。。可能MS给tss设置了许多我们不知道的东西,所以出现失败也不奇怪
2008-12-3 16:09
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
张银奎 的<软件调试> 上我记得好像曾一笔带过的说过,windows下, 不是用tss来切换的,是操作系统来完成切换的,本人记的不一定准 仅供参考
2008-12-4 11:51
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
参考一下毛德操的漫谈兼容内核 Windows的线程切换那个的或许对你有用~~
2008-12-4 15:16
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢ls几位大大。。。。正在找资料学习中。。。
2008-12-4 16:14
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
9
那是不可能滴。。。。
2008-12-4 21:15
0
游客
登录 | 注册 方可回帖
返回
//