Vous êtes sur la page 1sur 24

SISTEMAS DISTRIBUIDOS

Sistema de Operación
BASODO EN HILOS
(THREADS)
EN UNA PC
Procesos - Hilos

Dos características importantes de proceso


• Es la unidad de recurso a la cual el SO le asigna recursos.
• Es la unidad de despacho .
En los modernos OS estas 2 características son tratadas
independientemente
• unidad de recurso referida como proceso o tarea
• unidad de despacho referida como thread
Procesos - Hilos
1) Proceso: (proceso pesado)
– Unidad de propiedad de recursos del proceso
– Tiene muchos atributos
– Es caro de crear, de destruir, de cambiar de contexto, etc.
2) Hilo de ejecución: (proceso ligero, tarea, etc.)
– Actividad concurrente dentro de un proceso pesado
– Pueden existir varios hilos de ejecución en el mismo proceso
– Comparten los recursos del proceso (memoria, ficheros, etc.)
– Tienen pocos atributos (contexto) y son baratos de gestionar
Hilos
Un Hilo LWP ( Proceso de peso ligero) es flujo de ejecución
de un proceso. Es la unidad básica de utilización de la CPU y
está constituida por:
– PC
– Conjunto de registros
– Espacio para pila
Los Hilos comparten con otros Hilos: como es:
-- Código
– Datos
– Archivos abiertos, señales.
Hilos
Hilos (Multihilo – Roscado Individual

Multithreading : cuando un OS soporta múltiples threads


dentro de un simple proceso.

Roscado Individual: cuando el OS no reconoce el concepto de


hilo.

MS-DOS: un solo proceso, un solo hilo


UNIX: múltiples procesos usuarios pero un solo hilo por
proceso.
SOLARIS y NT: soportan múltiples hilos
Hilos
• Thread tienen estados de ejecución
– running (corriendo)
– Ready (lista)
– Blocked (obstruido)
• Los Hilos tiene que apilar la ejecución.
• El contexto de los hilos se salva cuando pierde el
CPU.
• Terminar un proceso acaba con todos los hilos ó
threads del mismo.
Único y Multihilo
thread1 thread2 thread3
Hilo Thread Thread
Control Control Control
Usuario Bloqueado Block Block
TARJETA Apilar
DE CIRCUITO Usuario User User
IMPRESO PCB A Apilar Stack Stack
Usuario Núcleo
Dirección Apilar
Espacio
User Nucleo Kernel Kernel
Address a Apilar Stack stack
Single threaded process Spaces
model

Multithreaded Process Model


Único y Multihilo
Ventajas thread vs Proceso
• Poco tiempo para crear nuevos threads en un
proceso existente.
• Poco tiempo para terminar threads.
• Poco tiempo para Traspuesta entre hilos.
Ejemplos de Threads
•Un thread realiza un menú display y lee los datos de
entrada del usuario, mientras que otro thread ejecuta
comandos usuarios.

•Un Servidor de archivos (file server) sobre LAN, un


thread para cada requerimiento
Threads
• Los threads tienen acceso al espacio de memoria y
recursos del proceso.
Cuando un threads altera un espacio de memoria, todos los otros del
threads del proceso lo ven.
Un archivo abierto por un thread esta disponible a los otros.

Así que los threads se pueden comunicar entre ellos


sin invocar el kernel. Sin embargo es necesario
sincronizar sus actividades para no tener
inconsistencia en la data.
Threads
Todos los threads corren independientemente uno
de otro, en el mismo espacio de direcciones y no son
visibles fuera del proceso.

Si los threads comparten recursos implica que un


cambio de CPU entre threads no es costoso, en
comparación con el cambio de CPU entre procesos.
Principalmente porque no se requiere realizar
trabajos de administración de memoria
Subprocesos de nivel de usuario

Implementación de Threads
• Existen dos grandes categorías para la implementación
de los threads

– Subprocesos de nivel de usuario “User-Level Threads” (ULT)


– Hilos de nivel de Núcleo “Kernel-Level Threads” (KLT)
U L T (Subprocesos de nivel de usuario)
• El manejo de los threads es hecho por la aplicación
mediante el uso de librerías de threads.
• El OS no está conciente de los threads a nivel de
usuario .
• El traspuesta entre Hilos no requiere pasar a modo
kernel .
• Si un thread es bloqueado, causará que todo el
proceso se bloquee
Threads a nivel de usuario (ULT)
User-level threads
Subprocesos de Nivel de Usuario

Hilos de
Threads User Usuario
Biblioteca
Library Space Y espacio
Kernel
Space

Pure User Level


Nivel de Usuario puro
Threads Library
Paquete de rutinas para gerenciar los ULTs
Contiene código para

• Crear y destruir threads


• Pasaje de mensaje y data entre threads.
• Planificación de los threads.
• Salvar y recuperar contexto de threads.
Ventajas de ULT
• El switching entre threads no requiere de modos
privilegiados (modo kernel). Es decir, los cambios de
contexto entre los hilos a nivel de usuario son rápidos, ya
que no involucran llamadas al sistema.
• La planificación de los threads se realiza dentro del
proceso. El scheduling puede ser específico a la
aplicación.
• ULTs puede correr sobre cualquier OS. Necesita solo la
libraría de threads.
• El sistema operativo crea sólo un hilo en el núcleo por
cada proceso
Inconvenientes de ULT
• System call en muchos OS son bloqueantes, esto
implica que cuando un thread ejecuta un System call,
tanto el thread como TODOS los threads del proceso
están bloqueados.
• El kernel puede solamente asignar procesos a
procesadores. Dos threads dentro del mismo proceso NO
pueden correr simultáneamente sobre dos procesadores
distintos.
Threads a nivel de kernel (KLT)
• El sistema operativo soporta los threads y proporciona un
conjunto de llamadas al sistema para su manipulación.
• El OS crea un thread kernel por cada thread de usuario.
• El kernel mantiene la información de contexto tanto : de
los procesos como los threads.
• Cambio de contexto entre threads es hecho por el kernel.
• Los threads a nivel de kernel se bloquean y despiertan en
forma independiente.
• El scheduling de los threads es hecho por el kernel.
Threads a nivel de Kernel (KLT)

User -Level threads

User
Space
Kernel
Space
Kernel-level threads

Kernel-level threads
Enfoque Combinado
Algunos OS dan la facilidad de los dos esquemas
ULT/KLT. El cual trata de combinar las ventajas de los
puros esquemas (ULT/KLT) mientras minimiza sus
desventajas.
Un ejemplo de ello es SOLARIS.
En un esquema combinado múltiples threads dentro de
una aplicación pueden correr en paralelo sobre múltiples
procesadores y un system call no bloquea el proceso.
Enfoque Combinado
• Creación de threads es hecho en el espacio usuario
• Scheduling y sincronización de threads
mayoritariamente es hecho en el espacio usuario
• Multiples ULTs son mapeados en menos o igual
número de KLTs.
• El programador puede ajustar el número de KLTs
• Combina lo mejor de ambos enfoques,

Vous aimerez peut-être aussi