42
SISTEMAS OPERATIVOS DE MULTIPROCESADOR 1.1. Descripcion general Los sistemas de multiprocesamiento tienen procesadores múltiples corriendo al mismo tiempo. Los sistemas de multiprocesamiento tradicionales tienen de 2 a 128 procesadores. Más allá de ese número (y este límite superior sigue aumentando) de sistemas de multiprocesamiento se convierten en procesadores paralelos. Los sistemas de multiprocesamiento permiten que diferentes hilos funcionen en diferentes procesadores. Esta capacidad acelera considerablemente el funcionamiento de programa. Ahora dos hilos pueden funcionar más o menos independientemente uno de otro sin requerir que el hilo intercambia para conseguir los recursos del procesador. Los sistemas operativos de multiprocesador son en sí mismos con hilos múltiples y generan también hilos que pueden funcionar en los procesadores separados para mejor provecho. Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a cualesquira de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este

SO Multiprocesador

Embed Size (px)

DESCRIPTION

Sistemas operativos multiprocesador

Citation preview

SISTEMAS OPERATIVOS DE MULTIPROCESADOR

1.1. Descripcion generalLos sistemas de multiprocesamiento tienen procesadores mltiples corriendo al mismo tiempo. Los sistemas de multiprocesamiento tradicionales tienen de 2 a 128 procesadores. Ms all de ese nmero (y este lmite superior sigue aumentando) de sistemas de multiprocesamiento se convierten en procesadores paralelos. Los sistemas de multiprocesamiento permiten que diferentes hilos funcionen en diferentes procesadores. Esta capacidad acelera considerablemente el funcionamiento de programa. Ahora dos hilos pueden funcionar ms o menos independientemente uno de otro sin requerir que el hilo intercambia para conseguir los recursos del procesador. Los sistemas operativos de multiprocesador son en s mismos con hilos mltiples y generan tambin hilos que pueden funcionar en los procesadores separados para mejor provecho.

Un sistema operativo multiproceso se refiere al nmero de procesadores del sistema, que es ms de uno y ste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simtrica o asimtricamente.

Cuando se trabaja de manera asimtrica, el sistema operativo selecciona a uno de los procesadores el cual jugar el papel de procesador maestro y servir como pivote para distribuir la carga a los dems procesadores, que reciben el nombre de esclavos.

Cuando se trabaja de manera simtrica, los procesos o partes de ellos (threads) son enviados indistintamente a cualesquira de los procesadores disponibles, teniendo, tericamente, una mejor distribucin y equilibrio en la carga de trabajo bajo este esquema. Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un rea de memoria, un conjunto de registros con valores especficos, la pila y otros valores de contexto. Us aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores.

Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de cdigo paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por s mismo esta facilidad, pero esta ltima opcin las ms de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o ms tiempo a la paralelizacin que a elaborar el algoritmo inicial.

A medida que crece el nmero de usuarios de un sistema de computacin, o bien las necesidades de los mismos, crece tambin el nmero de procesos a ejecutar. As las cosas pueden llegar un momento en que un sistema operativo monoprocesador pueda verse desbordado en su labor. Lo que podemos es en primer lugar, y a nivel de hardware, incorporar ms y mejores procesadores. En segundo lugar, vestir al sistema fsico con un sistema operativo multiprocesador que sea verdaderamente capaz de aprovechar todos los procesadores instalados.

Las capacidades fundamentales son: Equilibrio de cargas de Entrada / Salida. Equilibrio de carga del procesador. Reconfiguracin.

Los sistemas multiprocesadores proporcionan una alternativa arquitectnica atractiva para mejorar el rendimiento de los sistemas informticos mediante la reunin de un cierto nmero de procesadores estndares de bajo coste.Un multiprocesador bien diseado puede llegar al lmite tecnolgico de velocidad mediante la operacin de varios procesadores de alta velocidad en paralelo. Alternativamente, un sistema multiprocesador compuesto de microprocesadores estndares de amplia disponibilidad puede lograr una mejor proporcin costo/rendimiento que un monoprocesador de elevada velocidad basado en tecnologas exticas. El coste relativamente alto de los sistemas multiprocesadores puede ser compensado si se les emplea como servidores de clculo en sistemas distribuidos. En tal disposicin, el trabajo de interfaz de usuario se delega a las estaciones de trabajo clientes, mientras que el multiprocesador puede concentrarse en tareas computacionalemente intensivas, que es lo que generalmente hacen mejor.El multiprocesamiento puede aplicarse para proporcionar: Aumento en la productividad del sistema: mediante la ejecucin de una serie de diferentes procesos de usuario sobre diferentes procesadores en paralelo. Ganancia de velocidad de la aplicacin: mediante la ejecucin de algunas partes de la aplicacin en paralelo.En entornos de tiempo compartido, la productividad puede mejorarse ejecutando una serie de procesos de usuario no relacionados entre si sobre diferentes procesadores en paralelo. De este modo no se incrementa la velocidad de cada aplicacin en particular, pero se puede mejorar la productividad del sistema al completar un mayor nmero de tareas por unidad de tiempo si reprogramacin ni intervencin explicita del programador.La ganancia de velocidad en las aplicaciones puede obtenerse explotando el paralelismo dentro de una aplicacin y creando mltiples procesos o hebras que pueden ser planificados para ejecucin sobre diferentes procesadores. Esta divisin puede efectuarse por medios automticos, tales como compiladores paralelizantes, o explcitamente mediante sentencias en el programa de aplicacin. La paralelizacion automtica es un problema difcil que ha generado mucha investigacin, pero su disponibilidad generalizada en la practica parece esta un tanto lejana. Con el mtodo de divisin en tareas explicitas, el programador delinea las fronteras de tareas y hebras y asegura su apropiada sincronizacin mediante la invocacin de las primitivas de sincronizacin adecuada. En el aspecto negativo, la programacin paralela explicita es un proceso complejo y a veces arduo. En el estado actual del arte, los programas resultantes tienden a ser especficos de cada mquina y son difciles de portar debido a considerables variaciones en las arquitecturas de los multiprocesadores y de los modelos de programacin.Las diferentes partes de una aplicacin paralelizada necesitan generalmente sincronizarse e intercambiar datos despus de completar un etapa de clculo. La comunicacin y sincronizacin entre procesadores reduce la ganancia de velocidad global al frenar clculos individuales y consumir ancho de banda de interconexin del sistema. Uno de los principales retos del diseo de los sistemas multiprocesadores es minimizar las interacciones entre procesadores y proporcionar un mecanismo eficiente para llevarlas a cabo cuando sean necesarias. 1.1.1 Caracteristicaso Sistemas multiprocesador con mas de una CPU en comunicacin cercanao Sistemas fuertemente acoplados los procesadores comparten la memoria y el reloj, la comunicacin por lo general se realiza a travs de la memoria compartidao Cada procesador controla sus propios recursos dedicados.o La reconfiguracin de los dispositivos de Entrada / Salida puede implicar el cambio de dispositivos a diferentes procesadores con distintos Sistemas Operativos.o La contencin sobre las tablas del Sistema Operativo es mnima.o Los procesadores no cooperan en la ejecucin de un proceso individual, que habr sido asignado a uno de ellos.o Tratamiento Simtrico Es la organizacin ms complicada de implementar y tambin la ms poderosa y confiable.o El Sistema Operativo administra un grupo de procesadores idnticos, donde cualquiera puede utilizar cualquier dispositivo de Entrada / Salida y cualquiera puede referenciar a cualquier unidad de almacenamiento.o El Sistema Operativo precisa cdigo reentrarte y exclusin mutua.o Es posible equilibrar la carga de trabajo ms precisamente que en las otras organizaciones.o Adquieren significativa importancia el hardware y el software para resolucin de conflictos.o Todos los procesadores pueden cooperar en la ejecucin de un proceso determinado.o El procesador ejecutivo es el responsable (uno slo) en un momento dado de las tablas y funciones del sistema; as se evitan los conflictos sobre la informacin global.o Incremento del rendimiento y la confiabilidado Econmicoso Sistemas de fallos controlados por software

