Kernel Threads Vs. User Threads Kernel threads are created and managed by the kernel - including context switching, and assignment to CPUs - they can really run in parallel on several CPUs. User threads are created and managed by a user-mode library - the kernel knows nothing about them, and thus they can never run in parallel. User threads are 'lighter' to create and in context-switching, because they do not require switching into kernel mode. Kernel threads blocking on a system call do not block the other kernel threads in their process - User threads do.