Reputation: 47
I have a process with multiple threads. If one of my threads invokes a system call like gettimeofday()
, does the kernel only switch that thread out of context to service the system call, or does it switch the entire process (and all other threads) out of context?
Upvotes: 2
Views: 1645
Reputation: 1
Most system calls may involve a context switch (if other tasks are runnable) and switch the processor's state to kernel mode.
But gettimeofday
(and e.g. getpid()
) are unusual. with recent kernels they use VDSO to avoid it (and even to avoid the syscall
or sysenter
instruction to switch to kernel mode).
Upvotes: 2
Reputation: 100013
To the linux kernel, a thread is a process. So the kernel has no interest in the other threads of your process when one of them makes a syscall.
Upvotes: 1