Sop U-3 Hilos Flashcards
Procesos e hilos
Hilo→ Contexto de ejecución que se planifica de forma independiente, pero que comparte un mismo espacio de direcciones con otros hilos. Es una línea de ejecución de un proceso.
Proceso→ Conjunto de uno o más hilos y los recursos del sistema asociados (como la memoria, datos, archivos abiertos y dispositivos). Es un programa en ejecución, una tarea, controlado y ejecutado por el procesador.
Imagina una fábrica de juguetes:
Proceso: La fábrica en sí es un proceso. Tiene un objetivo principal: producir juguetes. Para lograrlo, cuenta con una gran cantidad de recursos: maquinaria, materias primas, trabajadores, etc. La fábrica es independiente de otras fábricas y tiene su propia área de trabajo.
Hilo: Cada línea de producción dentro de la fábrica es un hilo. Cada línea se encarga de una parte específica del proceso de fabricación: cortar madera, pintar piezas, ensamblar juguetes, etc. Todas las líneas comparten los mismos recursos de la fábrica (maquinaria, espacio), pero trabajan de forma independiente y pueden avanzar a diferentes ritmos.
Entornos monohilo y multihilo
Imagina una cocina:
Monohilo: En una cocina monohilo, solo una persona puede realizar una tarea a la vez. Si estás cocinando pasta, no puedes freír un huevo al mismo tiempo, debes esperar a terminar una tarea para empezar la siguiente. Es como si tuvieras un solo quemador en la estufa.
Multihilo: En una cocina multihilo, varias personas pueden cocinar diferentes platos al mismo tiempo. Una persona puede estar cocinando pasta, otra freyendo huevos y otra preparando una ensalada. Todos comparten los mismos utensilios, ingredientes y espacio de la cocina (el espacio de direcciones), pero trabajan de forma independiente. Es como si tuvieras una estufa con varios quemadores.
Ahora, veamos cómo se relaciona con la informática:
Monohilo: Un programa monohilo ejecuta una sola tarea a la vez. Si el programa está esperando a que el usuario ingrese datos, no puede realizar ninguna otra operación hasta que se reciban los datos.
Multihilo: Un programa multihilo puede ejecutar varias tareas al mismo tiempo. Por ejemplo, un reproductor de música puede reproducir una canción mientras muestra la carátula del álbum.
Elementos de los procesos
Espacio de direcciones virtuales que contiene la imagen del proceso.
oAcceso protegido a los procesadores, otros procesos, archivos y recursos de Entrada/Salida.
oPuede tener uno o más hilos
Edificio: El edificio completo representa el sistema operativo. Cada piso del edificio es un espacio de direcciones virtuales.
Apartamento: Cada apartamento es un proceso. Cada proceso tiene su propio apartamento, donde guarda sus pertenencias (datos, código, etc.). Este apartamento es el espacio de direcciones virtuales del proceso.
Habitantes: Los habitantes del apartamento son los hilos. Cada habitante puede moverse libremente por su apartamento y utilizar las cosas que hay dentro (los recursos del proceso).
Elementos de los hilos de un proceso
✓Estado del hilo (ejecución, listo, bloqueado).
✓Contexto del procesador → contador de programa independiente.
✓Una pila de ejecución.
✓Almacenamiento estático para las variables locales.
✓Acceso a memoria y recursos del proceso compartidos con el resto de los hilos del mismo proceso.
Estados del hilo:
Ejecución: El trabajador está ensamblando un juguete en este momento.
Listo: El trabajador está esperando su turno para trabajar, pero tiene todas las herramientas listas.
Bloqueado: El trabajador está esperando una pieza específica para poder continuar su trabajo.
Contexto del procesador:
Contador de programa: Es como una lista de tareas que el trabajador debe realizar. Indica qué tarea debe hacer a continuación.
Pila de ejecución: Es como una pequeña mesa auxiliar donde el trabajador guarda las herramientas que está utilizando actualmente y los resultados parciales de su trabajo.
Almacenamiento estático: Es como un casillero personal donde el trabajador guarda sus herramientas y materiales de trabajo.
Acceso compartido: Todos los trabajadores del equipo comparten la misma área de trabajo (memoria) y las mismas herramientas grandes (recursos del proceso).
Ventajas de los hilos
→ Facilita el diseño de aplicaciones que deben realizar distintas funciones simultáneamente.
→ Creación de un nuevo hilo más rápido que un proceso
.→ Terminación de un hilo más rápido que un proceso.
→ Rapidez en cambiar de un hilo a otro.
→ Los hilos de un mismo proceso se comunican sin acceder al núcleo.
→ Es más eficiente relacionar un conjunto de hilos que un conjunto de procesos.
Desventajas
→ La suspensión de un proceso implica la descarga del espacio de direcciones fuera de la memoriaprincipal. Puesto que todos los hilos de un proceso comparten el mismo espacio de direcciones, todos deben entrar en estado suspendido al mismo tiempo. De manera similar, la terminación de unproceso supone terminar con todos los hilos dentro de dicho proceso
Un proceso es como una obra de teatro.
Los hilos son los actores.
El espacio de direcciones es el escenario.
Suspender un proceso es como bajar el telón.
Terminar un proceso es como finalizar la obra.
✓Estados de un hilo
Los principales estados de un hilo son: Ejecución, Listo y Bloqueado. No hay estado de Suspensión ya que esos estados pertenecen al concepto de procesos.
oCreación:cuando se crea un nuevo proceso, se crea un hilo para ese proceso. Luego, un hilode un proceso puede crear otros hilos dentro del mismo proceso.
oBloqueo: un hilo espera por un suceso.
oDesbloqueo: se produce el suceso por el que un hilo se bloqueó.
oTerminación: cuando un hilo finaliza, se liberan su contexto y sus pilas
Implementación de hilos
Hilos a nivel de usuario (ULT, User Level Thread)
Todo el trabajo de gestión de hilos lo realiza la aplicación y el núcleo no es consciente de la existencia de hilos.
Es posible programar cualquier aplicación como multihilo mediante una biblioteca de hilos, la cual crea una estructura de datos para el nuevo hilo y cede el control a uno de los hilos del proceso que esta en estado de listo.
Cuando el control pasa a la biblioteca, se guarda el contexto del hilo actual, que se restaura cuando el control pasa de la biblioteca al hilo.
Todas las operaciones se llevan a cabo en el espacio de usuario y dentro de un mismo proceso.
Ventajas
→ El proceso no debe cambiar a modo núcleo para gestionar hilos. Con ello se evita la sobrecarga de dos cambios de modo (de usuario a núcleo y de núcleo a usuario).
→ Los ULT pueden ejecutarse en cualquier sistema operativo. La biblioteca de hilos es un conjunto de utilidades de aplicación compartidas por todas las aplicaciones.
Desventajas
→ Cuanto un ULT ejecuta una llamada al sistema no solo se bloquea ese hilo, sino todos los hilos del proceso.
→ En una estrategia ULT pura, una aplicación multihilo no puede aprovechar las ventajas de multiprocesadores. El núcleo asigna un proceso a un solo procesador a la vez.
Imagina una fábrica de juguetes:
Fábrica: La fábrica es el sistema operativo.
Jefe de producción: El jefe de producción es el núcleo del sistema operativo.
Equipos de trabajo: Cada equipo de trabajo es un proceso.
Trabajadores: Cada trabajador dentro del equipo es un hilo.
Hilos a nivel de usuario (ULT):
En este escenario, los equipos de trabajo (procesos) se organizan y gestionan a sí mismos sin que el jefe de producción (núcleo) se involucre en los detalles de cómo se organizan las tareas dentro de cada equipo.
Biblioteca de hilos: Es como un manual de procedimientos que los equipos utilizan para organizarse y asignar tareas a los trabajadores.
Cambio de contexto: Cuando un trabajador termina una tarea y otro comienza, es como un cambio de contexto. El equipo mismo se encarga de gestionar este cambio sin que el jefe de producción tenga que intervenir.
Ventajas de los ULT:
Mayor eficiencia: Al no involucrar al jefe de producción en cada cambio de tarea, se ahorra tiempo y recursos.
Flexibilidad: Los equipos pueden organizarse de manera muy flexible, adaptándose a las necesidades de cada proyecto.
Portabilidad: El manual de procedimientos (biblioteca de hilos) puede utilizarse en cualquier fábrica (sistema operativo).
Desventajas de los ULT:
Limitaciones en tareas bloqueantes: Si un trabajador (hilo) tiene que esperar a que llegue una materia prima (llamada al sistema), todo el equipo se detiene hasta que la materia prima llegue.
Dificultad para aprovechar múltiples procesadores: Si hay varias fábricas (procesadores), cada equipo (proceso) solo puede trabajar en una fábrica a la vez, incluso si hay varios trabajadores disponibles.
Hilos a nivel de núcleo (KLT, Kernel Level Thread)
Todo el trabajo de gestión de hilos lo realiza el núcleo. Ejemplos: Windows 2000, Linux y OS/2.El núcleo mantiene la información de contexto del proceso como un todo y la de cada hilo dentro del proceso.
Ventajas
→ El núcleo puede planificar simultáneamente múltiples hilos del mismo proceso en múltiples procesadores.
→ Si se bloquea uno de los hilos de un proceso, el núcleo puede planificar otro hilo del mismo proceso.
Desventaja
→ El paso del control de un hilo a otro dentro del mismo proceso necesita un cambio de modo a modo de núcleo.
Imagina una fábrica de juguetes, pero esta vez con un supervisor muy organizado:
Fábrica: Sigue siendo el sistema operativo.
Supervisor: El supervisor es el núcleo del sistema operativo.
Equipos de trabajo: Los equipos de trabajo siguen siendo los procesos.
Trabajadores: Los trabajadores siguen siendo los hilos.
Hilos a nivel de kernel:
En este escenario, el supervisor (núcleo) está muy involucrado en la gestión de los trabajadores (hilos) dentro de cada equipo (proceso). Él lleva un registro detallado de lo que hace cada trabajador y puede asignar tareas a diferentes trabajadores en diferentes áreas de la fábrica.
Gestión del núcleo: El supervisor decide qué trabajador hace qué tarea y cuándo. Él puede mover a un trabajador de una máquina a otra si es necesario.
Cambio de contexto: Cuando un trabajador necesita cambiar de tarea, el supervisor se encarga de guardar todo lo que el trabajador estaba haciendo y de prepararlo para la nueva tarea.
Ventajas de los hilos a nivel de kernel:
Mayor flexibilidad: El supervisor puede asignar tareas a los trabajadores de manera más eficiente, aprovechando al máximo los recursos de la fábrica.
Mejor rendimiento: Si una máquina se descompone, el supervisor puede rápidamente asignar a otro trabajador a una máquina diferente.
Multiprocesamiento: Si hay varias fábricas (procesadores), el supervisor puede asignar diferentes trabajadores a diferentes fábricas al mismo tiempo.
Desventaja de los hilos a nivel de kernel:
Mayor sobrecarga: Cada vez que un trabajador necesita cambiar de tarea, el supervisor debe intervenir, lo que puede generar una pequeña demora.
Mixto
La creación de hilos, así como la mayor parte de la planificación y sincronización de los hilos de una aplicación se realizan por completo en el espacio de usuarios. Ej: Solaris
En un método combinado, los múltiples hilos pueden ejecutarse en paralelo en múltiples procesadores y las llamadas al sistema bloqueadoras no necesitan bloquear todo el proceso.
Los métodos combinados son como una fábrica donde los equipos de trabajo tienen mucha libertad para organizarse, pero donde el supervisor siempre está atento para ayudar cuando es necesario. Esto permite que la fábrica funcione de manera eficiente y productiva.