2012-05-07 30 views
9

Encontré una respuesta a la pregunta here. Pero no entiendo algunas ideas en la respuesta. Por ejemplo, se dice que el proceso liviano comparte su espacio de direcciones lógicas con otros procesos. Qué significa eso? Puedo entender la misma situación con 2 hilos: ambos comparten un espacio de direcciones, por lo que ambos pueden leer cualquier variable del segmento bss (por ejemplo). Pero tenemos muchos procesos diferentes con diferentes secciones de bss y no sé cómo compartirlos.¿Cuál es la diferencia entre el proceso ligero y el hilo?

+1

DUP Posible de http://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a-thread – Gray

+0

Usted parece ser muy confundido acerca de algunos conceptos. Sugiero que primero investigue la definición de hilo y proceso. – Tudor

+0

@Gray, Entiendo la diferencia entre procesos e hilos muy claramente. El problema es entender los procesos ligeros. – Allok

Respuesta

1

De MSDN, Threads and Processes: existen

procesos en el sistema operativo y se corresponden con 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 refieren a como procesos livianos. Cada proceso consta de uno o más hilos .

0

Un proceso contiene uno o más subprocesos y un subproceso puede hacer cualquier cosa que un proceso puede hacer. También los hilos dentro de un proceso comparten el mismo espacio de direcciones debido a que el costo de comunicación entre hilos es bajo ya que está utilizando la misma sección de códigos, sección de datos y recursos del SO, por lo que todas estas características del hilo lo convierten en un "proceso liviano".

4

No estoy seguro de que las respuestas sean correctas aquí, así que déjame publicar mi versión.

Existe una diferencia entre el proceso: LWP (proceso liviano) y el hilo del usuario. Dejaré la definición del proceso a un lado ya que eso es más o menos conocido y me concentraré en LWP vs user threads. LWP es lo que esencialmente se llaman hilos de hoy. Originalmente, el hilo del 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 que la programación es round-robin sin prioridades. Y tienes 1 procesador/núcleo.

Opción 1. Tienes 2 hilos de usuario usando un LWP. Eso significa que, desde la perspectiva del sistema operativo, tiene UNA unidad de programación. Totalmente hay 4 LWP en ejecución (3 otros + 1 tuyo). Su LWP obtiene 1/4 del tiempo total de CPU y como tiene 2 subprocesos de usuario, cada uno de ellos obtiene 1/8 del tiempo total de CPU (depende de su implementación)

Opción2. Tienes 2 LWP. Desde la perspectiva del sistema operativo, tiene DOS unidades de programación. Totalmente hay 5 LWP en ejecución. 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 hilos de usuario no.

Por alguna razón, nombrar no tiene problemas y nos referimos a LWP como hilos.

Definitivamente hay más diferencias, pero consulte las diapositivas. http://www.cosc.brocku.ca/Offerings/4P13/slides/threads.ppt

EDIT:

Después de publicar, me encontré con un buen artículo que explica todo en más detalles y está en Inglés mejor de lo que escribo. http://www.thegeekstuff.com/2013/11/linux-process-and-threads/

Cuestiones relacionadas