Story Transcript
Threads, SMP y Microkernels
Proceso • Propiedad de los recursos – a un proceso se le asigna un espacio de dirección virtual para guardar su imagen • Calendarización/ejecución – sigue una ruta de ejecución la cual puede estar intercalada con la de otros procesos • Estas dos características son tratadas de forma independiente por el sistema operativo
1
Multithreading • Los sistemas operativos soportan múltiples threads de ejecución dentro de un mismo proceso • MS-DOS soporta un solo thread • UNIX soporta múltiples procesos de usuario pero solo un thread por proceso • Windows XP/Vista, Solaris, Linux, Mach, y OS/2 soportan múltiples threads
2
Proceso • Tienen un espacio de dirección virtual el cual guarda la imagen del proceso • Acceso protegido a procesadores, otros procesos, archivos y recursos de E/S
Thread • Un estado de ejecución (corriendo, listo, etc.) • Se guarda el contexto del thread cuando no se está en ejecucion • Cuenta con una pila de ejecucion • Cuenta con algo de almacenamiento estatico para variables locales • Acceso a la memoria y recursos de sus procesos – todos los threads comparten esto
3
Ventajas de los threads • Toma menos tiempo el crear un nuevo thread que un proceso • Menos tiempo en terminar un thread que un proceso • Menos tiempo en conmutar entre dos threads de un mismo proceso • Como los threads de un mismo proceso comparten memoria y archivos, estos se pueden comunicar entre sí sin invocar el kernel
4
Uso de los Threads en un sistema monousuario de multiprocesamiento • • • •
Trabajo en el transfondo (background) Procesamiento asíncrono Ejecución veloz Programación modular estructurada
Threads • El suspender un proceso involucra suspender todos los threads del proceso ya que comparten el mismo espacio en memoria • La terminación de un proceso, termina todos los threads que contiene
5
Estado de Threads • Estados asociados con un cambio en el estado del thread – Generador (spawn) • Genera otro theread
– Bloqueado – Desbloqueado – Concluido • Libera el contexto de los registros y de las pilas
Llamada a Procedimiento Remoto utilizando Threads
6
Llamada a Procedimiento Remoto utilizando Threads
Threads a nivel de usuario • Toda la administración de threads es llevada a cabo por la aplicación • El kernel no está enterado de la existencia de threads
7
Threads a nivel del kernel • W2K, Linux, y OS/2 son ejemplos de este enfoque • El kernel mantiene información del contexto para el proceso y los threads • La calendarización es llevada a cabo en base a los threads
Enfoques combinados • Solaris es un ejemplo • La creación de threads es llevada a cabo en espacio de usuario • La mayor parte de la calendarización y sincronización de los threads es llevada a cabo en espacio de usuario
8
Relación entre Threads y Procesos Threads:Proceso Descripción 1:1
Cada thread de ejecución es un Proceso único con su propio espacio de memoria y recursos
M:1
Un proceso define un espacio de memoria y propiedad dinámica de recursos. Se pueden crear threads múltiples y ejecutados dentro del proceso.
Ejemplos de S.O. UNIX tradicional
Windows NT, Solaris, OS/2, OS/390, MACH
9
Relación entre Threads y Procesos Threads:Proceso Descripción 1:M
M:M
Ejemplos de S.O.
Un thread puede migrar de un proceso a otro. Esto permite a un thread el desplazarse a través de varios sistemas.
Ra (Clouds), Emerald
Combina atributos de los casos M:1 y 1:M
TRIX
Categorías de Sistemas de Cómputo • Instrucción Única, Datos Únicos (SISD) – un solo procesador ejecuta un solo flujo de instrucciones que opera sobre datos almacenados en una sola memoria
• Instrucción Única, Datos Múltiples (SIMD) – cada instrucción es ejecutada en un conjunto de datos distinto en diferentes procesadores
10
Categorías de Sistemas de Cómputo • Instrucciones Múltiples, Datos Únicos (MISD) – una secuencia de datos es transmitida hacia un conjunto de procesadores, donde una secuencia de datos es transmitida hacia un conjunto de procesadores, y cada uno de ellos ejecuta una secuencia de instrucciones diferente. Nunca se ha implementado
• Instrucciones Múltiples, Datos Múltiples (MIMD) – un conjunto de procesadores ejecutan secuencias de instrucciones diferentes sobre conjuntos de datos diferentes
11
Multiprocesamiento Simétrico • El kernel se puede ejecutar en cualquier procesador • Típicamente cada procesador lleva a cabo su calendarización en base a los threads y/o procesos disponibles
12
Consideraciones de Diseño de Sistemas Operativos para Multiprocesamiento • Procesos o threads simultáneamente concurrentes • Calendarización • Sincronización • Administración de memoria • Confiabilidad y Tolerancia a Fallas
Microkernels • Pequeño núcleo del sistema operativo • Contiene solo las funciones esenciales del sistema operativo • Muchos servicios incluidos tradicionalmente en el S.O. ahora son subsistemas externos – – – – –
controladores de dispositivos (drivers) sistema de archivos administrador de memoria virtual sistema de ventanas servicios de seguridad
13
Ventajas de la organizacion Microkernel • Interfaz uniforme a las peticiones hechas por los procesos – Todos los servicios son provistos por medio del intercambio de mensajes
• Extensibilidad – Permite la adición de nuevos servicios
• Flexibilidad – Se pueden agregar nuevas funcionalidades – Funcionalidades existentes pueden ser removidas
Ventajas de la organizacion Microkernel • Portabilidad – Los cambios necesitados para portar el sistema a un nuevo procesador son hechos en el microkernel y NO en otros servicios
• Confiabilidad – Diseño Modular – El pequeño microkernel puede ser probado rigurosamente
14
Ventajas de la organizacion Microkernel • Soporte a sistemas distribuidos – Los mensajes son enviados sin saber a cuál es la computadora destino
• Sistema operativo orientado a objetos – Los componentes son objetos con interfaces definidas claramente que pueden ser interconectadas para formar software
Diseño microkernel • Administración de memoria de bajo nivel – Mapear cada página virtual a una página física
• Comunicación inter-procesos • Administración de E/S e interrupciones
15
Windows 2000 Objeto Proceso
16
Windows 2000 Objeto Thread
Windows 2000 Estados de Threads • • • • • •
Ready Standby Running Waiting Transition Terminated
17
Solaris • El proceso incluye el espacio de memoria de usuario, la pila y el bloque de control del proceso • Threads a nivel de usuario • Procesos ligeros • Threads de kernel
18
19
Ejecución de Threads en Solaris • • • •
Sincronización Suspensión Atención Ceder el control
20
Procesos en Linux • • • • • • • • •
Estado Información de calendarización Identificadores Comunicación interprocesos Ligas Tiempos y temporizadores Sistemas de archivos Memoria virtual Contexto especifico del proceso
Estados de un proceso en Linux • • • • •
Running Interruptable Uninterruptable Stopped Zombie
21
22