Está en la página 1de 17

En los SO tradicionales cada proceso tiene

su propio espacio de direcciones y un único


flujo (Hilo) de control.

Es una característica que permite a una


aplicación realizar varias tareas a la vez
(concurrentemente). Los distintos hilos de
ejecución comparten una serie de recursos
tales como el espacio de memoria, los
archivos abiertos, situación de autenticación
Un thread es básicamente una tarea que
puede ser ejecutada en paralelo con otra
tarea.
• El modelo de procesos se basa en 2 conceptos
independientes:
- El agrupamiento de los recursos.
- Ejecución secuencial de un programa.

En un proceso se juntan recursos relacionados.


Un proceso tiene espacios de direcciones
(Códigos y datos del programa, ficheros
abiertos, procesos hijos) que poniendo todos
estos recursos juntos es mas fácil gestionarlos
El otro concepto que incluye un proceso es el
hilo de ejecución o también llamado Threads

Es la unidad básica de utilización del CPU y está


constituida por:
– PC (Contador de programa)
– Conjunto de registros
– Espacio para pila
Los threads comparten con otros threads:
- Código
– Datos
– Archivos abiertos, señales.
Es cuando existen múltiples Threads en un mismo
proceso.
• La primera columna lista algunos de los elementos
compartidos por todos los Threads en un proceso.

• La segunda columna lista algunos elementos privados de


cada Threads
Un thread puede estar en cualquiera de los estados:
 Ejecución
 Bloqueado
 Preparado

Un thread en ejecución tiene en ese momento la CPU y


esta activo.
Un thread bloqueado espera que algún proceso lo
desbloquee
Un thread preparado esta planificado para ejecutarse y
lo hace apenas llegue su turno.
• Es importante que nos
demos cuenta que
cada thread contiene
su propia pila.

• Por ej: Tenemos 4


procesos que están
siendo ejecutados por
el SO cada uno con un
determinada ejecución
diferente a la vez es
ahi donde cada pila
trabaja en cada Thread
correspondiente.
• En un sistema multihilo se inicia con un único
thread es ahi cuando hacemos uso del
procedimiento de biblioteca

• Thread_create.-crea nuevos threads a partir


del thread inicial
• Thread_exit.-cierra el thread una vez
terminado su trabajo.
• Thread_wait.- un thread puede esperar a que
termine la ejecución de otro.
La razón principal para tener threads es que son
numerosas las aplicaciones en las hay varias
actividades que están en marcha simultáneamente
Muchos procesadores de texto ofrecen la posibilidad de
saltar automáticamente todo el fichero en el disco cada
pocos minutos para proteger al usuario de una perdida de
su trabajo diario a causa de un programa que se bloquea,
caída del sistema, fallo de suministro eléctrico.

Es ahi donde el 3er thread se encarga de los


backups(copias de seguridad, respaldos) sin interferir en la
ejecución de los otros dos threads

El modelo de
Trabaja la programación es
RAM mas simple
Una vez listo el thread
obrero, Comprueba si la
petición puede
realizarse a través de
la cache de paginas web

Lee las peticiones


de servicio a
través de la red
Este modelo permite escribir el servidor como una
colección de threads secuenciales.

o El programa de THREAD DESPACHADOR es un bucle


infinito de petición de servicio a tratar.

o El programa THREAD OBRERO también es un bucle


infinito que acepta la petición del despachador para
verificar si la pagina web solicitada existe en la cache
de paginas web, si lo está esta se presenta al cliente
usuario.
Existen 2 formas fundamentales para implementar un
paquete de Threads:

• En el espacio del usuario

• En el núcleo (kernel)
• Implementaciones Hibridas.-
• Son muy útiles en los sistemas distribuidos.
• Las peticiones de servicios son las utilizadas.

• Es un thread que se crea para tratar mensajes


entrantes en el proceso