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