Jay Piscean
Jay Piscean

Reputation: 47

Context switching when a thread invokes a system call

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

Answers (2)

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

bmargulies
bmargulies

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

Related Questions