Conceptos básicos de
Programación Concurrente
Concepto
El concepto de hilo Los hilos comparten la UCP de la misma
lo estudiamos a continuación. Se trata forma que lo hacen los procesos,
de otro modelo de ejecución que pueden crear otros hilos y se pueden
también brinda la posibilidad de realizar bloquear.
programación concurrente.
HILOS
Un hilo es la unidad de ejecución de un Estado de un Hilo
proceso y está asociado con una secuencia de instrucciones, un conjunto de Procesos .- Nuevo. El hilo ha sido creado pero aún no ha sido activado. Cuando se
registros y una pila. Normalmente, cuando se crea un proceso, el sistema Un proceso puede ejecutar varias secuencias de instruc- active pasará al estado preparado.
operativo crea su primer hilo (hilo primario) el cual puede, a su vez, crear hilos ciones concurrentemente (simultáneamente), cada una de las - Preparado. El hilo está activo y está a la espera de que le sea asignada la
adicionales. cuales es un hilo que se ejecuta de manera independiente, aunque compartiendo el UCP.
Los hilos comparten la UCP de la misma forma que lo hacen los procesos, espacio de memoria virtual del proceso y los recursos asignados por el sistema operativo - En ejecución. El hilo está activo y le ha sido asignada la UCP (sólo los
pueden crear otros hilos y se pueden bloquear. al mismo. Sin hilos activos, preparados, pueden ser ejecutados).
embargo, cada hilo posee su propio contador de programa, además de otros regis- - Bloqueado. El hilo espera que otro elimine el bloqueo. Un hilo bloqueado
tros, y su pila. puede estar:
? Dormido. El hilo está bloqueado durante una cantidad de tiempo determi-
nada (por ejemplo, tres segundos), después de la cual despertará y pasará
al estado preparado.
- Pila: área de memoria donde se mantienen las variables locales y la informa-
ción necesaria para continuar con el método llamante.
- Código: área de memoria donde se mantiene el código del programa.
- Datos globales: área de memoria donde se mantienen los datos globales.
- Área dinámica: área de memoria para asignación dinámica. - Su propio espacio de direcciones,
- sus variables,
- ficheros abiertos,
1.-Bloqueado
- referencias a procesos hijo, Esperando. El hilo está esperando a que ocurra alguna cosa: una condi-
- contador de programa, registros, pila, 2.-En ejecución
ción, una operación de E/S o adquirir la propiedad de un objeto de sincro-
- elementos de sincronismo, etc. 3.-Preparado
nismo. Cuando ocurra, pasará al estado preparado.
- Muerto. El hilo ha finalizado (está muerto) pero todavía no ha sido recogido
por su padre. Los hilos muertos no pueden alcanzar ningún otro estado.
Amisadai Hernandez
Sanchez
La transición entre estados está controlada por el planificador: parte del
núcleo del sistema operativo encargada de que todos los hilos que esperan
ejecu-
tarse tengan su oportunidad. Si un hilo en ejecución no puede continuar,
pasará al
estado bloqueado;