标签: multithreading operating-system
我已经读过用户级线程的优点是它们不需要内核调用来进行切换。加载寄存器(IP,SP)不需要系统调用吗?我使用函数 - getcontext,setcontext在C中编写用户级线程?这些函数不会调用系统调用吗?
答案 0 :(得分:2)
(大多数)用户模式代码可见的寄存器也可以用户模式代码保存/恢复。
由于用户模式线程(至少通常)没有被抢先切换,因此通常不需要保存所有寄存器。典型的实现使用setjmp和longjmp来保存/恢复必要的状态。这些通常不涉及任何用户/内核模式切换。