有人可以帮助澄清我对内核线程的理解。我听说在 Linux/Unix 上,内核线程(例如系统调用的线程)的执行速度比用户线程快。但是,那些用户线程不是由内核调度并使用内核线程执行的吗?有人可以告诉我内核线程和用户线程之间有什么区别,除了它们可以访问不同的地址空间这一事实。它们之间还有什么区别?在单处理器机器上,当用户线程运行时,内核会被挂起是真的吗?
提前致谢,
亚历克斯
最佳答案
I heard that, on Linux/Unix, kernel threads(such as those of system calls) get executed faster than user threads.
这是一个很大程度上不准确的说法。
Is it true that on a single processor box, when user thread is running, kernel will be suspended?
当然。一个 CPU 内核上一次只能运行一个进程。
话虽如此,在许多情况下,内核可以中断正在运行的任务并切换到另一个任务(可能是内核线程):
select()
或 read()
)。 关于multithreading - 用户线程 vs.内核线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17683067/