1.2. HISTORIA Y EVOLUCIONEl concepto de trabajo en equipo, el dividir una tarea entre varias unidades de ejecucin para que pueda completarse ms rpidamente, fue naturalmente llevado al mundo de las computadoras prcticamente desde sus inicios. David Slotnick, quien fuera colaborador de Von Neumann, le hizo la propuesta de una mquina que contara con varias unidades de procesamiento central; sin embargo, al sentir de Von Neumann, la tecnologa de la poca no permita la realizacin de semejante proyecto. Aun as, Slotnick continu con sus ideas, lo que eventualmente dara origen a la ILLIAC IV (1964), considerada una de las primeras computadoras masivamente paralelas de la historia. En la actualidad, las computadoras ms rpidas del mundo son las mquinas masivamente paralelas.El cmputo paralelo ofrece una serie de ventajas que lo hacen particularmente atractivo para los requerimientos de capacidad de cmputo, en particular los de la comunidad cientfica. Una de estas ventajas es econmica. El uso de componentes comnmente disponibles, en grandes cantidades, permite ofrecer mayor rendimiento, a un precio menor que el de mquinas con procesadores especialmente diseados (como por ejemplo las mquinas de procesadores vectoriales y de propsito especfico). Adicionalmente, las computadoras paralelas son inherentemente escalables, permitiendo actualizarlas para adecuarlas a una necesidad creciente. Las arquitecturas ``tradicionales'' se actualizan haciendo los procesadores existentes obsoletos por la introduccin de nueva tecnologa a un costo posiblemente elevado. Por otro lado, una arquitectura paralela se puede actualizar en trminos de rendimiento simplemente agregando ms procesadores.En ocasiones se menciona tambin la limitante fsica; existen factores que limitan la velocidad mxima de un procesador, independientemente del factor econmico. Barreras fsicas infranqueables, tales como la velocidad de la luz, efectos cunticos al reducir el tamao de los elementos de los procesadores, y problemas causados por fenmenos elctricos a pequeas escalas, restringen la capacidad mxima de un sistema un procesador, dejando la opcin obvia de colocar muchos procesadores para realizar clculos cooperativamente.

1.3. ESTRUCTURA Y COMPONENTES DEL SISTEMAMultiprocesamiento asimtrico y simtricoEn el multiprocesamiento asimtrico, uno o ms procesadores se dedican exclusivamente a tareas especficas, tales como corriendo el sistema operativo. Los procesadores restantes estaban disponibles para el resto de las tareas, generalmente aplicaciones del usuario. Esta configuracin no es ptima. Los procesadores del sistema operativo pueden funcionar en la capacidad 100%, mientras que los procesadores usuario-asignados no estn haciendo nada.El multiprocesamiento simtrico (SMP) es una arquitectura que balancea la carga de proceso mejor: La simetra refiere al hecho que cualquier hilo - sea del sistema operativo o aplicacin del usuario- puede funcionar en cualquier procesador. De esta manera, la carga computacional total es separada uniformemente por todos los recursos computacionales. Hoy, los sistemas de multiprocesamiento simtricos son la norma, y los diseos asimtricos han desaparecidos casi totalmente.external image clip_image003.jpg

Estructura_y_componentes_1.JPGArquitectura de Multiprocesamiento Simtrico

La interaccin del hilo tiene dos componentes: cmo manejan los hilos la competicin para los mismos recursos, y cmo se comunican los hilos entre s mismos.Cuando dos hilos quieren acceder al mismo recurso, uno de ellos tiene que esperar. El recurso puede ser un disk drive, un registro en una base de datos que otro hilo est escribiendo, o cualquier otra innumerable caracterstica del sistema. Minimizar este retardo es un problema de diseo central para las instalaciones de hardware y el software que corre. Es generalmente el factor ms grande en de proporcionar escalabilidad perfecta del funcionamiento de los sistemas de multiprocesamiento, porque corriendo hilos que nunca compiten por el mismo recurso es efectivamente imposible.Un segundo factor es la sincronizacin del hilo. Cuando un programa est diseado en hilos, hay muchas ocasiones donde los hilos tienen que interactuar y los puntos de la interaccin requieren control delicado. Por ejemplo, si un hilo est preparando los datos para que otro hilo procese, los retardos pueden ocurrir cuando el primer hilo no tiene los datos listos cuando el hilo de proceso los necesita. Ms ejemplos convincentes ocurren cuando dos hilos necesitan compartir un rea comn de la memoria. Si ambos hilos pueden escribir a la misma rea en memoria, entonces el hilo que escribi primero tiene que comprobar que lo que escribi no se ha sobreescrito, o debe aislar otros hilos hasta que haya terminado con los datos. Esta administracin de sincronizacin e inter-hilo es claramente un aspecto que no se beneficia de tener ms recursos disponibles procesando.El encabezado del sistema es el manejo del hilo hecho por sistema operativo. Ms procesadores en funcionamiento, ms sistema operativo tiene que coordinar. Consecuentemente, cada nuevo procesador agrega incrementalmente al trabajo de la administracin del sistema operativo. Esto significa que cada nuevo procesador contribuir cada vez menos al rendimiento total del sistema.Un sistema de multiprocesadores debe tener capacidad para gestionar la reparticin de memoria entre varios procesadores, pero tambin debe distribuir la carga de trabajo. Estructura_y_componentes_2.JPG- Los procesadores no cooperan en la ejecucin de un proceso individual, que habr sido asignado a uno de ellos.- Tratamiento Simtrico Es la organizacin ms complicada de implementar y tambin la ms poderosa y confiable.- El Sistema Operativo administra un grupo de procesadores idnticos, donde cualquiera puede utilizar cualquier dispositivo de Entrada / Salida y cualquiera puede referenciar a cualquier unidad de almacenamiento.- El Sistema Operativo precisa cdigo reentrarte y exclusin mutua.- Es posible equilibrar la carga de trabajo ms precisamente que en las otras organizaciones.Adquieren significativa importancia el hardware y el software para resolucin de conflictos. Todos los procesadores pueden cooperar en la ejecucin de un proceso determinado; El procesador ejecutivo es el responsable (uno slo) en un momento dado de las tablas y funciones del sistema; as se evitan los conflictos sobre la informacin global.El rendimiento que pueda obtenerse en cualquier sistema informtico es resultado de la combinacin del hardware y del software; y como elemento radical del software, el sistema operativo. Con la aparicin de mquinas de propsito general de ms de un procesador, surge la necesidad de adaptar los sistemas operativos ya existentes para la gestin de un nuevo recurso con mltiples instancias: el procesador.Al hablar de sistemas operativos en entornos paralelos, hemos de distinguir cuidadosamente dos aspectos del trabajo paralelo. Por un lado, el sistema operativo como gestor de los recursos que utilizan los usuarios, ha de ser capaz de dar soporte a trabajos paralelos; por ejemplo, que un nico programa pueda utilizar varios procesadores. Por otro lado, el propio sistema operativo est corriendo en un sistema multiprocesador y, por tanto, l mismo es un programa paralelo.Las mismas rutinas del sistema operativo han de adaptarse al nuevo funcionamiento del entorno, ahora paralelo, y con problemas de concurrencia y exclusin mutua muchas veces encubiertos.La mayora de las realizaciones de sistemas multiprocesadores suelen incluir el diseo de mecanismos para la sincronizacin y comunicacin entre procesadores. Para una mayor eficiencia, se intenta incluso que estos mecanismos formen parte del hardware de la mquina, aumentando o modificando, si es posible, el conjunto de instrucciones del procesador.Tres configuraciones bsicas han sido adoptadas a la hora de clasificar un sistema operativo, segn su comportamiento en presencia de mltiples procesadores: supervisores separados, master/slave y simtricos [ALMA89].

