我有一个包含多个线程的进程。如果我的一个线程调用类似gettimeofday()
这样的系统调用,内核是否仅将该线程切换到上下文以服务系统调用,还是将整个进程(以及所有其他线程)切换到上下文之外?线程调用系统调用时的上下文切换
2
A
回答
2
大多数system calls可能涉及上下文切换(如果其他任务可运行)并将处理器的状态切换到内核模式。
但是gettimeofday
(和例如getpid()
)是不寻常的。使用最近的内核,他们使用VDSO来避免它(甚至避免syscall
或sysenter
指令切换到内核模式)。
1
对于linux内核来说,线程就是一个进程。因此,当其中一个进行系统调用时,内核对您的进程的其他线程没有兴趣。
相关问题
- 1. 通过随机系统调用的上下文切换
- 2. 没有上下文切换的系统调用?
- 3. 线程上下文切换vs进程上下文切换
- 4. 使用SIGALRM切换线程上下文
- 5. 从多线程程序调用系统()
- 6. 睡眠系统调用线程
- 7. 在线程中选择()系统调用?
- 8. 线程之间的上下文切换
- 9. 从进程上下文切换切换线程上下文有多好?
- 10. 多线程:上下文切换
- 11. 上下文切换多线程
- 12. 线程和上下文切换C++
- 13. 调用系统调用时的进程状态?
- 14. 系统(“”)调用
- 15. 调度程序和上下文切换器之间的区别?
- 16. fork系统调用的应用程序
- 17. 为什么系统调用需要切换到内核模式?
- 18. 操作系统中的上下文切换
- 19. CPU的超线程与操作系统的上下文切换之间的关系?
- 20. Vfork系统调用
- 21. sigaction系统调用
- 22. Pipe()系统调用
- 23. python系统调用
- 24. fork系统调用
- 25. sys_execve系统调用
- 26. MIPS:系统调用
- 27. Ptracing系统调用
- 28. 调用C“系统” ++
- 29. 系统调用write
- 30. indir系统调用
Linux是1:1线程;请参见[在维基百科上对线程模型进行线程化](http://en.wikipedia.org/wiki/Thread_%28computing%29#Models),例如N:1,其中系统调用将所有线程切换出来,或M:N,其中1≤some≤all可能会受到影响。 – ephemient 2012-03-15 22:27:25