Hilos y Procesos en Sistemas Operativos: Conceptos y Modelos
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 4,01 KB
Conceptos Fundamentales: Hilos y Procesos
Un hilo, denominado también proceso ligero, es una unidad básica de utilización de la CPU.
Comprende: la ID de hilo, un contador de programa, un conjunto de registros y una pila.
Un proceso tradicional, o de peso completo, tiene un solo hilo de control.
Beneficios del Multihilo
- Grado de respuesta: Una operación multihilo en una aplicación interactiva puede permitir que el programa continúe en ejecución, incluso si una de sus partes está bloqueada o realizando una operación tardada, lo que incrementa el grado de respuesta para el usuario.
- Compartir recursos: Por omisión, los hilos comparten la memoria y los recursos del proceso al que pertenecen.
- Economía: Debido a que los hilos comparten recursos del proceso al que pertenecen, es más económico crear hilos y cambiar su contexto.
- Utilización de arquitecturas multiprocesador: Cada hilo puede estar ejecutándose en paralelo en un procesador diferente. En una arquitectura de un solo procesador, la CPU generalmente se mueve entre cada hilo de manera tan rápida que existe la ilusión de paralelismo.
Tipos de Hilos
Hilos de Usuario
Ventajas:
- La conmutación entre hilos puede realizarse rápidamente sin ayuda del SO.
- La creación y administración es más rápida.
- La planificación puede hacerla la aplicación.
- Portabilidad entre SO diferentes.
Desventajas:
- Si el SO no sabe de la existencia de hilos en una tarea, el bloqueo de un hilo produce el bloqueo del resto de hilos de la misma tarea.
- Dos hilos de una misma tarea no se pueden ejecutar en procesadores diferentes.
Hilos de Kernel
Ventajas:
- El bloqueo de un hilo en una tarea no afecta al resto.
Desventajas:
- La conmutación de un hilo a otro se hace vía eventos que trata el SO (mayor sobrecarga).
Modelos Multihilo
Modelo de Varios a Uno
Mapea múltiples hilos a nivel de usuario en un hilo de kernel. La administración de hilos se realiza en el espacio de usuario, por lo que es eficiente, aunque todo el proceso se bloqueará si un hilo hace una llamada al sistema para bloqueo.
- No es posible que varios hilos se ejecuten en paralelo si el sistema es multiproceso.
- Las bibliotecas de hilos a nivel de usuario implementadas en los SO que no soportan hilos de kernel lo utilizan.
Modelo de Uno a Uno
Mapea cada hilo de usuario en un hilo de kernel.
- Permite que otro hilo se ejecute cuando un hilo hace una llamada al sistema de bloqueo.
- Permite que varios hilos se ejecuten en paralelo en un sistema multiprocesador.
- La creación de un hilo de usuario requiere la creación de un hilo de kernel correspondiente. Esto restringe el número de hilos que soporta el sistema.
Modelo de Varios a Varios
Combina (multiplexa) muchos hilos a nivel de usuario con un número menor o igual de hilos de kernel.
Hilos Ligados y No Ligados, y LWP
Un hilo ligado a nivel de usuario está unido permanentemente a un LWP (Lightweight Process).
Ligar un hilo es útil cuando se requiere un tiempo de respuesta corto, como en una aplicación de tiempo real.
Un hilo no ligado no está unido para siempre a algún LWP. Todos los hilos no ligados en una aplicación se multiplexan en la reserva de LWP disponibles para la aplicación. Por omisión, los hilos son no ligados.
Un LWP tiene un conjunto de registros para el hilo a nivel de usuario que está en ejecución, así como información de memoria y de administración. Un hilo de kernel solo tiene una estructura de datos pequeña y una pila.