El ordenador que cuenta con dos o ms microprocesadores, que son un conjunto de circuitos electrnicos altamente integrados para el clculo y control computacional es denominado multiprocesador. El microprocesador puede ejecutar simultneamente varios hilos de un mismo proceso.

Los ordenadores multiprocesador presentan problemas de diseo, derivados del hecho de que 2 programas se ejecuten simultneamente y potencialmente pueden interferirse entre si. Por ellos existen dos arquitecturas que resuelven dichos problemas; esta es una clasificacin en funcin de la organizacin de la memoria:

Arquitectura SMP (Uma)Uniform Memory Access. Arquitectura DSM (Numa.) NonUuniform Memory Access. Message Passing Machines (MPM).

1.3.1. Arquitectura SMP (Uma)

Los multiprocesadores simtricos (Symmetric Multiprocessor) son ordenadores con arquitectura de memoria compartida que presentan en la memoria principal un acceso simtrico desde cualquier procesador, es decir, el retardo en el acceso a cualquier posicin de memoria es el mismo con independencia del procesador desde el que se realice la operacin o tarea, dicha arquitectura es denominada como Acceso Uniforma a Memoria (UMA) y se lleva acabo con una memoria compartida pero centralizada. Estos multiprocesadores dominan el volumen como el capital invertido. Esta arquitectura a su vez se encuentra dividida en:SMP con busSMP escalable

image_(2).JPG**Caractersticas Generales: Espacio de direcciones de memoria compartido Tiempo de acceso uniforme para toda direccin Hardware bastante simple. El cuello de botella es el acceso a memoria principal, lo cual implica: Grandes cachs en cada procesador El nmero de procesadores no puede ser muy alto. Hoy en da N32.

**Problema de coherencia en UMA: El overhead por acceder a la memoria compartida es muy grande. Hay que usar cachs. Debemos asegurar la coherencia de los datos en dichos dispositivos. Cuando usamos un dato privado traerlo a cach. Si accedemos a un dato compartido, hay que traerlo a cach, pero si otros procesadores tambin acceden al dato y se lo llevan a su cach, existirn varias copias distintas del mismo dato.

**Solucin: Intentar evitar las incoherencias mediante hardware. En UMA se usan protocolos de husmeo (snooping): Se pueden utilizar gracias a tener un bus nico y compartido de comunicacin. Los controladores de cachs locales espan el bus para ver si circula algn dato de alguna lnea que tenga almacenada en su cach. Los cachs deben de estar provistos de 2 puertos de acceso (p.e. replicando la memoria de etiquetas). Uno para el acceso del procesador. Otro para que el controlador pueda comparar las direcciones que aparecen por el bus. Ejemplo: Protocolo de invalidacin CB (MSI).

1.3.2. Arquitectura DSM (Numa).

La memoria compartida distribuida o DSM es una abstraccin que se propone como alternativa a la comunicacin por mensajes. Los multiprocesadores de memoria compartida y distribuida (DSM o Distributed Shared Memory), son ordenadores MIMID, en los cuales la memoria esta distribuida entre los nodos. Tomando en cuenta que el espacio de direccionamiento es global, el acceso a memoria principal es asimtrico. Esta arquitectura de memoria que se genera en retardo de acceso dependiente tanto la posicin de memoria como el procesador se denomina Acceso No Uniforme a Memoria (NUMA), hace su aparicin cuando la memoria compartida esta distribuida entre los nodos. De esta manera, se mejora el retardo medio de acceso a memoria, ya que en cada ordenador los accesos a posiciones de su memoria local presentan un retardo sensiblemente inferior al caso en que es accedido a posiciones de memoria en otros ordenadores. Esta clase de ordenadores con arquitectura NUMA presentas escalabilidad. Propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginacin. Las pginas quedan restringidas a estar necesariamente en un nico ordenador. Cuando un programa intenta acceder a una posicin virtual de memoria, se comprueba si esa pgina se encuentra de forma local. Si no se encuentra, se provoca un fallo de pgina, y el sistema operativo solicita la pgina al resto de computadoras. El sistema funciona de forma anloga al sistema de memoria virtual tradicional, pero en este caso los fallos de pgina se propagan al resto de ordenadores, hasta que la peticin llega al ordenador que tiene la pgina virtual solicitada en su memoria local. A primera vista este sistema parece ms eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un trfico de pginas excesivo. De la misma manera que la arquitectura SMA se divide en:

ccNUMAdocNUMACOMASVM

image_(3).JPG

Caractersticas Generales: Espacio de direcciones de memoria compartido. Tiempo de acceso no uniforme para toda direccin. Depende de si accedemos a memoria local (no a cach) o a remota. Debido al incremento de prestaciones del uniprocesador y del AB requerido, sta es la nica solucin para sistemas con muchos procesadores. tacc pequeo en accesos a memoria local. Hard de la red es complejo, necesita redes de interconexin especiales. Existen distintas lneas de comunicacin separadas mayor AB. El problema de la coherencia es ms difcil de mantener en hardware. Estos multiprocesadores son escalables Escalable: Si crece el nmero de procesadores N, entonces la memoria crece como orden(N). Esto es gracias a que cada procesador lleva su propia memoria. Los procesadores UMA no son escalables, puesto que si aumentamos el nmero de procesadores, la memoria es la misma.

1.3.3. MPM (Message Passing Machines).

image_(4).JPG

Espacio de direcciones de memoria distribuido. Son compatibles en hardware a los NUMA. Cada procesador es un computador independiente del resto. Fcilmente escalable. El mecanismo de comunicacin es a travs de mensajes (igual que la comunicacin entre procesos del S.O.). No necesita mecanismos hardware ni para controlar la coherencia de cachs (pues son espacios distintos de direcciones), ni para implementar los accesos remotos. La red es la parte ms compleja de escalar.

1.4. VENTAJAS DE LOS SO DE MULTIPROCESADORES

Algunos de los argumentos a favor del multiprocesamiento incluyen: Rendimiento y potencia de clculo: dedicando mltiples procesadores a la ejecucin de una aplicacin es posible obtener ganancias significativas de velocidad. Los problemas que suponen las interacciones ms extensas o ms frecuentes entre procesadores pueden resolverse ms rpidamente que en un sistema distribuido ya que el ancho de banda de comunicacin entre procesadores es ms elevado. Tolerancia a fallos: La redundancia inherente a los multiprocesadores puede emplearse para aumentar la disponibilidad y eliminar puntos de fallo. Flexibilidad: Un sistema multiprocesador podra tener capacidad para reconfigurarse dinmicamente y ajustarse de tal modo que optimice diferentes objetivos para diferentes aplicaciones, tales como aumento de productividad, ganancia de velocidad de las aplicaciones o incluso ciertos aspectos de tolerancia a fallos. Crecimiento modular: Hasta cierto punto, un diseo modular de un sistema puede adaptarse a las necesidades de una instalacin especfica aadindole exactamente el tipo de componente que mas probablemente alivie un cuello de botella importante, tal como procesadores, memorias o dispositivos de E/S. Especializacin funcional: Se puede aadir procesadores comerciales con relaciones coste/rendimiento varios rdenes de magnitud inferiores a la de los supercomputadores pueden estructurase en multiprocesadores con una relacin coste/ efectividad adecuada a un amplio rango de aplicaciones.

1.5. CLASIFICACIN DE MULTIPROCESADORES

