Proceso Threads, SMP, and Microkernels Capítulo 4 Proceso • En relación con el despacho (dispatching) nos referimos a threads • En relación con recursos de propiedad nos referimos a procesos o tareas • Propiedad de Recurso – el proceso se ubica en un espacio de direccionamiento virtual que tiene la imagen del proceso • Planificación/ejecución – sigue un camino de ejecución que puede entrelazarse con otros procesos • El sistema operativo trata estas dos características de forma independiente Multithreading • El sistema operativo permite múltiples threads de ejecución por cada proceso • MS-DOS sólo tiene un thread • UNIX permite múltiples procesos de usuario, pero sólo un thread por proceso • Windows 2000, Solaris, Linux, Mach, and OS/2 soportan múltiples threads Proceso • Tiene un espacio de direccionamiento virtual que mantiene la imagen del proceso • Aceso protegido a los procesadores, otros procesos, ficheros y recursos de E/S Thread • Un estado de ejecución (running, ready, etc.) • Contexto del thread guardado cuando no se está ejecutando • Tiene una pila de ejecución • Almacenamiento estático per-thread para variables locales • Acceso a la memoria y recursos de su proceso – todos los threads de un proceso comparten esto Ventajas de los Threads • Se tarda menos tiempo en crear un thread nuevo que un proceso • Menos tiempo en terminar un thread que un proceso • Menos tiempo en commutar dos threads del mismo proceso • Como los threads del mismo proceso comparten memoria y ficheros, se pueden comunicar sin necesidad de usar el kernel Threads • Suspender un proceso lleva consigo suspender todos sus threads ya que todos ellos comparten el mismo espacio de direccionamiento • La finalización de un proceso, finaliza todos los threads de ese proceso El uso de Threads en un Sistema Multiprocesamiento Mono-usuario • El trabajo se pasa al segundo plano – Del Foreground al background • Procesamiento asíncrono • Velocidad de ejecución • Estructura del programa modular Estados de los Thread • Estados asociados con el cambio de estado de los threads – Spawn (generado) • Generar otro thread – Block – Unblock – Finish (bloqueado) (desbloqueado) (finalizado) • Liberar contexto y pilas Llamada a Procedimiento Remoto (RPC) usando Threads Threads de nivel de Usuario • Toda la gestión de los threads se realiza desde la aplicación • El kernel no se preocupa de la existencia de los threads Llamada a Procedimiento Remoto (RPC) usando Threads Threads de nivel de Kernel • W2K, Linux, y OS/2 son ejemplos de este tipo de gestión de thread • El Kernel mantiene información de contexto de los procesos y threads • La planificación se realiza en base a los threads Enfoques combinados • Solaris es un ejemplo • La creación de threads se hace en el espacio del usuario • La mayor parte de la planificación y sincronización de threads se hace en el espacio del usuario Relación entre número de threads y de procesos Threads:Proceso Descripción 1:1 Cada thread de ejecución es un único proceso con su propio espacio y recursos. M:1 Un proceso define un espacio de direccionamiento y una propiedad de recursos dinámica. Se pueden crear y ejecutar múltiples threads de este proceso. Sistemas Ejemplo Implementaciones tradicionales de UNIX Relación entre número de threads y de procesos Threads:Proceso Descripción 1:M Un thread puede migrar del Entorno de un proceso a otro. Esto le permite al thread moverse facilmente entre distintos sistemas. M:M Combina propiedades de los casos M:1 y 1:M Windows NT, Solaris, OS/2, OS/390, MACH Sistemas Ejemplo Ra (Clouds), Emerald TRIX Categoría de los sistemas computadores Taxonomía de Flynn • Single Instruction Single Data (SISD) – un único procesador ejecuta una única secuencia de instrucciones operando sobre datos almacenados en una única memoria • Single Instruction Multiple Data (SIMD) – Cada instrucción es ejecutada sobre un conjunto de datos por distintos procesadores Categoría de los sistemas computadores Taxonomía de Flynn • Multiple Instruction Single Data (MISD) – una secuencia de datos se transmite a un conjunto de procesadores, cada uno ejecutando una secuencia de instrucciones distinta. Sistemas sistólicos. • Multiple Instruction Multiple Data (MIMD) – un conjunto de procesadores simultáneamente ejecuta diferentes secuencias de instrucciones sobre conjuntos de datos disjuntos Multiprocesamiento Simétrico • El Kernel se puede ejecutar sobre cualquier procesador • Normalmente cada procesador realiza su propia planificación a pertir de los procesos o threads disponibles Consideraciones de Diseño de Sistemas Operativos Multiprocesador • • • • • Microkernels • Núcleo del sistema operativo pequeño • Contiene sólo las funciones esenciales del sistema operativo • Muchos servicios, tradicionalmente incluidos en el sistema operativo, son ahora subsistemas externos – – – – – controladores de dispositivos sistema de ficheros gestor de la memoria virtual sistema de ventanas servicios de seguridad Concurrencia simultánea de procesos o threads Planificación Sincronización Gestión de Memoria Fiabilidad y Tolerancia a Fallos Ventajas del Microkernel • Interfaz uniforme de peticiones realizadas por un proceso – Todos los servicios se realizan a través de paso de mensajes • Extensibilidad – Se pueden añadir nuevos servicios • Flexibilidad – Añadir nuevas características – Carácterísticas existentes puede ser eliminadas Ventajas del Microkernel • Portabilidad – Los cambios necesarios para portar el sistema a un nuevo procesador se realizan en el microkernel – no en otros servicios • Fiabilidad – Diseño modular – Un microkernel pequeño puede ser rigurosamente verificado Diseño de Microkernel • Gestión de memoria a bajo nivel – situar cada página virtual en un marco de página física (mapping) • Comunicación entre procesos • Gestión de E/S e Interrupciones Ventajas del Microkernel • Soporte para sistemas distribuidos – Los mensajes se envian sin saber quién es la máquina destino • Sistema operativo orientado a objetos – Los componentes son objetos con interfaces definidos claramente que pueden ser interconectados por software El objeto proceso de Windows 2000 Los estados de los threads de Windows 2000 • • • • • • Ready Standby Running Waiting Transition Terminated El objeto thread de Windows 2000 Solaris • Los procesos se componen del espacio de direccionamiento del usuario, la pila y el PCB. • Threads de nivel de usuario • Procesos ligeros • Threads de Kernel Ejecución de threads de Solaris • • • • Synchronization Suspension Preemption Yielding (sincronización) (suspensión) (apropiación) (entrega) Procesos de Linux • • • • • • • • • Estados de un proceso de Linux • • • • • Running Interruptable Uninterruptable Stopped Zombie Estado Información de Planificación Identificadores Comunicación entre procesos Enlaces (Links) Tiempo y temporizadores Sistema de ficheros Memoria virtual Contexto específico del procesador