Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个多线程的进程。如果我的一个线程调用类似的系统调用gettimeofday(),内核是否仅将该线程从上下文中切换出来以服务系统调用,还是将整个进程(和所有其他线程)从上下文中切换出来?
gettimeofday()
大多数系统调用可能涉及上下文切换(如果其他任务可运行)并将处理器的状态切换到内核模式。
但是gettimeofday(和例如getpid())是不寻常的。对于最近的内核,他们使用VDSO来避免它(甚至避免使用syscallorsysenter指令切换到内核模式)。
gettimeofday
getpid()
syscall
sysenter
对于linux内核来说,线程就是一个进程。因此,当其中一个进行系统调用时,内核对进程的其他线程不感兴趣。