Existen varias clasificaciones de las arquitecturas informticas paralelas. Flynn (1966) introdujo un esquema para clasificar la arquitectura de un computador basndose en cmo la mquina relaciona sus instrucciones (SI, single instruccin) o un flujo de mltiples instrucciones (MI). Esto da lugar a la clasificacin siguiente: SISD: Flujo de una sola instruccin, flujo de un solo dato. Esta categora incluye a los computadores serie convencionales. SIMD. Flujo de una sola instruccin, flujo de mltiples datos. Estos son tpicamente los procesadores vectoriales y los computadores en array en los cuales una sola instruccin puede operar sobre diferentes datos en diferentes unidades de ejecucin. MISD. Flujo de mltiples instrucciones, flujo de un solo datos. Esta es una organizacin raras veces utilizada en la cual mltiples instrucciones operan sobre un nico flojo de datos en paralelo. MIMD. Flujo de mltiples instrucciones, flujo de mltiples datos. La ejecucin simultanea de mltiples instrucciones que operan sobre varios flujos de datos. Esta clase incluye los multiprocesadores de diferentes tipos.

1.6. ESTRUCTURAS FUNCIONALES

Es esta parte introducimos las estructuras funcionales de los sistemas multiprocesador.En trminos muy generales podemos caracterizar a los multiprocesadores atendiendo a 2 criterios:Un multiprocesador es un nico computador que incluye mltiples procesadores.Los procesadores se pueden comunicar y cooperar a diferentes niveles para resolver un problema dado. La comunicacin se puede realizar enviando mensajes de un procesador a otro o compartiendo una memoria comn.Existen algunas similitudes entre los multiprocesadores y los sistemas multicomputador, ya que ambos estn motivados por el mismo objetivo bsico: soportan operaciones concurrentes en el sistema. Sin embargo, existe una distincin importante entre ellos basada en el grado en que comparte recursos y cooperan en la solucin de problemas. Un sistema multicomputador consta de varios computadores autnomos que pueden o no comunicarse entre ellos. Un sistema multiprocesador esta controlado por un sistema operativo que proporciona interaccin entre los procesadores y sus programas a nivel de procesos.A continuacin describimos 2 conjuntos diferentes de modelos arquitectnicos para un multiprocesador.

1.6.1. Ligeramente acoplados

Los procesadores individuales tienen memorias privadas y no existe una memoria global compartida. Cada procesador tiene un conjunto de dispositivos de entrada-salida y una gran memoria local a donde acceden la mayor parte de las instrucciones y datos. Para reverenciarnos al conjunto formado por el procesador, su memoria local y sus interfaces de E/S utilizaremos el trmino modulo computador. los procesos que se ejecutan sobre diferentes mdulos de computador se comunican mediante intercambio de mensajes a travs de un sistema de transferencia de mensajes (STM). Los sistemas ligeramente acoplados (SLA) resultan eficientes cuando las interacciones entre las tareas son mnimas.

1.6.2. Estrechamente acoplados

Los procesadores contienen memoria globalmente compartida a la que todos lo procesadores tienen acceso. se comunican a travs de una memoria principal compartida, por lo que la velocidad a la que se pueden comunicar dato de un procesador a otro es del mismo orden que el ancho de banda de la memoria. En cada procesador puede existir una memoria cache. Existe una completa conectividad entre los procesadores y la memoria, esta conectividad se puede llevar a cabo bien insertando una red de interconexin entre los procesadores y la memoria bien por medio de una memoria multipuesto. Unos de los factores que limitan la expansin de un sistema estrechamente acoplado es la perdida de rendimiento debida a los conflictos que aparecen cuando 2 o mas procesadores intentan acceder a la misma unidad de memoria al mismo tiempo. Los sistemas estrechamente acoplados (SEA) pueden tolerar un alto grado de interacciones entre las tareas sin un deterioro significativo en el rendimiento.La divisin no es muy estricta ya que existen sistemas hbridos que tienen tanto memoria privada en cada procesador como memoria global compartida a la que muchos o todos los procesadores tienen acceso. La memoria compartida es fundamental para la comunicacin y sincronizacin entre procesadores en sistemas fuertemente acoplados se han distinguido por un mayor ancho de banda y menores retardos en sus rutas de interconexin. En sistemas dbilmente acoplados puros, el mecanismo principal de comunicacin entre procesadores es el paso de mensajes.Las configuraciones hibridas y algunos sistemas dbilmente acoplados permiten a los procesadores acceder a un memoria no local e incluso a la memoria privada de otros procesadores. Existe generalmente una penalizacin por acceder a la memoria no local en forma de retardos aadidos provocados por el arbitraje de contencin y el paso a travs de las rutas de interconexin procesador-memoria. Estos factores dan lugar a al siguiente clasificacin de los multiprocesadores de memoria compartida en base a la arquitectura de la memoria y los retardos de acceso. Acceso uniforme a memoria (UMA, uniform memory acces): sistemas en donde los procesadores pueden acceder a toda la memoria disponible con la misma velocidad: esto incluye muchas arquitecturas con bus compartido. Acceso no uniforme a memoria (NUMA, nonuniform memory acces): Sistemas en donde hay una diferencia de tiempo en el acceso a diferentes reas de memoria, dependiendo de la proximidad a un determinado procesador y la complejidad del mecanismo de conmutacin entre el procesador y la seccin referenciada de la memoria del sistema.A veces, se aade a esta clasificacin una tercera categora denominada acceso no remoto a memoria (NORMA, no remote memory) para designar los sistemas sin memoria compartida.En multiprocesadores fuertemente acoplados si se desea alta velocidad o procesamiento en tiempo real, se pueden utilizar estos sistemas (SEA). La figura 1A consta de una cantidad N de procesadores, L mdulos de memoria y D canales de entrada-salida, estas unidades estn conectadas a travs de un conjunto de 3 redes de interconexin, la red de interconexin procesadores-memoria (RIPM), la red de interconexin E/S-procesador (RIESP) y la red de interconexin Seal-Interrupcin (RISI). LA RIPM es un conmutador que puede conectar cada procesador a cada modulo de memoria. Un conjunto de puntos de cruce par aun par particular procesador-memoria incluye (n+k) puntos de cruce, don de N es el ancho de la direccin dentro de un modulo y K es el ancho de caminos de datos. La complejidad de la memoria multipuesto es similar a la de barras cruzadas. Alternativamente, la RIPM puede ser una red multietapa. image_(5).JPGFigura "1A" Configuraciones de multiprocesadores estrechamente acoplados.

Un modulo de memoria puede satisfacer solamente la peticin de un procesador en un ciclo de memoria dado. Por tanto, si 2 o ms procesadores intentan acceder al mismo modulo de memoria, ocurre un conflicto que se resuelve o arbitra mediante la RIPM.Otro mtodo utilizado para reducir el grado de conflictos consiste en asociar un rea de almacenamiento reservada con cada procesador.En la organizacin multiprocesador de la figura 1A cada procesador puede hacer referencias a memoria principal. Ya que cada referencia a memoria se hace a travs de la RIPM, sufre un retraso en el conmutador de memoria procesador y, por tanto, se incrementa el tiempo de ciclo de instruccin. El incremente en el tiempo de ciclo de instruccin reduce la productividad del sistema. Otra consecuencia de la cache es que el trfico a travs del conmutador de barras cruzadas se puede reducir, lo que reduce sustancialmente la contencin en los puntos de cruce. En la Figura 1B hay un modulo asociado a cada procesador que dirige las referencias a memoria bien a la memoria local no mapeada (MLNM ) bien a la cache privada de ese procesador. La sincronizacin entre procesadores se facilita por el uso de una red interprocesador. La RISI se puede tambin usar por un procesador que falla para emitir una alarma iniciada por el hardware para los procesadores que funcionan. La RIESP permite a un procesador comunicarse con el canal de E/S que esta conectado a dispositivos perifricos. image_(6).JPGFigura "1B". Modulo asociado a cada procesador que dirige las referencias a memoria bien a la MLNM.

