El término "hilos de kernel" puede usarse para referirse a hilos reales que se ejecutan completamente en el espacio del kernel o puede referirse a hilos de espacio de usuario programados por el kernel. El término "subprocesos admitidos por el núcleo" significa el último, subprocesos que se ejecutan en el espacio del usuario pero son facilitados por el núcleo, lo que generalmente significa que el núcleo los programa.
"Subprocesos a nivel de usuario" generalmente significa subprocesos visibles para el espacio del usuario. Es decir, lo que crea cuando llama a la función "crear hilo" de su estándar de subprocesos. En general, el término "subproceso a nivel de usuario" se utiliza para referirse a un subproceso creado por el código de la aplicación, independientemente de cómo lo implemente el sistema. Puede ser un hilo de espacio de usuario puro con poco o ningún soporte de kernel o puede ser un hilo programado por el kernel.
El estándar pthreads puede implementarse como subprocesos de espacio de usuario puro (donde el núcleo programa el proceso y el proceso programa los subprocesos), subprocesos compatibles con el núcleo (donde el núcleo programa los subprocesos directamente) o un enfoque híbrido (donde el núcleo programa un subproceso a nivel de kernel que luego, en el espacio de usuario, programa un subproceso a nivel de usuario). El estándar no exige ningún medio particular de implementación. La implementación más común es la asignación de 1 a 1, donde cada subproceso de nivel de usuario tiene un subproceso correspondiente que está programado por el núcleo.