Der Begriff "Kernel-Threads" kann verwendet werden, um sich auf tatsächliche Threads zu beziehen, die vollständig im Kernel-Space ausgeführt werden, oder er kann sich auf User-Space-Threads beziehen, die vom Kernel geplant werden. Der Begriff "kernelunterstützte" Threads bezeichnet letztere, Threads, die im Benutzerbereich ausgeführt werden, aber vom Kernel unterstützt werden, was normalerweise bedeutet, dass der Kernel sie plant.
"Threads auf Benutzerebene" bedeutet normalerweise Threads, die für den Benutzerbereich sichtbar sind. Das ist, was Sie erstellen, wenn Sie die Funktion "Thread erstellen" Ihres Threading-Standards aufrufen. Im Allgemeinen bezeichnet der Begriff "Thread auf Benutzerebene" einen Thread, der vom Anwendungscode erstellt wird, unabhängig davon, wie er vom System implementiert wird. Es kann sich um einen reinen User-Space-Thread mit wenig bis gar keiner Kernel-Unterstützung handeln, oder es kann sich um einen vom Kernel geplanten Thread handeln.
Der pthreads-Standard kann als reine User-Space-Threads (bei denen der Kernel den Prozess und der Prozess die Threads plant), kernelunterstützte Threads (bei denen der Kernel die Threads direkt plant) oder als hybrider Ansatz (bei dem der Kernel plant) implementiert werden ein Thread auf Kernelebene, der dann im Benutzerbereich einen Thread auf Benutzerebene plant). Der Standard verlangt keine bestimmte Art der Implementierung. Die häufigste Implementierung ist die 1-zu-1-Zuordnung, bei der jeder Thread auf Benutzerebene einen entsprechenden Thread hat, der vom Kernel geplant wird.