La complejidad de la RISI puede variar desde un simple bus de tiempo compartido hasta un complejo conmutador de barras cruzadas. Un bus en tiempo compartido es mucho mas barato que un conmutador de barras cruzadas, pero encuentra ms contenciones y retardos debido a la lgica de arbitraje del bus. Sin embargo, la razn de peticiones de interrupcin es suficientemente bajas para hacer que el bus compartido sea una solucin atractiva para la comunicacin interprocesador.El conjunto de procesadores usados en un sistema multiprocesador pueden ser homogneos o heterogneos. Es homogneo si los procesadores con funcionalmente idnticos, incluso de los procesadores son idnticos pueden ser asimtricos. Esto es, 2 componentes funcionalmente idnticos pueden diferir en otras dimensiones.En general, un sistema homogneo es ms fcil de programar al tiempo que elimina los problemas que aparecen al conectar 2 procesadores no similares. El sistema simtrico normalmente puede facilitar la recuperacin de errores en caso de fallo.

Asimetra entrada-salida: la asimetra tambin se puede extender a los dispositivos entrada salida con respecto a los procesadores. Una red de interconexin de E/S que tiene conectividad completa es simtrica. La figura 2 es un ejemplo de subsistema de E/S asimtrico. En tales sistemas los dispositivos asociados a un procesador no pueden ser accedidos directamente por otro procesador. image_(7).JPG

Figura " 2" En una estructura completamente simtrica, el fallo de un procesador central no excluye la accesibilidad de un dispositivo dado por otro procesador. En el caso asimtrico, el fallo de una CPU provoca que todos los dispositivos asociados a ese procesador resulten inaccesibles. El problema de la inaccesibilidad que encuentra un conjunto de dispositivos asociando a un procesador que falla puede superarse teniendo conexiones redundantes, como se muestra en la figura 3. Figura "3" La desventaja del caso completamente simtrico es el coste del conmutador de barras cruzadas.

image_(8).JPG

1.7. CARACTERSTICAS DE UN PROCESADOR PARA MULTIPROCESAMIENTO

a) Recuperabilidad del proceso: la arquitectura de un procesador utilizado en un sistema multiprocesador debera reflejar el hecho de que le proceso y el procesador son 2 entidades diferentes. Si el procesador falla, debera ser posible que otro procesador recupere el estado del proceso interrumpido de manera a que la ejecucin pueda continuar. Es deseable tener un archivo compartido por todos los procesadores para el caso que ocurra un modo de operacin degradado.

b) Conmutacin eficiente de contextos: para una utilizacin efectiva, es necesario que el procesador soporte ms de un dominio de direccionamiento y por tanto, proporcionar operaciones de cambio de dominio o conmutacin de contexto. Estas operaciones de conmutacin requieren muchas operaciones sobre colas y pilas. La operacin de conmutacin de contexto salva el estado del proceso actual y conmuta a un proceso preparado para ejecucin seleccionado mediante la restauracin del estado del nuevo proceso. El estado de un proceso de ejecucin lo indican los contenidos de los registros del procesador. Se puede crear una instruccin especial para llevar a cabo eficientemente la conmutacin de contexto.Disponiendo de un amplio nmero de conjuntos de registros la conmutacin de tareas puede realizarse eficientemente mediante el cambio del contenido del registro del proceso actual en el procesador que apunta al conjunto de registro que contiene el estado de proceso seleccionado como se muestra en la figura 4. El registro de proceso actual apunta al conjunto de registro actualmente en uso. Las instrucciones de pila salvan y restauran rpidamente la palabra de estado del procesador a minimizar los recargos de conmutacin.image_(9).JPGFigura "4" Conmutacin de contexto en un procesador con mltiples conjuntos de registros."Arquitectura de computadoras y procesamiento paralelo, Kai Hwang"c) Grandes espacios de direcciones virtuales y fsicos: un procesador que se vaya a utilizar en la construccin de un ultiprocesador de propsito general de media o gran escala debe soportar un gran espacio de direcciones fsicas. Adems de la necesidad de un gran espacio de direcciones fsicas tambin es deseable un gran espacio de direcciones virtuales. Si fuera posible, el espacio de direcciones virtuales debera ser segmentado para fomentar la comparticin modular y el chequeo de fronteras de direcciones para proteccin de memoria y fiabilidad software.

d) Primitivas eficientes de sincronizacin: el diseo del procesador debe proporcionar la implementacin de acciones indivisibles que sirvan de base a las primitivas de sincronizacin. Estas primitivas necesitan mecanismos eficientes para establecer la exclusin mutua, que se requiere cuando dos o mas proceso estn en ejecucin concurrentemente y debes cooperar al intercambio de dato durante la computacin.

e) Mecanismos de comunicacin interprocesador: el conjunto de procesadores utilizado en un multiporcesador debe disponer de un medio eficiente para la comunicacin entre ellos. Este mecanismo se deber implementar en hardware. Un mecanismo hardware es muy til para atraer la atencin del procesador objeto. La necesidad del tal mecanismo resulta evidente aun cuando en un sistema multiprocesador asncrono existen frecuentes peticiones de servicios de intercambio entre diferentes procesadores. El mecanismo interprocesador hardware puede tambin facilitar la sincronizacin entre los procesos. Este mecanismo se puede utilizar cuando ocurre un fallo al fin de indicar una seal hardware para todos los procesadores que estn funcionando, que podran entonces conocer del procesador que falla y comenzar una recuperacin del error o procedimiento de diagnostico.

f) Conjunto de instrucciones: el conjunto de instrucciones de un procesador debe tener las suficientes facilidades para implementar lenguajes de alto nivel que permitan concurrencia efectiva al nivel de procedimientos y para manipular eficientemente estructuras de datos. Debern disponer de instrucciones para enlace de procedimientos, construccin de bucles, manipulacin de direcciones. Adems, el conjunto de instrucciones deber incluir tambin instrucciones para crear y finalizar caminos de ejecucin paralela dentro de un programa.

Un sistema multiprocesador proporciona un entorno natural donde cada componente puede monitorizar a los otros de forma relativamente facil. Existen diferentes implementaciones de la tcnica de deteccin de errores, pero la idea bsica es que el temporizador har aparecer de alguna manera un indicado de condicin de error si no es desconectado dentro de un lmite de tiempo especificado.

1.8. REDES DE INTERCONEXIN EN LOS MULTIPROCESADORES

La principal caracterstica de un sistema multiprocesador es que cada procesador puede compartir un conjunto de mdulos de memoria principal, y dispositivos de E/S. Esto se consigue a travs de redes de conexin de memoria-procesador y otra de conexin E/S-procesador. Existen diferentes formas fsicas para las rede de interconexin (RI). Entre ellas:

Buses comunes o de tiempo compartido.El sistema RI ms simple para mltiples procesadores es un camino de comunicacin comn que conecte a todas las unidades funcionales 5. Este camino se denomina bus comn o de tiempo compartido, es la organizacin menos compleja y la ms facil de reconfigurar. Las operaciones de transferencia son controladas completamente por las interfase con e bus de las unidades de envi y recepcin. Ya que el bus es un recurso compartido se dispone de mecanismos para resolver conflictos.

image_(10).JPG

Figura "5". Organizacin multiprocesador de bus nicoLos mtodos de resolucin incluyen a las prioridades fijas o estticas, las colas y el encadenamiento mariposa. Un controlador central de bus aunque simplifica la solucin de conflictos, puede tener efectos negativos sobre la fiabilidad y flexibilidad del sistema. Una unidad receptora reconoce su direccin colocada sobre el bus y responde a las seales del control del emisor, esto aunque bsico tipifica las operaciones sobre el bus.Aunque la organizacin por bus nico es fiable y relativamente barata, introduce un componente critico que puede ocasionar el conflicto del todo el sistema como resultado de una mal funcin en cualquiera de los circuitos interfaz del bus. La razn de transferencia total dentro del sistema esta limitada al ancho de banda y la velocidad de este camino nico, por eso son altamente beneficiosos la memoria y dispositivos de E/S privados.Una extensin del camino nico a dos caminos unidireccionales como se muestra en la figura 6, alivia alguno de los problemas del sistema sin un incremento apreciable de la complejidad del sistema ni decremento de la fialidad.image_(11).JPG

