Download Descargar - Sistemas Operativos I

Document related concepts
no text concepts found
Transcript
Threads








Introducción
Modelos Multi-Threading
Problemas con Threads
Pthreads
Threads en Solaris 2
Threads en Windows 2000
Threads en Linux
Threads en Java
Procesos Single y
Multithreaded
Beneficios

Velocidad de Respuesta

Recursos Compartidos

Economía

Utilización de Arquitecturas MP
Ejemplo

Procesador de texto con 3 threads
Threads de Usuario


Los threads son manejados por
librerías a nivel de usuario
Ejemplos
- POSIX Pthreads
- Mach C-threads
- Solaris threads
Kernel Threads


Brindados por el Kernel
Ejemplos
- Windows 95/98/NT/2000
- Solaris
- Tru64 UNIX
- BeOS
- Linux
Modelos Multithreading

Muchos-a-Uno

Uno-a-Uno

Muchos-a-Muchos
Muchos-a-Uno


Muchos threads a nivel del usuario
mapeados a un solo thread del
kernel. Muchos threads a nivel
usuario mapeados a un solo thread
del kernel.
Usado en sistemas que no brindan
threads en el kernel.
Modelo de Muchos-a-Uno
Uno-a-Uno


Cada thread a nivel de usuario es
mapeado a un thread del kernel.
Ejemplos
- Windows 95/98/NT/2000
- OS/2
Model Uno-a-Uno
Modelo Muchos-a-Muchos




Permite mapear varios threads a
nivel de usuario a varios threads
del kernel.
Permite al sistema operativo crear
una cantidad suficiente de threads.
Solaris 2
Windows NT/2000 con el paquete
ThreadFiber
Modelo Muchos-a-Muchos
Problemas





Semántica de las llamadas al
sistema fork() and exec()
Finalización de threads
Manejo de señales
Pool de threads
Información específica del thread
Pthreads



Estándar POSIX (IEEE 1003.1c)
API para la creación de threads y
sincronización.
La API especifica el
comportamiento de la librería de
threads, la implementación se
delega al desarrollador de la
librería.
Comúnmente encontrada en
sistemas operativos UNIX.
Threads en Solaris 2
Procesos en Solaris
Threads en Windows 2000


Implementa el modelo de mapeo
uno-a-uno.
Cada thread contiene
- un identificador del thread
- un conjunto de registros
- stacks separados del usuario y
kernel
- área de datos separada
Linux Threads



Linux los llama tareas en lugar de
threads.
La creación de un thread es a
través de la llamada al sistema
clone().
Clone() permite a una tarea hija
compartir el área de direcciones de
a tarea padre (proceso).
Java Threads

Los threads de Java se pueden
crear:

Extendiendo la clase Thread
 Implementando la interfaz
Runnable

Los threads de Java son
administrados por la JVM.
Java Thread States