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