【问题标题】:Pthread segment registersPthread 段寄存器
【发布时间】:2011-10-04 02:24:00
【问题描述】:

我承认我对这个问题做了很少的研究(只是一些浅的谷歌搜索)。线程包(特别是 pthreads,但我的问题适用于所有 x86 unix 用户线程库)是否为每个线程保存段寄存器(fs、cs、ds 等)?换句话说,每个线程都有自己的段寄存器副本吗?

【问题讨论】:

    标签: unix x86 pthreads segments


    【解决方案1】:

    在大多数现代操作系统上,段寄存器具有由操作系统确定的特定含义。操作系统线程库将确保始终为每个线程正确设置寄存器。例如在 Windows 上,FS 寄存器指向具有线程特定数据的段,因此每次线程切换都会更新该段,而 DS 寄存器指向进程范围的段,因此对于进程中的所有线程都是相同的。

    如果平台允许用户设置段寄存器值,那么我希望它们能够在线程切换中正确保存,就像任何其他寄存器一样。

    一般来说,我希望段寄存器被保留,因为这比查找它们“应该”是什么更容易,并且导致意外的可能性最小。

    【讨论】:

    • 太棒了。我问这个问题是因为我最近在 C 中开发了(出于学习目的)一个线程库。谢谢!
    猜你喜欢
    • 2016-11-11
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2020-01-30
    • 2015-06-30
    • 2018-11-16
    相关资源
    最近更新 更多