Multiproceso Simétrico

download Multiproceso Simétrico

of 15

Transcript of Multiproceso Simétrico

3.1 Concepto de hiloUn hilo es un flujo de control dentro de un proceso, una unidad bsica de utilizacin de la CPU; comprende un contador de programa, un conjunto de registros y una pila. Comparte con otros hilos que pertenecen al mismo proceso la seccin de cdigo, la seccin de datos y otros recursos del sistema operativo como los archivos abiertos y las seales. Los hilo son subprocesos generados por un proceso padre o por el kernel para facilitar y optimizar el uso del CPU, se encargan de almacenar, copiar cargar datos (etc) utilizando los recursos que fueron asignados al proceso que se ejecute3.1.1 MultihiloMltihilo se refiere a la capacidad de un sistema operativo se dar soporte a mltiples hilos de ejecucin en un solo proceso, en el que no se identifica con el concepto de hilo, se conoce como estrategia monohilo. Las dos configuraciones que se muestran en la parte izquierda de la figura son estrategia monohilo. Un ejemplo de sistema operativo que soporta un nico proceso de usuario y un nico hilo es el MS-DOS. Otros sistemas operativos soportan mltiples procesos de usuario, pero solo un hilo por proceso. La parte derecha de la Figura representa las estrategias mltihilo. El entorno de ejecucin Java es un ejemplo de sistema con un nico proceso y mltiples hilos. Lo interesante en esta seccin es el uso de mltiples procesos, cada uno de los cuales soporta mltiples hilos.En un entorno mltihilo, un proceso se define como la unidad de asignacin de recursos y una unidad de proteccin. Se asocian con procesos los siguientes: Un espacio de direcciones virtuales que soporta la imagen del proceso. Acceso protegido a procesadores, otros procesos (para comunicacin entre procesos), archivos y recursos de E/S (dispositivos y canales).Dentro de un proceso puede haber uno o ms hilos, cada uno con: Un estado de ejecucin por hilo (Ejecutando, Listo, etc.). Un contexto de hilo que se almacena cuando no est en ejecucin; una forma de ver a un hilo es como un contador de programa independiente dentro de un proceso. Una pila de ejecucin Por cada hilo, espacio de almacenamiento para variables locales. Acceso a la memoria y recursos de su proceso, compartido con todos los hilos de un mismo procesoLa prxima figura muestra la diferencia entre los hilos y procesos desde el punto de vista de gestin de proceso. En un modelo de proceso incluye su bloque de control de proceso y el espacio.

