Solución:
No estoy seguro de que las respuestas sean correctas aquí, así que permítanme publicar mi versión.
Existe una diferencia entre el proceso: LWP (proceso ligero) y el hilo del usuario. Dejaré a un lado la definición del proceso, ya que es más o menos conocida y me centraré en LWP vs user threads
. LWP es lo que hoy en día se denominan esencialmente hilos. Originalmente, hilo de usuario significaba un hilo que es administrado por la propia aplicación y el kernel no sabe nada al respecto. LWP, por otro lado, es una unidad de programación y ejecución por parte del kernel.
Ejemplo: supongamos que el sistema tiene otros 3 procesos en ejecución y la programación es por turnos sin prioridades. Y tienes 1 procesador / núcleo.
Opción 1. Tiene 2 subprocesos de usuario que utilizan un LWP. Eso significa que, desde la perspectiva del sistema operativo, tiene UNA unidad de programación. Totalmente hay 4 LWP en ejecución (otros 3 + 1 tuyo). Su LWP obtiene 1/4 del tiempo total de CPU y, dado que tiene 2 subprocesos de usuario, cada uno de ellos obtiene 1/8 del tiempo total de CPU (depende de su implementación)
Opcion 2. Tienes 2 LWP. Desde la perspectiva del sistema operativo, tiene DOS unidades de programación. En total hay 5 LWP en funcionamiento. Su LWP obtiene 1/5 del tiempo total de CPU CADA UNO y su aplicación obtiene 2/5 de CPU.
Otra diferencia aproximada: LWP tiene pid (id de proceso), los subprocesos de usuario no.
Por alguna razón, los nombres se complicaron un poco y nos referimos a LWP como subprocesos.
Definitivamente hay más diferencias, pero consulte las diapositivas. http://www.cosc.brocku.ca/Offerings/4P13/slides/threads.ppt
EDITAR:
Después de publicar, encontré un buen artículo que explica todo con más detalles y está en mejor inglés del que escribo. http://www.thegeekstuff.com/2013/11/linux-process-and-threads/
Desde MSDN, subprocesos y procesos:
Los procesos existen en el sistema operativo y corresponden a lo que los usuarios ven como programas o aplicaciones. Un hilo, por otro lado, existe dentro de un proceso. Por esta razón, los hilos a veces se denominan procesos ligeros. Cada proceso consta de uno o más subprocesos.
Basado en el libro de Tanenbaum “Distributes Systems”, los procesos livianos generalmente se refieren a una forma híbrida de subproceso a nivel de usuario y subproceso a nivel de kernel. Un LWP se ejecuta en el contexto de un solo proceso y puede haber varios LWP por proceso. Además, cada LWP puede ejecutar su propio hilo (a nivel de usuario). Las aplicaciones de subprocesos múltiples se construyen creando subprocesos (con el paquete de biblioteca de subprocesos) y, posteriormente, asignando cada subproceso a un LWP.
La mayor ventaja de usar este enfoque híbrido es que crear, destruir y sincronizar subprocesos es relativamente económico y no necesita ninguna intervención del kernel. Además de eso, siempre que un proceso tenga suficientes LWP, una llamada al sistema de bloqueo no suspenderá todo el proceso.