Chinaunix

标题: TR寄存器 [打印本页]

作者: memorymyann    时间: 2008-08-25 15:41
标题: TR寄存器
CPU中的TR寄存器是用来指向当前任务的TSS。这里所谓的当前任务应该怎么理解???到底是个什么样的东东??
作者: flw2    时间: 2008-08-25 15:52
原帖由 memorymyann 于 2008-8-25 15:41 发表
CPU中的TR寄存器是用来指向当前任务的TSS。这里所谓的当前任务应该怎么理解???到底是个什么样的东东??


比如正在执行某个进程,突然来了个中断,那么这时候要切换堆栈,处理器就得从tss里取
还有io权限等
作者: memorymyann    时间: 2008-08-25 16:16
谢谢你的回答,结合中断的内容,我理解了一下,你看看是不是正确的。
TR指向当前任务的TSS,这里的当前任务指的是当前进程(CPU设计者理解的任务和操作系统中的进程不是一个概念,但有点相似,或者可以理解任务是进程的一个子集)。那么TR指向的是当前进程有关的一些信息。其中就有堆栈指针,这里有4个堆栈指针,分别用于0,1,2,3级权限。
中断发生后,如果“门”中的DPL和CPU的权限CPL不一致就会引起堆栈指针的更改,而堆栈指针的来源就是TR指向的TSS中与DPL对应的堆栈指针。
作者: flw2    时间: 2008-08-25 16:36
是这样
作者: zx_wing    时间: 2008-08-25 16:40
原帖由 memorymyann 于 2008-8-25 16:16 发表
谢谢你的回答,结合中断的内容,我理解了一下,你看看是不是正确的。
TR指向当前任务的TSS,这里的当前任务指的是当前进程(CPU设计者理解的任务和操作系统中的进程不是一个概念,但有点相似,或者可以理解任务 ...

不用研究它,过时的技术,应该没有操作系统用它了
作者: flw2    时间: 2008-08-25 16:58
原帖由 zx_wing 于 2008-8-25 16:40 发表

不用研究它,过时的技术,应该没有操作系统用它了

是指什么现在都不用了?
作者: zx_wing    时间: 2008-08-25 17:08
原帖由 flw2 于 2008-8-25 16:58 发表

是指什么现在都不用了?

是的,据我所知windows和linux都不用
原因就是太慢了
作者: flw2    时间: 2008-08-25 17:19
原帖由 zx_wing 于 2008-8-25 17:08 发表

是的,据我所知windows和linux都不用
原因就是太慢了

你说的是直接调用某个任务吧, 寄存器和段还是用着
作者: Solaris12    时间: 2008-08-25 17:55
原帖由 zx_wing 于 2008-8-25 17:08 发表

是的,据我所知windows和linux都不用
原因就是太慢了



Solaris也不用TR切换任务。
作者: zx_wing    时间: 2008-08-25 22:49
原帖由 flw2 于 2008-8-25 17:19 发表

你说的是直接调用某个任务吧, 寄存器和段还是用着

是的,我是在说任务切换。存context的功能还是有的。
实际上x86_64中的TSS已经不支持用于任务切换了,只有存context的功能了
作者: albcamus    时间: 2008-08-26 10:23
据说386走CPU的任务门切换任务,高达300多个时钟周期。
作者: irp    时间: 2008-09-30 03:19
标题: 回复 #11 albcamus 的帖子
NT用它来处理double fault, 典型的是kernel stack overflow
作者: nhuczp    时间: 2008-10-01 17:19
寄存器还是在用暂时不会替换.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2