3.1.2 Funcionabilidad de los hilos La principal razn de tener hilos es que en muchas aplicaciones se desarrollan varias actividades a la vez. Algunas de sas se pueden bloquear de vez en cuando. Al descomponer una aplicacin en varios hilos secuenciales que se ejecutan en cuasi-paralelo, el modelo de programacin se simplifica. Un segundo argumento para tener hilos es que, como son mas ligeros que los procesos, son ms fciles de crear(es decir, rpidos) y destruir. En muchos sistemas, la creacin de un hilo es de 10 a 100 veces ms rpida que la de un proceso. Cuando el nmero de hilos necesarios cambia de manera dinmica y rpida, es til tener esta propiedad. Una tercera razn de tener hilos es un argumento relacionado con el rendimiento. Los hilos no producen un aumento en el rendimiento cuando todos ellos estn ligados en la CPU, pero cuando hay cantidad considerable de clculos y operaciones de E/S, al tener hilos estas actividades se pueden traslapar, con lo cual se agiliza la velocidad de la aplicacin. Los hilos son tiles en los sistemas con varias CPUs, en donde es posible el verdadero paralelismo. Lleva mucho menos tiempo crear un nuevo hilo en un proceso existente que crear un proceso totalmente nuevo. Lleva menos tiempo finalizar un hilo que un proceso Leva menos tiempo cambiar entre dos hilos dentro del mismo proceso. Los hilos mejoran la eficiencia de la comunicacin entre diferentes programas que estn ejecutando.3.1.3 Estado de hilosEjecutando, Listo y Bloqueado. El estado delos hilos est asociado al estado del proceso, sabiendo esto se definen las operaciones: Creacin: Cuando se crea un nuevo proceso, tambin se crea un hilo de dicho proceso. Posteriormente, un hilo del proceso puede crear otro hilo dentro del mismo proceso, proporcionando un puntero a las instrucciones y los argumentos para el nuevo hilo. Al nuevo hilo se le proporciona su propio registro de contexto y espacio de pila y se coloca en la cola de Listos. Bloqueo: Cuando un hilo necesita esperar por un evento se bloquea, almacenan los registros de usuario, contador de programa y punteros de pila. El procesador puede pasar a ejecutar otro hilo en estado listo, dentro del mismo proceso o en otro diferente. Desbloqueo: Cuando sucede el evento por el que el hilo est bloqueado, el hilo se pasa a la cola de listos. Finalizacin: Cuando se completa un hilo, se liberan su registro de contexto y pila.3.1.4 ParalelismoConfiguracin del sistema, donde la generacin de hilos se da en espacio de usuario y el espacio de kernel, la relacin entre los hilos generados por ambos espacios va a depender del sistema o del proceso en ejecucin. Los hilos pueden utilizarse para expresar algoritmos inherentemente paralelos. Se obtiene mayor rendimiento debido al hecho de que los hilos funcionan muy bien en sistemas multiprocesadores. Los hilos permiten expresar el paralelismo de alto nivel a travs de un lenguaje de programacin. La utilizacin de mltiples hilos, puede conseguir un grado de paralelismo que incremente el rendimiento de un programa, e incluso hacer ms fcil la escritura de su cdigo. En el multiprocesamiento la ejecucin es paralela de distintos fragmentos de un mismo programa en distintos procesadores. Paralelismo de grano fino en el cual el uso del paralelismo es mucho ms complejo que el que se consigue con el uso de hilos. Si bien gran parte del trabajo se realiza en aplicaciones muy paralelas, este es un campo, hasta el momento, muy especializado y fragmentado, con varias soluciones diferentes. Ejecucin Os Funcionalidad de los hilos.3.1.5 Hilos a nivel de usuario y de ncleo Hilos de nivel de usuario. En un entorno ULT (User-level threads) puro, la aplicacin gestiona todo el trabajo de los hilos y el ncleo no es consciente de la existencia de los mismos. El soporte para los hilos de usuario se proporciona por encima del kernel y las hebras se gestionan sin soporte del mismo.Ventajas y desventajas:a. El cambio de hilo no requiere de privilegios de modo ncleo porque todas las estructuras de datos de gestin de hilos estn en el espacio de direcciones de usuario de un solo proceso. Por consiguiente, el proceso no cambia a modo ncleo para realizar la gestin de hilos.b. La planificacin puede especificarse por parte de la aplicacin. Una aplicacin se puede beneficiar de un simple algoritmo de planificacin cclico, mientras que otra se podra beneficiar de un algoritmo de planificacin basado en prioridades.c. Los ULT pueden ejecutar en cualquier sistema operativo. No se necesita ningn cambio en el nuevo ncleo para dar soporte a los ULT. La biblioteca de los hilos es un conjunto de utilidades a nivel de aplicacin que comparten todas las aplicaciones.Desventajas:a. En un sistema operativo tpico muchas llamadas al sistema son bloqueantes. Como resultado, cuando un ULT realiza una llamada al sistema, no slo se bloquea ese hilo, sino que se bloquean todos los hilos del proceso.b. En una estrategia pura ULT, una aplicacin multihilo no puede sacar ventaja del multiproceso. El ncleo asigna el proceso a un solo procesador al mismo tiempo. Por consiguiente, en un determinado momento slo puede ejecutar un hilo del proceso. Hilos a nivel de ncleo: En un entorno KLT(Kernel-level thread) puro, el nucleo gestiona todo el trabajo de gestin de hilos. No hay cdigo de gestin de hilos en la aplicacin, solamente una interfaz de programacin de aplicacin (API) para acceder a las utilidades de hilos del ncleo.Ventajas:a. El ncleo puede planificar simultneamente mltiples hilos de un solo proceso en mltiples procesadores.b. Si se bloquea un hilo de un proceso, el ncleo puede planificar otro hilo del mismo proceso.c. Las rutinas del ncleo pueden ser en s mismas multihilo.Desventajas: La transferencia de control de un hilo a otro del mismo proceso requiere un cambio de modo al ncleo.3.1.6 Otras estructuras: Relacin muchos-a-muchos: El modelo muchos-a-muchos multiplexa muchos hilos de usuario sobre un nmero menor o igual de hilos del kernel. El nmero de hilos del kernel puede ser especfico de una determinada aplicacin o de una determinada mquina.

