有关TSS的问题

发布于 2022-10-15 05:27:14 字数 252 浏览 23 评论 0

本帖最后由 tomkedy 于 2011-06-01 23:04 编辑

在看ULK3(中文)里“进程“一章。开始感觉TSS应该是所有进程共享一个TSS,但到后面发现似乎跟我之前的理解不太一样。尤其是:第109页,第4段里的“......因为Linux为每个处理器而不是为每个进程使用TSS”。

各位,在Linux里,TSS的使用到底是怎样的?可以的话,举个简单的进程切换例子说明一下..........

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

甜味拾荒者 2022-10-22 05:27:14

回复 1# tomkedy

三生殊途 2022-10-22 05:27:14

每个处理器一个TSS段,切换进程时把TSS里的esp0改成新进程的内核栈底所处的位置。

说谎友 2022-10-22 05:27:14

每个处理器一个TSS段,切换进程时把TSS里的esp0改成新进程的内核栈底所处的位置。
tempname2 发表于 2011-06-01 23:31

楼上,你的意思是在linux里,所有进程都共享同一个TSS段,但在切换进程时,该共享的TSS的内容会被修改成“即将运行的进程“的相关内容(比如:esp0的修改)。是这样吗?

红尘作伴 2022-10-22 05:27:14

回复 4# tomkedy

应该是一个核心用一个TSS,每个核心都有一个tr寄存器。TSS段里还有表IO权限的信息,进程切换时也有可能会修改这些。

云巢 2022-10-22 05:27:14

本帖最后由 tomkedy 于 2011-06-02 13:40 编辑

回复  tomkedy

应该是一个核心用一个TSS,每个核心都有一个tr寄存器。TSS段里还有表IO权限的信息,进程 ...
tempname2 发表于 2011-06-02 13:22

楼上,不太明白你说的“一个核心用一个TSS,每个核心都有一个tr寄存器“......

我的理解是比如在i386里,有一个专门装载TSS的寄存器tr,它跟gdtr,ldtr是一样的,是用于装载TSS结构体的。这个tr理所当然的是共享的,因为整个CPU只有这一个tr寄存器。但TSS段是否是所有进程共享的呢?我不太清楚。

因此我想搞清楚,“在linux里,所有进程都共享同一个TSS段,但在切换进程时,该共享的TSS的内容会被修改成“即将运行的进程“的相关内容(比如:esp0的修改)“,是不是这样的?

那些过往 2022-10-22 05:27:14

回复 6# tomkedy

多核CPU时,每个核心都有这些寄存器。在一个核心上运行的进程共用一个TSS段。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文