Ejercicio 12 - definición de hilos

Ejercicio 12 - definición de hilos

de Carolina Smith Porochin -
Número de respuestas: 1

Buenas noches.

No me queda claro la definición de los threads para la resolución.

Se tiene p1h1, p1h2, p1h3 y p2h1. La parte de Mx1 si la comprendo que los tres hilos de P1 son tomados como un solo proceso P1.

Podría explicarme que parte ejecuta cada una de las definiciones anteriores.

Muchas gracias 

Saludos

Carolina


En respuesta a Carolina Smith Porochin

Re: Ejercicio 12 - definición de hilos

de Leonardo Alberro Zimmermann -
Buenas, no me quedó del todo claro tu pregunta, pero intento responder algo

Primero recordar que todo proceso tiene un hilo de ejecución, que es visto como un CPU virtual. Un hilo es una unidad básica de utilización de la CPU.

Dicho esto, P1 tiene su hilo principal (nombrado p1h1) que es quién ejecuta fork() y crea otro proceso con su hilo principal de ejecución p2h1. Si mirás la definición de fork y como se hace para, en un mismo código, diferenciar que ejecuta cada proceso, vas a ver que depende del retorno.

Por lo tanto, el proceso que encuentre la variable pid = 0 (proceso hijo P2h1), va a ejecutar  lo de adentro del if y el p1h1 lo del else. Dentro del else, p1h1 va a ejecutar dos operaciones que crean hilos. Cada hilo creado (p1h2 y p1h3) ejecuta el mismo código (el definido en proc1).

Por último, el modelo Mx1 lo que refleja es como son vistos los hilos de los procesos a nivel del SO. En este caso, el planificador a nivel de SO va a ver un proceso P1 (un hilo de kernel) y otro P2 (un hilo de kernel). Lo que pase a nivel de los hilos, pasa a nivel de usuario. En este caso se define otro planificador, que va a planificar los hilos de cada proceso y va a tener efecto cuando ese proceso tenga asignada la CPU. 

Saludos,
Leonardo