Figura "6"En vista del nmero cada vez mayor de dispositivos conectados a un bus central, as como las velocidades de estos, los buses pueden resultar fuertemente sobrecargados, por tanto el bus deteriora el rendimiento de los dispositivos y del sistema completo.Examinaremos algoritmos de arbitraje que controlan el acceso al bus de los dispositivos que lo solicitan:a) Algoritmo de Prioridad Esttica: mucho buses digitales utilizados en la actualidad asignan prioridades estticas nicas a los dispositivos solicitantes. Cuando varios dispositivos piden al mismo tiempo el uso del bus, el dispositivo con ms alta prioridad obtiene el acceso. Esto se utiliza normalmente utilizando un esquema denominado encadenamiento margarita, en el que a todos los servicios se le asignan prioridades de acuerdo a su localizacin a lo largo de la lnea de control de concesin del bus. Al dispositivo mas proximo al controlador del Bus se le asigna la prioridad mas alta, figura "7"image_(12).JPG

Figura "7". Implementacin del encadenado mariposa esttico de un bus de un sistemab) Algoritmo de Intervalo Fijo de Tiempo: este divide el ancho de banda disponible en unidades de tiempo de longitud fija que se asigna a cada dispositivo en forma rotatoria. Si un dispositivo no usa su tiempo este se pierde para los dems. Esta tcnica denominada asignacin fija de tiempo FTS) o multiplexacion por divisin en el tiempo (TMD), se usa en el enlace de comunicaciones en paralelo de Digital que tambin permite una asignacin flexible de tiempo disponible a los dispositivos.c) Algoritmo de Prioridad dinmica: estos permiten conseguir la caracterstica de equilibrado de carga de los algoritmos simtricos, tales como el FTS, sin tener elevados tiempos de espera. A los dispositivos se le asignan prioridades nicas para acceder al bus, pero estas prioridades son cambiadas para que cada dispositivo pueda acceder al bus. Si el algoritmo que se usa para las permutaciones de las prioridades no favorece dispositivos individuales (es simtrico), entonces la carga del sistema equilibra las peticiones del bus. Adems utilizando las prioridades se supera la ineficiencia en el esquema FTS de asignar intervalos de tiempo completo a los dispositivos antes de colocar la peticin.d) Algoritmo primero que llega, primero que se sirve (FCFS): en el esquema se respeta el orden de recepcin de las peticiones, este esquema es simtrico porque no favorece ningn procesador particular ni dispositivo en el bus; por tanto equilibra las peticiones de bus. En esencia FCFS es el algoritmo ptimo de arbitraje del bus.Pero FCFS es difcil de implementar por al menos 2 razones. Cualquier implementacin de FCFS, a diferencia de los algoritmos precedentes, debe proporcionar un mecanismo para memorizar el orden de llegada de todas las peticiones de bus pendientes; pero ms importante siempre es posible que dos peticiones lleguen dentro de un intervalo suficientemente pequeo para que su orden relativo no se pueda distinguir correctamente.Otras dos tcnicas utilizadas en los algoritmos de control de bus son el sondeo (polling) y la peticin independiente. En un controlador de bus que se usa sondeo, la seal de concesin del Bus (BGT) de la implementacin del encadenamiento mariposa esttica se sustituye por un conjunto de lneas de sondeo, ver figura 8.image_(13).JPG

Figura "8". La unidad de control del bus finaliza el sondeo y el dispositivo D accede al bus. El acceso se mantiene hasta que el dispositivo pone en baja la lnea SACK. **Conmutador de barras cruzadas y memorias multipuesto.Si se incrementa el nmero de buses en tiempo compartido de un sistema, se alcanza un punto en el que hay un camino disponible para cada unidad de memoria, ver figura 9. La red de interconexin se denomina entonces barras cruzadas sin bloqueo. El conmutador posee una conectividad completa con respecto a los modulo de memoria porque hay un bus separado asociado con cada mdulo de memoria. As el numero mximo de transferencias que pueden tener lugar simultneamente esta limitado ms por el numero de mdulos de memoria y el producto ancho de banda-velocidad de los buses que el nmero de caminos disponibles.

image_(14).JPGFigura "9". (Cortesa de ACM computing Surveys, Enslow, 1977)

Las caractersticas importantes de un sistema que utiliza una matriz de interconexin de barras cruzadas son la simplicidad extrema de las interfaces conmutador-unidad funcional y la posibilidad de soportar transferencias simultneas para todas las unidades de memoria. Cada lugar de cruce no solo debe ser capaz de conmutar transmisiones paralelas, sino tambin de resolver las mltiples peticiones de acceso al mismo mdulo que ocurren durante un ciclo de memoria. Estas peticiones conflictivas se manejan normalmente sobre una base de prioridad predeterminada. El resultado de la inclusin de este tipo de capacidad es que el hardware necesario para implementar el conmutador puede llegar a ser bastante grande y complejo.En un dispositivo multipuesto los conflictos ocurren cuando 2 o ms peticiones concurrentes se realizan sobre el mismo dispositivo destino. La figura 10 muestra un ejemplo de diseo funcional de un elemento del conmutador de barras cruzadas o memoria multipuesto para un mdulo. Cada procesador genera una seal de peticin de mdulo de memoria (REQ) a la unidad arbitraje, la cual selecciona el procesador con ms alta prioridad., esta seleccion se hace con un codificador de prioridad. El mdulo de arbitraje devuelta una seas de reconocimiento (ACK) al procesador seleccionado, despus que le procesador recibe la seal ACK inicia su operacin de memoria.

image_(15).JPGFigura "10"El mdulo mulltiplexor; multiplexa datos, direcciones de palabras dentro del mdulo y seales de control desde el procesador hasta el mdulo de memoria, el mismo esta controlado por el nmero codificado del procesador seleccionado.Tericamente la expansin del sistema esta limitado slo por la medida de la matriz del conmutador, que con frecuencia se puede expandir modularmente dentro del diseo inicial y otras limitaciones de ingeniera.Para proporcionar la flexibilidad que se requiere en el acceso a los dispositivos de E/S, una extensin del concepto de conmutador de barras cruzadas consiste en utilizar un conmutador similar en el lado del dispositivo de E/S o canal, como se ve en la figura 11. El hardware necesario para la implementacin es bastante diferente y no tan complejo porque los controladores y dispositivos estn diseados para reconocer su propia direccin nica.

image_(16).JPG

Figura "11"El conmutador de barras cruzadas tiene capacidad para obtener el mayor ancho de banda y eficiencia del sistema. La fiabilidad del mismo es problemtica; sin embargo se puede mejorar mediante segmentacin y redundancia dentro del conmutador.Si el control, la conmutacin y la lgica de arbitraje que distribuidos por toda la matriz del conmutador de barras cruzadas se distribuyen en los interfaces de los mdulos de memoria, resulta un sistema de memoria multipuesto como en la Figura 12image_(17).JPG

Figura "12"La flexibilidad para configurar el sistema tambin hace posible designar porciones de memoria privadas para ciertos procesadores, unidades E/S o combinacin de ellos, as se ve en la figura 13: en esta organizacin los mdulos de memoria M0 y M3 son privador para los procesadores P0 y P1.

image_(18).JPG

Figura "13"La organizacin de memoria multipuerto tambin puede soportar accesos sin bloqueo a la memoria si se utiliza una topologa completamente conectada.Es muy difcil justificar el uso de un conmutador de barras cruzadas para grandes sistemas de multiprocesamiento. La ausencia de un conmutador con un coste y rendimiento razonables es un o de los motivos que ha impedido el crecimiento de grandes sistemas multimicroprocesador. El coste elevado del conmutador se puede evitar utilizando un conmutador con un nmero restringido de permutaciones posibles.

**Comparacin de 3 organizaciones Hardware multiprocesador.