Relacin uno-a-muchos: Un hilo puede migrar de un entorno de proceso a otro. Esto permite a los hilos moverse fcilmente entre distintos sistemas. Los hilos se pueden mover de un espacio de direcciones a otro, incluso fuera de los lmites de la mquina (moverse de una computadora a otra). Segn se mueve el hilo, debe llevarse determinada informacin con l, tal como el controlador de terminal, los parmetros globales y las guas de planificacin.3.2 MULTIPROCESO SIMTRICO.Tradicionalmente, el computador ha sido visto como una mquina secuencial. La mayor parte de los lenguajes de programacin requieren que el programador especifique algoritmos como una secuencia de instrucciones. Un procesador ejecuta programas a travs de la ejecucin de instrucciones mquina en secuencia y de una en una. Cada instruccin se ejecuta como una secuencia de operaciones (ir a buscar la instruccin, ir a buscar los operando, realizar la operacin, almacenar resultados).Esta visin del computador nunca ha sido totalmente cierta. A nivel de micro-operacin, se generan mltiples seales de control al mismo tiempo. El pipeline de instrucciones, al menos en lo relativo a la bsqueda y ejecucin de operaciones, ha estado presente durante mucho tiempo. A medida que ha evolucionado la tecnologa de los computadores y el coste del hardware ha descendido, los diseadores han visto cada vez ms oportunidades para el paralelismo, normalmente para mejorar el rendimiento y, en algunos casos, para mejorar la fiabilidad. 1. ARQUITECTURA SMP.Es til ver donde encaja la arquitectura SMP dentro de las categoras de procesamiento paralelo. La forma ms comn de categorizar estos sistemas es la taxonoma de sistemas de procesamiento paralelo introducida por Flynn [FLYN72]. Flynn propone las siguientes categoras de sistemas de computadores: nica instruccin, nico flujo de datos Single instruction single data (SISD) stream. Un solo procesador ejecuta una nica instruccin que opera sobre datos almacenados en una sola memoria. nica instruccin, mltiples flujos de datos Single instruction multiple data (SIMD) stream. Una nica instruccin de mquina controla la ejecucin simultnea de un nmero de elementos de proceso. Cada elemento de proceso tiene una memoria de datos asociada, de forma que cada instruccin se ejecuta en un conjunto de datos diferente a travs de los diferentes procesadores. Los procesadores vectoriales y matriciales entran dentro de esta categora. Mltiples instrucciones, nico flujo de datos Multiple instruction single data (MISD) stream. Se transmite una secuencia de datos a un conjunto de procesadores, cada uno de los cuales ejecuta una secuencia de instrucciones diferente. Esta estructura nunca se ha implementado. Mltiples instrucciones, mltiples flujos de datos Multiple instruction multiple data (MIMD) stream. Un conjunto de procesadores ejecuta simultneamente diferentes secuencias de instrucciones en diferentes conjuntos de datos.Con la organizacin MIMD, los procesadores son de propsito general, porque deben ser capaces de procesar todas las instrucciones necesarias para realizar las transformaciones de datos apropiadas.MIMD se puede subdividir por la forma en que se comunican los procesadores (Figura 1.1). Si cada procesador tiene una memoria dedicada, cada elemento de proceso es en s un computador. La comunicacin entre los computadores se puede realizar a travs de rutas prefijadas o bien a travs de redes.Este sistema es conocido como un cluster, o multicomputador. Si los procesadores comparten una memoria comn, entonces cada procesador accede a los programas y datos almacenados en la memoria compartida, y los procesadores se comunican entre s a travs de dicha memoria; este sistema se conoce como multiprocesador de memoria compartida.Una clasificacin general de los multiprocesadores de memoria compartida se basa en la forma de asignar procesos a los procesadores. Los dos enfoques fundamentales son maestro/esclavo y simtrico.Con la arquitectura maestro/esclavo, el ncleo del sistema operativo siempre ejecuta en un determinado procesador. El resto de los procesadores slo podrn ejecutar programas de usuario y, a lo mejor, utilidades del sistema operativo. El maestro es responsable de la planificacin de procesos e hilos. Una vez que un proceso/hilo est activado, si el esclavo necesita servicios (por ejemplo, una llamada de E/S), debe enviar una peticin al maestro y esperar a que se realice el servicio. Este enfoque es bastante sencillo y requiere pocas mejoras respecto a un sistema operativo multiprogramado uniprocesador. La resolucin de conflictos se simplifica porque un procesador tiene el control de toda la memoria y recursos de E/S. Las desventajas de este enfoque son las siguientes: Un fallo en el maestro echa abajo todo el sistema. El maestro puede convertirse en un cuello de botella desde el punto de vista del rendimiento, ya que es el nico responsable de hacer toda la planificacin y gestin de procesos.En un multiprocesador simtrico (Symmetric Multiprocessor, SMP), el ncleo puede ejecutar en cualquier procesador, y normalmente cada procesador realiza su propia planificacin del conjunto disponible de procesos e hilos. El ncleo puede construirse como mltiples procesos o mltiples hilos, permitindose la ejecucin de partes del ncleo en paralelo. El enfoque SMP complica al sistema operativo, ya que debe asegurar que dos procesadores no seleccionan un mismo proceso y que no se pierde ningn proceso de la cola. Se deben emplear tcnicas para resolver y sincronizar el uso de los recursos.

