猿问

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

在线程切换时,线程的上下文,比如寄存器状态,它们都被保存在哪个位置?
是保存在线程的栈里,还是在TCB里,不敢确定。。
刚刚有搜索过,都说会保存,但都没具体到哪个位置
是不是不同的操作系统都有各自不同的实现方式?
慕仙森
浏览 616回答 2
2回答

收到一只叮咚

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

慕斯709654

刚才翻书去了,的确有不同的实现方式事先开辟好的一块固定空间里,比如TCB,Linux的task_struct线程自己的运行栈里,这样每次上下文保存的地址可能不同
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答