Why user threads are mapped to Kernel threads

multithreadingoperating systems

Since user threads are mapped to kernel threads, why don't we create all threads as kernel threads that is a process with zero user thread. Doesn't mapping of user thread to kernel thread create overhead?

Best Answer

That is what is typically done. Most modern platforms don't really have user threads any more. You will find two technologies that are similar to user threads, coroutines and strands/fibers. But they're not pre-emptive. So real user threading has pretty much died out in favor of kernel threads.

(To avoid confusion, by "kernel threads", we mean threads that are scheduled by the kernel, not threads that execute in kernel space. By "user threads", we mean threads that are not individually scheduled by the kernel but where a user space scheduler decides which user space thread to run.)

Related Topic