Multiprocesadores con Bus de tiempo compartido:Coste del hardware del sistema mas bajo y menos complejo.Muy fcil de modificar fsicamente la configuracin del sistema hardware aadiendo o eliminando unidades funcionales.Capacidad del sistema total limitada por la razn de transferencia del bus.La expansin del sistema aadiendo unidades funcionales puede degradar el rendimiento total del sistema.La eficiencia alcanzable del sistema es la mas baja de los 3 sistemas bsicos de interconexin.Esta organizacin es normalmente apropiada solo para los sistemas ms pequeos.

Microprocesadores con Conmutador de barras cruzadas:Es el sistema de conexin ms complejo. Tiene capacidad para alcanzar la razn ms alta de transferencia total.Las unidades funcionales son las ms simples y ms baratas puesto que el control y la lgica de conmutacin se encuentran en el conmutador.Puesto que se requiere una matriz de conmutacin bsica para ensamblar las unidades funcionales en una configuracin de trabajo esta organizacin es normalmente de coste-efectivo solo para multiprocesadores.La expansin de los sistemas normalmente mejora el rendimiento del sistema. Existe la ms alta capacidad para eficiencia del sistema, as como para la expansin del sistema sin reprogramacin del sistema operativo.Tericamente, la expansin del sistema esta limitada solo por la medida de la matriz del conmutador, que puede con frecuencia expandirse modularmente dentro del diseo modular u otras limitaciones tcnicas.La fiabilidad del conmutador, y por tanto la del sistema, se puede mejorar por segmentacin y/o redundancia dentro del conmutador.

Multiprocesadores con Memoria Multipuerto:Requiere las unidades de memorias ms caras puestos que la mayor parte de la circuitera de control y conmutacin esta incluida en la unidad de memoria.Las caractersticas de las unidades funcionales permiten a un mono procesador de coste bajo ser ensamblado desde ella.Existe capacidad para una razn de transferencia total muy alta en el sistema completo.El tamao y opciones de configuracin posibles estn determinadas por el nmero y tipo de los puertos de memoria disponibles.Se requiere un gran nmero de cables y conectores.

1.9. TIPOS DE SISTEMAS OPERATIVOS MULTIPROCESADOR

