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 Ejemplos de S.O. UNIX tradicional 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. Windows NT, Solaris, OS/2, OS/390, MACH 9
Relación entre Threads y Procesos Threads:Proceso Descripción 1:M Un thread puede migrar de un proceso a otro. Esto permite a un thread el desplazarse a través de varios sistemas. Ejemplos de S.O. Ra (Clouds), Emerald M:M 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 Ready Standby Running Waiting Transition Terminated Windows 2000 Estados de Threads 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