Skip to main content

User-level versus kernel-level threads

Short answer

User-level threads are managed by a library in user space; creation is fast but a blocking call halts the entire process. Kernel-level threads are scheduled by the OS, support true parallelism on multicores, but operations involve higher overhead due to system calls.

Define threads and differentiate between user-level threads and kernel-level threads.

A thread is a lightweight unit of execution within a process: it has its own program counter, registers and stack but shares the code, data and resources of the process with its sibling threads.

PointUser-level threadKernel-level thread
Managed byUser thread library in user spaceThe operating system kernel
Kernel awarenessKernel sees only one processKernel knows and schedules each thread
Creation / switchFast (no system call)Slower (system call, kernel work)
BlockingOne blocking call blocks the whole processOther threads continue to run
MultiprocessorCannot run threads in parallel on several CPUsCan run on different CPUs in parallel
SchedulingBy the library, application-specificBy the kernel scheduler
PortabilityEasy; runs on any OSOS dependent
OverheadLowHigher
ExamplesGreen threads (early Java), GNU Portable ThreadsWindows threads, Linux threads (including Pthreads on Linux)

✓ Answer checked by Claude Opus 5.5 (high effort)

All Embedded System chapter 6 questions →