Existe poca diferencia conceptual entre las necesidades de un sistema operativo de un multiprocesador y las de un gran computador que utilice multiprogramacin. Sin embargo, existe una complejidad adicional en el sistema operativo cuando mltiples procesadores han de trabajar simultneamente. La complejidad tambin se origina por la necesidad de que el sistema operativo tenga que soportar mltiples tareas asncronas que se ejecutan concurrentemente.Entre las capacidades funcionales que se necesitan frecuentemente en un sistema operativo para un computador multiprogramado se encuentran los esquemas de asignacin y administracin de recursos, la proteccin de memoria y conjuntos de datos, la prevencin de bloqueos en el sistema y la terminacin anormal de procesos o el manejo de excepciones. Adems de estas capacidades, un sistema multiprocesador tambin necesita tcnicas para la utilizacin eficiente de recursos y por consiguiente, debe proporcionar esquemas de entrada-salida y equilibrado de carga del procesador. Una de las principales razones para utilizar un sistema multiprocesador estriba en proporcionar una fiabilidad efectiva y una degradacin ordenada (graceful degradacin) cuando ocurre un fallo. Por tanto, el sistema operativo tambin debe ser capaz de proporcionar esquemas de reconfiguracin del sistema para soportar degradacin ordenada. Un sistema operativo que se comporte pobremente negar otras ventajas que estn asociadas al multiprocesamiento. Por tanto, es de la mayor importancia que el sistema operativo para un multiprocesador se disee eficientemente.La influencia de un gran nmero de procesadores sobre el diseo de un sistema operativo es todava un problema de investigacin. La modularidad de los procesadores y la estructura de la interconexin entre ellos afectan al desarrollo del sistema. Adems, los esquemas de comunicacin, los mecanismos de sincronizacin y las polticas de ubicacin y asignacin dominan la eficiencia del sistema operativo.Existen bsicamente tres organizaciones que se han utilizado en el diseo de sistemas operativos para multiprocesadores, a saber: configuracin maestro-subordinado, supervisor separado para cada procesador y control supervisor flotante.En un modo maestro-subordinado, un procesador, denominado el maestro, mantiene el estado de todos los procesadores del sistema y distribuye el trabajo entre todos los procesadores subordinados.Puesto que la rutina supervisora siempre se ejecuta en el mismo procesador, una peticin del subordinado mediante un desvo (trap) o una instruccin de llamada al supervisor para un servicio ejecutivo, debe ser enviada al maestro, que reconoce la peticin y realiza el servicio apropiado. Existen otras caractersticas del sistema operativo maestro-subordinado. Los conflictos de tablas y los problemas de bloqueo (lock-out) en las tablas de control del sistema se simplifican al obligar a que el ejecutivo corra sobre un nico procesador. Sin embargo, este modo del sistema operativo provoca que todo el sistema sea muy susceptible a fallos catastrficos que requieren la intervencin del operador para arrancar el procesador maestro cuando ocurre un error irrecuperable. Adems de la inflexibilidad a nivel del sistema completo, la utilizacin del procesador subordinado puede llegar a ser apreciablemente baja si el maestro no puede distribuir procesos lo suficientemente rpido para mantener ocupados a los subordinados. El modo maestro-subordinado es ms efectivo para aplicaciones especiales donde la carga de trabajo est bien definida o para sistemas asimtricos en los que los subordinados tienen menos capacidad que el procesador maestro. Este es el modo a veces utilizado si existen pocos procesadores involucrados.Cuando hay un sistema supervisor separado [ncleo (kernel) el sistemas maestro-subordinado tiene un sistema distinto con respecto a las caractersticas de un sistema operativo. Se trata de algo similar al pensar en las redes de computadores, donde cada procesador contiene una copia de un ncleo bsico. Al compartir los recursos ocurre a un nivel ms alto, por ejemplo, a travs de una estructura compartida de archivos. Cada procesador sirve sus propias necesidades. Sin embargo, ya que existen efectos entre los procesadores, es necesario que parte del cdigo supervisor sea reentrante o duplicado para proporcionar copias separadas a cada procesador. Esto crea problemas de acceso a las tablas.Desafortunadamente, la copia del ncleo en los procesadores podra necesitar mucha memoria que pudiera quedar desutilizada, especialmente cuando se compara con la utilizacin de las estructuras de datos compartidas.En este sistema no se pueden evitar los problemas de acceso a las tablas y los atrasos de bloqueo de las mismas. Es importante controlar estos accesos de tal manera que quede protegida la integridad del sistema. Adems, proporciona una mejora verdadera y hace el uso ms eficiente de los recursos disponibles.No obstante, la mayor parte de los sistemas operativos no son ejemplos propios de alguna de las tres clases que acabamos de decrselos. La nica generalizacin posible es que el primer sistema que se produce es normalmente de tipo maestro-subordinado y el ltimo pretende ser el control supervisor flotante. En la tabla siguiente resumimos las principales caractersticas, ventajas y problemas de los tres tipos de sistemas operativos para multiprocesadores.

**Configuraciones de sistemas operativos para multiprocesadores.

Sistemas operativos en maestro-subordinado:

1. La rutina ejecutiva siempre se ejecuta en el mismo procesador. Si el subordinado necesita servicio que deba proporcionar el supervisor, debe pedido y esperar hasta que el programa actual sobre el procesador maestro sea interrumpido y que entre en accin el supervisor. El supervisor y las rutinas que usa no tienen que ser entrantes, ya que hay solamente un procesador que las utiliza.2. Tener un nico procesador ejecutando el supervisor simplifica los problemas de conflicto y bloqueo en el control de tablas. El sistema completo es comparativamente inflexible. Este tipo de sistema necesita comparativamente software y hardware simples.3. El sistema completo est sujeto a fallos catastrficos que requieren la intervencin del operador para reinicializarlo cuando el procesador diseado como maestro tiene un fallo o un error irrecuperable.4. El tiempo de desocupacin del sistema subordinado puede aumentar y llegar a ser bastante apreciable si el maestro no puede ejecutar las rutinas de distribucin (dispatching) con la velocidad suficiente para mantener ocupado(s) a el(los) subordinados(s).5. Este tipo de sistema operativo es mas efectivo para aplicaciones especiales donde la carga de trabajo est bien definida o para sistemas asimtricos en los que los subordinados tienen menos capacidad que el procesador maestro.

Supervisor separado por cada procesador:1. Cada procesador se sirve sus propias necesidades. En efecto, cada procesador (supervisor) tiene su propio conjunto de equipos de E/S, archivos, etc.2. Es necesario que parte del cdigo supervisor sea reentrante o duplicado para proporcionar copias separadas a cada procesador.3. Cada procesador (realmente cada supervisor) tiene su propio conjunto de tablas privadas, aun que algunas tablas deben ser comunes para el sistema entero, lo que crea problemas de control de acceso a las tablas.4. El sistema operativo de supervisor separado es tan sensible como el maestro-subordinado; sin embargo. La reinicializacin de un procesador individual que ha fallado ser probablemente bastante difcil.5. Debido al punto anterior, la reconfiguracin de la E/S normalmente requiere intervencin manual y posiblemente conmutacin manual.

Sistema Operativo de supervisor flotante1. El maestro flota de un procesador a otro, aunque varios procesadores pueden calar ejecutando rutinas de servicio del supervisor al mismo tiempo.2. Este tipo de sistema puede lograr mejor balance de carga sobre todo tipo de recursos.3. Los conflictos en las peticiones de servicios se resuelven por prioridades que pueden ser estticas o dinmicas.4. La mayor paree del cdigo supervisor debe ser reentrante, ya que varios procesadores pueden ejecutar la misma rutina de servicio al mismo tiempo.5. Pueden ocurrir conflictos de acceso a las tablas y retardos de bloqueo, pero no hay forma de evitar esto con supervisores mltiples; el punto importante es que se deben controlar de tal manera que la integridad del sistema quede protegida.

1.10. REQUISITOS DE SOFTWARE PARA MULTIPROCESADORES

Una de las preguntas bsicas que hay que discutir es: en que se diferencian el software de los monoprocesadores de los multiprocesadores? Existen bsicamente dos diferencias fundamentales. Estas diferencias justifican que tanto el hardware como el software de tales sistemas proporcionen facilidades diferentes tanto a un monoprocesador multiprogramado y a procesadores mltiples. Un monoprocesador multiprogramado puede simular mediante tcnicas de mltiples procesadores virtuales; sin embargo, los procesadores mltiples aumentan normalmente la cantidad de software de administracin que se debe dar.

1.11. REQUISITOS DE LOS SISTEMAS OPERATIVOS

Un sistema operativo multiprocesador gestiona los recursos disponibles y acrecienta la funcionalidad hardware para formar una abstraccin que facilite la ejecucin de programas y la interaccin con los usuarios. Los tres tipos bsicos de recursos que necesitan ser gestionados son: Procesadores Memoria Dispositivos de E/S

1.11.1. Planificacin De Procesadores

La planificacin de procesadores es crucial para el uso efectivo de los multiprocesadores. Las principales tareas de un planificador multiprocesador son: Asignar los procesadores a las aplicaciones de manera consistente con los objetivos del diseo del sistema. Asegurar el uso eficiente de los procesadores asignados a una aplicacin.Las dos facetas principales del soporte de SO para multiprocesamiento son: Mecanismos de sincorinizacin flexibles y eficientes entre procesadores y entre procesos. Creacin y gestin eficiente de un gran nmero de hebras de actividad, tales como procesos o hebras.

1.11.2. Gestin de Memoria

La Gestin de Memoria en multiprocesadores es altamente dependiente de la arquitectura y del esquema de interconexin subyacentes. La memoria en sistemas dbilmente acoplados se gestiona generalmente de forma independiente, procesador a procesador. En sistemas de memoria compartida, el sistema operativo debera proporcionar un modelo flexible de memoria que facilite al acceso seguro y eficiente a estructuras de datos compartidas y a variables de sincronizacin. Idealmente un sistema operativo multiprocesador debera proporcionar un modelo unificado de la memoria compartida, independiente del hardware, para facilitar el transporte de las aplicaciones entre diferentes entornos multiprocesadores. La memoria compartida puede ser simulada en sistemas dbilmente acoplados por medio de un mecanismo de paso de mensajes. Y a la inversa, el paso de mensajes puede ser eficientemente implementando en sistemas fuertemente acoplados apoyndose en la memoria fsicamente compartida. Tal modelo unificado de memoria, formado por mensajes y memoria compartida, proporciona un modelo flexible y un conjunto de herramientas para los programadores de aplicacin.

1.11.3. Gestin de Dispositivos

La Gestin de Dispositivos ha recibido poca atencin en los sistemas multiprocesador hasta la fecha. En parte se debe a que inicialmente a la atencin se ha centrado en la ganancia de velocidad para aplicaciones intensivas en clculo que tienden a estar ejecutndose durante extensos periodos de tiempo y no generan demasiada E/S tras la carga inicial. Sin embargo, conforme los multiprocesadores se apliquen a aplicaciones ms equilibradas de propsito general, cabe esperar que sus necesidades de E/S aumenten en proporcin con la productividad y la ganancia de velocidad conseguida. Los trabajos sobre arrays de disco (Katz et al., 1989) abordan algunos de estos problemas, pero ser necesario investigar muchas otras nuevas tcnicas innovadoras para obtener un rendimiento significativamente creciente utilizando dispositivos de E/S cuyas velocidades individuales permanecen esencialmente inalteradas. Es razonable esperar que la aplicacin de tcnicas de multiprocesamiento a la E/S y hacerlos funcionar en paralelo, produzca buenos resultados.En general los objetivos bsicos de un sistema operativo consisten en proporcionar al programador una interfaz (entorno) con la mquina, manejo de recursos, mecanismos para implementar polticas (definibles por el usuario) y facilitar el afuste de las aplicaciones con la mquina. Tambin debe ayudar a conseguir fiabilidad. Pero estos y otros atributos deseables suponen un coste que puede ser inaceptable. Se pueden establecer unas directrices, para compaginar el rendimiento y los atributos deseables. Tambin se deber determinar el grado de transparencia de la mquina detallada que se deber poner a disposicin del programador.Hay diferentes niveles de interaccin en la especificacin de un sistema operativos para multiprocesamiento. Los procesos supervisores asncronos comparten la especificacin de la administracin del espacio de direcciones, administracin de procesos y niveles de sincronizacin. Los sistemas operativos eficientes se disean para que tengan una estructura modular y una organizacin jerrquica. Las funciones clsicas de un sistema operativo incluyen la creacin de objetos tales como procesos sus dominios, que incluye los segmentos de memoria. Los procesos de comunicacin deben tener lugar a travs de variables compartidas o globales. Los procesos cooperantes deben se deben comunicar para sincronizar o limitar su concurrencia.En sistemas con mltiples procesos concurrentes, la presencia de recursos tales como unidades de registro perifricas y unidades de cinta que no se deben utilizar simultneamente por varios procesos introduce la necesidad de acceso exclusivo a estos dispositivos.La comparticion de los mltiples procesadores se puede conseguir colocando los diferentes procesos juntos en memoria compartida y proporcionando un mecanismo para conmutar rpidamente la atencin de un procesador de proceso a otro. Esta operacin se denomina a menudo Conmutacin de contexto. La comparticion de los procesos introduce tres problemas subordinados: La proteccin de los recursos de un proceso contra daos intencionados o accidentales por parte de otros procesos. La provisin de comunicacin entre procesos y entre procesos de usuario y procesos del supervisor.La asignacin de recursos entre procesos para que se pueda siempre satisfacer la demanda de recursos.