【发布时间】:2011-08-01 20:43:15
【问题描述】:
我读过用户级线程的优点是它们不需要内核调用来进行切换。加载寄存器(IP,SP)不需要系统调用吗?我在 C 中使用函数 getcontext、setcontext 编写了用户级线程?这些函数不会调用系统调用吗?
【问题讨论】:
标签: multithreading operating-system
我读过用户级线程的优点是它们不需要内核调用来进行切换。加载寄存器(IP,SP)不需要系统调用吗?我在 C 中使用函数 getcontext、setcontext 编写了用户级线程?这些函数不会调用系统调用吗?
【问题讨论】:
标签: multithreading operating-system
(大部分)对用户模式代码可见的寄存器也可以在用户模式代码中保存/恢复。
由于用户模式线程(至少通常情况下)不会被抢先切换,因此您通常不需要保存所有寄存器。一个典型的实现使用 setjmp 和 longjmp 来保存/恢复必要的状态。这些通常不涉及任何用户/内核模式切换。
【讨论】: