在Solaris 10中获取进程的桁架时,我发现了以下声明
<pid>/2: 70.7602 context(1, 0xFC47ABF8)
请解释一下这个系统调用context
的意思。在这次调用之后,我看到线程2表现得像另一个线程4。
<ucontext.h>
int getcontext(ucontext_t *ucp);
int setcontext(const ucontext_t *ucp);`
这两个调用在Solaris中保存和恢复上下文。我不肯定,因为在McDougal和Mauro'Solaris Internals'中没有明确提到context()。我假设context()
是对应这些api入口点的实际内核调用。也许context(1, <addr> )
对应getcontext()
,我不知道。
上下文切换是操作系统允许给定进程将系统资源用于给定量程(时间片)的方式。调度的一部分。