为了账号安全,请及时绑定邮箱和手机立即绑定

线程切换时,线程上下文保存在哪?

线程切换时,线程上下文保存在哪?

慕仙森 2019-04-21 20:43:06
在线程切换时,线程的上下文,比如寄存器状态,它们都被保存在哪个位置?是保存在线程的栈里,还是在TCB里,不敢确定。。刚刚有搜索过,都说会保存,但都没具体到哪个位置是不是不同的操作系统都有各自不同的实现方式?
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

这个要看具体的线程实现。
据我所知,以Linux的pthread为例,它的一个线程,在内核里和进程是同样的调度单位,相关信息都保存在其对应的task_struct结构体里面。
GnuPth这种内核之上的线程库,则采用另一种实现,我没看过源码,但是合理猜测,必然也是用了类似的一个结构体来保存相关信息。
                            
查看完整回答
反对 回复 2019-04-21
?
慕斯709654

TA贡献1840条经验 获得超5个赞

刚才翻书去了,的确有不同的实现方式
事先开辟好的一块固定空间里,比如TCB,Linux的task_struct
线程自己的运行栈里,这样每次上下文保存的地址可能不同
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 615 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信