Ejercicio 2 - Hilos y sincronización · Sistemes Operatius I UB Examen: Memoria y Concurrencia
Tema: Hilos, sincronización y planificación de la CPU · Del examen Examen: Memoria y Concurrencia
Enunciado
Ejercicio 2. Concurrencia con hilos, sincronización y memoria virtual
Conteste a las siguientes cuestiones relativas a la gestión de hilos, sincronización y arquitectura de memoria:
Ejercicio 2. Concurrencia con hilos, sincronización y memoria virtual
Conteste a las siguientes cuestiones relativas a la gestión de hilos y sincronización:
a.
¿Cuál es la función del objeto cerrojo pthread_mutex_t lock al modificar una variable global compartida (como egg_count) y de qué manera previene errores de concurrencia?
b.
Desde la perspectiva de la memoria, ¿qué diferencias existen entre un hilo y un proceso? Justifique la conveniencia del uso de hilos en tareas de conteo concurrente.
c.
¿Qué efectos tiene prescindir de la llamada a pthread_mutex_unlock en el flujo de ejecución?
f.
¿Cómo repercute el empleo de múltiples hilos en el rendimiento global si la ejecución tiene lugar en una máquina con un único núcleo de procesamiento?
h.
¿Qué función desempeña pthread_join en la coordinación entre el hilo principal ( main) y los hilos trabajadores ( obs1 y obs2)?

Solución
Según los criterios oficiales de corrección
a. ¿Cuál es la función del objeto cerrojo pthread_mutex_t lock al modificar una variable global compartida (como egg_count) y de qué manera previene errores de concurrencia?
Solución: Garantiza la exclusión mutua en la sección crítica donde se actualiza egg_count. Al impedir que dos hilos lean y modifiquen la variable de forma simultánea, evita condiciones de carrera (race conditions), asegurando la atomicidad de las operaciones de incremento y la integridad de los datos.
b. Desde la perspectiva de la memoria, ¿qué diferencias existen entre un hilo y un proceso? Justifique la conveniencia del uso de hilos en tareas de conteo concurrente.
Solución: Los procesos cuentan con espacios de direcciones virtuales aislados e independientes. En contraposición, los hilos de un mismo proceso comparten el espacio de memoria (código, variables globales y montón/heap), manteniendo únicamente su propia pila (stack) y registros. Resulta idóneo en este escenario porque permite a los observadores acceder directamente a la variable global egg_count con máxima eficiencia, evitando la sobrecarga de mecanismos IPC más complejos.
c. ¿Qué efectos tiene prescindir de la llamada a pthread_mutex_unlock en el flujo de ejecución?
Solución: Si un hilo no libera el cerrojo tras culminar su sección crítica, cualquier otro hilo que intente adquirirlo (e incluso él mismo más adelante) quedará bloqueado indefinidamente, desencadenando una situación de interbloqueo (deadlock) que detiene la progresión del programa.
f. ¿Cómo repercute el empleo de múltiples hilos en el rendimiento global si la ejecución tiene lugar en una máquina con un único núcleo de procesamiento?
Solución: Con una sola CPU no existe paralelismo real; los hilos se ejecutan de manera pseudo-concurrente mediante multiplexación temporal. Lejos de reducir el tiempo total de ejecución, el rendimiento suele disminuir ligeramente debido a la sobrecarga computacional (overhead) que conllevan los continuos cambios de contexto entre hilos.
h. ¿Qué función desempeña pthread_join en la coordinación entre el hilo principal (main) y los hilos trabajadores (obs1 y obs2)?
Solución: Sincroniza la finalización de los hilos de trabajo deteniendo la ejecución de la función main hasta que obs1 y obs2 hayan concluido sus respectivas tareas. Esto asegura que la lectura e impresión del resultado acumulado de egg_count se efectúe de forma consistente con todos los incrementos finalizados.
La explicación paso a paso, hecha con IA, es Premium. Premium
Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.
Ejercicio 2 - Planificación de la CPU · Examen: Memoria y Concurrencia ›