1. ORGANIZACIN SMP.La Figura 1.2 muestra la organizacin general de un SMP. Existen mltiples procesadores, cada uno de los cuales contiene su propia unidad de control, unidad aritmtico-lgica y registros. Cada procesador tiene acceso a una memoria principal compartida y dispositivos de E/S a travs de algn mecanismo de interconexin; el bus compartido es comn a todos los procesadores. Los procesadores se pueden comunicar entre s a travs de la memoria (mensajes e informacin de estado dejados en espacios de memoria compartidos). Los procesadores han de poder intercambiarse seales directamente.A menudo la memoria est organizada de tal manera que se pueden realizar mltiples accesos simultneos a bloques separados.En mquinas modernas, los procesadores suelen tener al menos un nivel de memoria cache, que es privada para el procesador. El uso de esta cache introduce nuevas consideraciones de diseo. Debido a que la cache local contiene la imagen de una porcin de memoria principal, si se altera una palabra en una cache, se podra invalidar una palabra en el resto de las caches. Para prevenir esto, el resto de los procesadores deben ser alertados de que se ha llevado a cabo una actualizacin. Este problema se conoce como el problema de coherencia de caches y se suele solucionar con tcnicas hardware ms que con el sistema operativo

1. CONSIDERACIONES DE DISEO DE SISTEMAS OPERATIVOS MULTIPROCESADOR.Un sistema operativo SMP gestiona los procesadores y otros recursos del computador, de manera que el usuario puede ver al sistema de la misma forma que si fuera un sistema uniprocesador multiprogramado.Un usuario puede desarrollar aplicaciones que utilicen mltiples procesos o mltiples hilos dentro de procesos sin preocuparse de s estar disponible un nico procesador o mltiples procesadores.De esta forma, un sistema operativo multiprocesador debe proporcionar toda la funcionalidad de un sistema multiprogramado, adems de caractersticas adicionales para adecuarse a mltiples procesadores.Las principales claves de diseo incluyen las siguientes caractersticas: Procesos o hilos simultneos concurrentes. Las rutinas del ncleo necesitan ser reentrantes para permitir que varios procesadores ejecuten el mismo cdigo del ncleo simultneamente. Debido a que mltiples procesadores pueden ejecutar la misma o diferentes partes del cdigo del ncleo, las tablas y la gestin de las estructuras del ncleo deben ser gestionas apropiadamente para impedir interbloqueos u operaciones invlidas. Planificacin. La planificacin se puede realizar por cualquier procesador, por lo que se deben evitar los conflictos. Si se utiliza multihilo a nivel de ncleo, existe la posibilidad de planificar mltiples hilos del mismo proceso simultneamente en mltiples procesadores. Sincronizacin. Con mltiples procesos activos, que pueden acceder a espacios de direcciones compartidas o recursos compartidos de E/S, se debe tener cuidado en proporcionar una sincronizacin eficaz. La sincronizacin es un servicio que fuerza la exclusin mutua y el orden de los eventos. Un mecanismo comn de sincronizacin en los sistemas operativos multiprocesador son los cerrojos. Gestin de memoria. La gestin de memoria en un multiprocesador debe tratar con todos los aspectos encontrados en las mquinas uniprocesador. Adems, el sistema operativo necesita explotar el paralelismo hardware existente, como las memorias multipuerto, para lograr el mejor rendimiento. Los mecanismos de paginacin de los diferentes procesadores deben estar coordinados para asegurar la consistencia cuando varios procesadores comparten una pgina o segmento y para decidir sobre el reemplazo de una pgina. Fiabilidad y tolerancia a fallos. El sistema operativo no se debe degradar en caso de fallo de un procesador. El planificador y otras partes del sistema operativo deben darse cuenta de la prdida de un procesador y reestructurar las tablas de gestin apropiadamente.Debido a que los aspectos de diseo de un sistema operativo multiprocesador suelen ser extensiones a soluciones de problemas de diseo de uniprocesadores multiprogramados. 3.3 MICRONCLEOQu es un micro Ncleo?Para conocer de manera correcta que es un micro ncleo primero debemos saber dos puntos muy importantes:1. Modos de operacin del procesador.2. Modelos del kernelModos de operacin del procesador Para entender los modelos de diseo de los sistemas operativos, tenemos que hacer referencia a los modos de ejecucin del procesador. El modo de ejecucin del procesador indica qu conjunto de instrucciones y a qu recursos del procesador se puede acceder en un cierto instante de tiempo. En la actualidad, un procesador ofrece como mnimo dos modos de operacin (ejecucin) que son: Modo privilegiado (supervisor), que permite la ejecucin de todo el conjunto de instrucciones que ofrece el procesador (no tiene ninguna relacin con el modo "root" o administrador de algunos sistemas operativos). Modo no privilegiado (usuario), que tiene algunas restricciones de acceso a aspectos del procesador o de ejecucin de instrucciones. Qu es un modelo de kernel?El ncleo del sistema operativo, tambin conocido por la terminologa inglesa kernel, es la parte ms esencial del sistema operativo. Se trata de la capa visible del software ms baja del sistema que provee y gestiona los recursos del sistema de forma segura a travs de las llamadas al sistema. El ncleo de un sistema operativo suele operar en modo privilegiado. Al operar en dicho modo un error de programacin en el ncleo del sistema operativo puede resultar en un error fatal del cual el sistema slo puede recuperarse mediante el reinicio del sistema. Definicin de micro ncleo:Un concepto que ltimamente est recibiendo mucha atencin es el de microncleo. Un microncleo es la pequea parte central de un sistema operativo que proporciona las bases para extensiones modulares.Sin embargo, el trmino es algo confuso, y hay varias cuestiones relacionadas con los microncleos con respuestas distintas por parte de diferentes equipos de diseo de sistemas operativos. Estas cuestiones incluyen, cmo de pequeo debe ser un ncleo para denominarse microncleo, cmo disear manejadores de dispositivos para obtener el mejor rendimiento a la vez que se abstraen sus funciones del hardware, si ejecutar operaciones que no pertenecen al ncleo dentro de ste o en el espacio de usuario, y si mantener el cdigo de subsistemas existentes (por ejemplo, una versin de UNIX) o empezar de cero.El enfoque de microncleo se populariz por su uso en el sistema operativo Mach. En teora este enfoque proporciona un alto grado de flexibilidad y modularidad. Determinados productos ya tienen implementaciones microncleo, y este enfoque general de diseo se ver en la mayor parte de los computadores personales, estaciones de trabajo, y sistemas operativos servidor que se desarrollen en un futuro cercano.ARQUITECTURA MICRONCLEOLos primeros sistemas operativos desarrollados a mediados y finales de los aos 50 fueron diseados sin preocuparse por su arquitectura. Nadie tena la experiencia necesaria en construccin de sistemas software realmente grande, y los problemas causados por la dependencia mutua e interaccin no se tenan en cuenta. En estos sistemas operativos monolticos, de prcticamente cualquier procedimiento se poda llamar a cualquier otro. Esta falta de estructura se hizo insostenible a medida que los sistemas operativos crecieron hasta proporciones desmesuradas. Por ejemplo, la primera versin de OS/360 contena ms de un milln de lneas del cdigo; Multics, desarrollado ms tarde, creci hasta 20 millones de lneas del cdigo [DENN84]. se necesitaron tcnicas de programacin modular para manejar esta escala de desarrollo software. Especficamente, se desarrollaron los sistemas operativos por capas7 (Figura 1.3a), en los cuales las funciones se organizan jerrquicamente y slo hay interaccin entre las capas adyacentes. Con el enfoque por capas, la mayor parte o todas las capas ejecutan en modo ncleo.Los problemas permanecen incluso en el enfoque por capas. Cada capa posee demasiada funcionalidad y grandes cambios en una capa pueden tener numerosos efectos, muchos difciles de seguir, en el cdigo de las capas adyacentes (encima o debajo). Como resultado es difcil implementar versiones a medida del sistema operativo bsico con algunas funciones aadidas o eliminadas.Adems, es difcil construir la seguridad porque hay muchas interacciones entre capas adyacentes.

La arquitectura del microncleo reemplaza la tradicional estructura vertical y estratificada en capas por una horizontal (Figura 1.3b). Los componentes del sistema operativo externos al microncleo se implementan como servidores de procesos; interactan entre ellos dos a dos, normalmente por paso de mensajes a travs del microncleo. De esta forma, el microncleo funciona como un intercambiador de mensajes: vlida mensajes, los pasa entre los componentes, y concede el acceso al hardware. El microncleo tambin realiza una funcin de proteccin; previene el paso de mensajes a no ser que el intercambio est permitido.Ejemplos de sist. Operativos que usan microncleos. AIX AmigaOS Amoeba Minix Hurd MorphOS NeXTSTEP (algunos lo consideran un ncleo hbrido)

L4 Netkernel RaOS RadiOS ChorusOS QNX SO3 Symbian SymbOS

RENDIMIENTO DEL MICRONCLEOUna potencial desventaja que se cita a menudo de los microncleos es la del rendimiento. Lleva ms tiempo construir y enviar un mensaje a travs del microncleo, y aceptar y decodificar la respuesta, que hacer una simple llamada a un servicio. Sin embargo, tambin son importantes otros factores, de forma que es difcil generalizar sobre la desventaja del rendimiento, si es que la hay.Hay mucho que depende del tamao y de la funcionalidad del microncleo. [LIED96a] resume un nmero de estudios que revelan una prdida sustancial del rendimiento en los que pueden ser denominados microncleos de primera generacin. Estas prdidas continan a pesar de los esfuerzos realizados para optimizar el cdigo del microncleo. Una respuesta a este problema fue hacer mayores los microncleos, volviendo a introducir servicios crticos y manejadores en el sistema operativo. Los primeros ejemplos de este enfoque son Mach y Chorus. Incrementando de forma selectiva la funcionalidad del microncleo se reduce el nmero de cambios de modo usuario-ncleo y el nmero de cambios de espacio de direcciones de proceso. Sin embargo, esta solucin reduce los problemas de rendimiento sacrificando la fortaleza del diseo del microncleo: mnimas interfaces, flexibilidad, etc.Otro enfoque consiste en hacer el microncleo, no ms grande, sino ms pequeo. [LIED96b] argumenta que, apropiadamente diseado, un microncleo muy pequeo elimina las prdidas de rendimiento y mejora la flexibilidad y fiabilidad. Para dar una idea de estos tamaos, el tpico microncleo de primera generacin tena 300 Kbytes de cdigo y 140 interfaces de llamadas al sistema.Un ejemplo de un microncleo pequeo de segunda generacin es el L4 [HART97, LIED95], que consiste en 12 Kbytes de cdigo y 7 llamadas al sistema. Las experimentaciones realizadas en estos sistemas indican que pueden funcionar tan bien o mejor que sistemas operativos por capas como por ejemplo, UNIX.