martes, 17 de mayo de 2016

PARALELISMO


Caracterización del Paralelismo  

En general, la eficiencia de una máquina, para resolver un problema dado, depende de la implementación del algoritmo de resolución. En particular, las máquinas paralelas ofrecen un poder de cálcul o enorme, pero explotar todas sus potencialidades no es fácil. Por otro lado, los problemas tienen diferentes características factibles a explotar, cuando se desean desarrollar aplicaciones paralelas para resolverlos. La mejor implementación secuencial de resolución de un problema dado no conlleva obligatoriamente al mejor algoritmo paralelo, ya que para desarrollar un algoritmo paralelo se deben explotar lo que denominaremos las fuentes de paralelismo del problema. Básicamente, existen dos modos de ver el paralelismo.


  •  Modo Concurrente: supongamos una aplicación paralela compuesta de tareas, donde además, existe una estructura de intercambio de información entre las tareas. Los sistemas concurrentes buscan ejecutar simultáneamente las que se pueden (si no existen dependencia entre ellas, etc.). La red de intercambio de información es asimétrica y los intercambios asincrónicos. Los problemas de asignación de tareas y gestión de la red de interconexión son dos de los problemas más importantes a resolver. Este enfoque implica que las tareas a paralelizar deben ser explícitamente definidas
  •  - Modo Paralelo: las tareas de la aplicación se organizan en forma de una estructura regular como una tabla. Las tareas son lo más parecido posible entre ellas, y la red de interconexión es síncrona y simétrica espacialmente. Muchas veces, esto conlleva a que las aplicaciones pasen por una fase de pre-tratamiento para espaciarlas y transformarlas en tareas simétricas. Es más fácil construir máquinas paralelas para que exploten este modo. Normalmente, en este caso, el paralelismo es implícito, por lo que extraer su paralelismo es uno de los problemas fundamentales a resolver.
Para ambos modos se han desarrollado diferentes lenguajes de programación, ambientes de desarrollo, etc.

Perfil de Paralelismo

 El perfil de paralelismo de una aplicación es definido como la “cantidad de paralelismo” que una aplicación posee. Dicha cantidad esta caracterizada por dos parámetros: grado y grano de paralelismo

 Granularidad;  El grano de paralelismo es definido como el tamaño promedio de las acciones (tamaño promedio de una tarea elemental) en termino de:

  •  - Número de instrucciones ejecutadas. 
  • - Número de palabras de memorias usadas.
  •  - Duración de su tiempo de ejecución. 
 También puede definirse como la cantidad de procesamiento que una tarea realiza antes de necesitar comunicarse con otra tarea. Por supuesto, un grano puede crecer o decrecer agrupando o desagrupando tareas. Esto establece una relación entre el tiempo de cálculo con respecto al número de eventos de comunicación (granularidad de la aplicación). Así, la granularidad, es la relación entre la computación y la comunicación, a lo interno de una aplicación. Una granularidad pequeña (grano fino) implica más comunicación y cambios de contextos entre las tareas (es una aplicación con comunicación intensiva). Una granularidad grande (grano fuerte) implica menos comunicación, pero puede que potenciales tareas concurrentes queden agrupadas, y por consiguiente, ejecutadas secuencialmente. Así, la determinación del grano ideal, para una aplicación dada, es importante, para definir la mejor relación entre paralelismo (grano pequeño) y comunicación (grano grande). El problema de determinación del tamaño óptimo del grano para una aplicación dada es un problema de optimización del tipo MaxMin (Maximizar paralelismo y Minimizar comunicación), y debe estar vinculado a la máquina donde se ejecuta la aplicación. El paralelismo a grano fuerte, es normalmente usado en las arquitecturas tipo MIMD, mientras que el paralelismo a grano fino es especialmente usado en las máquinas SIMD.


 Grado de Paralelismo 

El grado de paralelismo es definido como el número de acciones (tareas) que se pueden ejecutar en paralelo durante la ejecución de una aplicación. Es decir, corresponde a una medida del número de operaciones que se pueden ejecutar simultáneamente, y refleja el número de procesadores a utilizar en paralelo durante la ejecución de la aplicación. Puede ser calculado estáticamente, según la estructura de la aplicación, o dinámicamente, a partir de medidas durante la ejecución. El grado de paralelismo puede ser diferente a través de las diferentes partes de un programa, por lo que se habla de un grado de paralelismo máximo, mínimo y promedio. El grado máximo es el límite superior en cuanto al número de procesadores que podrían utilizarse. Con ese número de procesadores la ejecución de la aplicación quizás sería la más rápida posible, pero su eficacidad podría ser mediocre si ese valor máximo excede en mucho al grado promedio de paralelismo (muchos procesadores pasarían inactivos durante gran parte de la ejecución del programa).


. Fuentes de Paralelismo 

Las máquinas paralelas tienen por finalidad explotar el paralelismo inherente en las aplicaciones paralelas. Todas las aplicaciones no tienen el mismo tipo ni la misma cantidad de paralelismo. El primer aspecto tiene que ver con una característica   cualitativa: la manera como el paralelismo puede ser explotado, denominado fuente de paralelismo. Básicamente, existen tres tipos de paralelismo de control, de datos y de flujo. Muchas aplicaciones usan los tres tipos de paralelismo al mismo tiempo.


 Paralelismo de Control 
Consiste en hacer cosas diferentes al mismo tiempo.  Este tipo de paralelismo surge de la constatación natural de que una aplicación paralela está compuesta de acciones que se pueden hacer al mismo tiempo. Las acciones (tareas o procesos) pueden ser ejecutadas de manera más o menos independiente sobre diferentes procesadores. El paradigma de programación divide y vencerás es típico de esta fuente de paralelismo.
 En este enfoque se requiere una primera fase de descomposición del programa en tareas, para después definir cuáles se pueden ejecutar simultáneamente o se deben ejecutar secuencialmente. Los criterios importantes a considerar son el número de tareas, el grano de paralelismo, y las dependencias entre las diferentes tareas. Una dependencia surge cuando una acción (tarea) se debe terminar para que otra continúe. Existen dos clases de dependencias:

  •  - Dependencia de Control de Secuencia: Es el secuenciamiento clásico de los algoritmos secuenciales. 
  • - Dependencia de Control de Comunicación: Es cuando una tarea envía información a otra tarea, la cual no puede continuar hasta recibir dicha información.
 Los dos casos de dependencias deben optimizar el siguiente criterio a la hora de asignar las tareas a los procesadores: minimizar los lapsos de tiempo que pasan los procesadores desocupados, o a la espera, debido a dichas dependencias. Bajo la noción de manejo de recursos, la explotación de paralelismo de control consiste en manejar las dependencias entre las tareas de una aplicación, para obtener una asignación de ellas, tan eficaz como sea posible.

Las principales limitaciones que se encuentran en este paralelismo son las siguientes :

  •  - Dependencias Temporales: ligadas al problema de secuenciamiento y comunicación entre las tareas. 
  • - Dependencias Espaciales: ligadas al número limitado de recursos. Si no existen suficientes procesadores, un fenómeno de cuello de botella se produce, tal que es necesario ejecutar secuencialmente parte del trabajo. 
  • - Sobrecosto por la gestión de los granos: cuando el tamaño del grano de paralelismo es muy pequeño, los tiempos de gestión (activación, suspensión, etc.) son cada vez más grandes con respecto al trabajo efectuado por el sistema para ejecutar las tareas.
  •  - El tamaño de las tareas que se ejecutan concurrentemente debe ser similar. Un desequilibrio en el mismo puede conllevar a tiempos en los que sólo pocos procesadores están trabajando.
  •  - En máquinas de memorias distribuidas o máquinas con jerarquía de memoria, hay que añadir el problema de comunicación típico de estas arquitecturas.
 Las características básicas a considerar en este paralelismo son:

  •  - Un programa paralelo consiste de una o más tareas, algunas de las cuales pueden ejecutarse concurrentemente mientras que otras dependen de la ejecución previa de otras tareas. 
  • - Una tarea encapsula un programa secuencial y normalmente requiere comunicarse con su ambiente u otras tareas del mismo programa (compartiendo espacios de memoria o enviando mensajes).
  •  - El tamaño de las tareas debe ser lo suficientemente grande, para que el tiempo para iniciar la ejecución de una tarea no sea importante.
  •  - Se deben resolver los problemas de planificación de la ejecución de las tareas, de asignación de las tareas a los procesadores, etc., con la idea de reducir sus tiempos de ejecución. 
  • - Las tareas pueden ser asignadas a los procesadores según diferentes criterios: distribuyendo la carga de trabajo, minimizando los costos de comunicación entre ellas, etc.
Paralelismo de Datos 


La explotación del paralelismo de datos proviene de la constatación de que ciertas aplicaciones actúan sobre estructuras de datos regulares (vectores, matrices, etc.), repitiendo un mismo cálculo sobre cada elemento de la estructura. Así, normalmente, se habla de programas que manipulan estructuras de datos regulares. La idea es explotar la regularidad de los datos, realizando en paralelo un mismo cálculo sobre datos distintos, por ejemplo: “aumentarle el salario a todos los empleados con más de 5 años de servicio”.
 En este tipo de paralelismo se asocian directamente los datos a los procesadores. Como los cálculos se realizan en paralelo sobre procesadores idénticos, es posible centralizar el control. Al ser los datos similares, la operación a repetir toma el mismo tiempo sobre todos los procesadores, y el controlador puede enviar de manera síncrona la operación a ejecutar a todos los procesadores. Normalmente, este es un tipo de paralelismo de grano fino, por lo cual se requieren plataformas del tipo SIMD.
 Las principales limitaciones que se encuentran en este paralelismo son las siguientes:

  •  - Manejo de Vectores: si el tamaño de la máquina es más pequeño que el tamaño de los datos vectoriales, hay que descomponerlos, lo que agrega un tiempo extra de asignación y de gestión de tareas. 
  • - Manejo de Escalares: las aplicaciones que manipulan datos vectoriales, usan frecuentemente datos escalares. Cuando se procesa el escalar, sólo un procesador trabaja y el resto permanece ocioso.
  •  - Operaciones de difusión y reducción: estas operaciones sobre los datos vectoriales normalmente no son realizadas en paralelo, aunque realmente esto depende de la topología de la plataforma.
 Algunos aspectos son importantes a considerar cuando se desea explotar este tipo de paralelismo. Dichos aspectos son los siguientes:

a) Distribución de los Datos: Los datos son normalmente numerosos, mucho mayor al número de procesadores en el sistema. Esto obliga a que los datos sean repartidos entre los diferentes procesadores disponibles. La regularidad de las estructuras de datos permite distribuirlos de manera regular.

 b) Ejecución Síncrona : El paralelismo de datos es clásicamente usado en máquinas SIMD con control centralizado, por lo que se puede ver como un flujo de control sobre múltiples datos. En este caso, la sincronización es automática al existir un sólo controlador.

 c) Dependencia de Datos

d) Perfil de Paralelismo de Datos :Existen dos operaciones básicas en el paralelismo de datos, a través de las cuales se puede expresar todo el paralelismo encontrado en él: ϕ-notación y β-reducción. ϕ- notación es descrita por una función f de dimensión n y n vectores del mismo tamaño. ϕ- notación aplica en paralelo la función f sobre el conjunto de vectores.


 ϕ y β son lo suficientemente generales como para expresar un gran número de operaciones sobre datos regulares, como vectores y matrices, al tratar de explotar el paralelismo de datos.

taxonomía de flynn


Taxonomia de Flynn

En 1966 Michael Flynn propuso un mecanismo de clasificación de las computadoras. El método de Flynn se basa en el número de instrucciones y de la secuencia de datos que la computadora utiliza para procesar información. Puede haber secuencias de instrucciones sencillas o múltiples y secuencias de datos sencillas o múltiples. Esto da lugar a 4 tipos de computadoras, de las cuales solamente dos son aplicables a las computadoras paralelas




Esquema de la Taxonomía de Flynn
                                  
Michael Flynn 
                                              



           
Una instrucción, un dato (SISD)



En computación, SISD (del inglés Single Instruction, Single Data, en español: "una instrucción, un dato") es un término que se refiere a una arquitectura computacional en la que un único procesador ejecuta un sólo flujo de instrucciones, para operar sobre datos almacenados en una única memoria. Se corresponde con la arquitectura de Von Neumann.

Según Michael J. Flynn, SISD puede tener características del procesamiento concurrente. La carga de instrucciones y la ejecución segmentada de instrucciones son ejemplos comunes encontrados en las computadoras SISD más modernas.

Caracteristicas:

  • La CPU procesa únicamente una instrucción por cada ciclo de reloj
  • Únicamente un dato es procesado en cada ciclo de reloj
  • Es el modelo más antiguo de computadora y el más extendido



Múltiples instrucciones, un dato (MISD):
En computación, MISD (del inglés Multiple Instruction, Single Data, en español: "múltiples instrucciones, un dato") es un tipo dearquitectura computacional (particularmente de computación paralela) donde muchas unidades funcionales realizan diferentes operaciones en los mismos datos. Las arquitecturas segmentadas pertenecen a este tipo, aunque en un extremo se podría llegar a decir que los datos son diferentes después de ser procesados por cada etapa en el pipeline, con lo cual no entraría en esta categoría.

Las máquinas tolerantes a fallos ejecutan la misma instrucción redundantemente para detectar y corregir errores, utilizando task replication, son consideradas de este tipo. No existen muchos ejemplos de esta arquitecura dado que las técnicas más comunes de procesamiento de datos en paralelo suelen ser más apropiadas para MIMD y SIMD. Específicamente, facilitan el escalamiento y el uso de recursos computacionales mejor que MISD.

Características del modelo MISD:
  • Cada unidad ejecuta una instrucción distinta
  • Cada unidad procesa el mismo dato
  • Aplicación muy limitada en la vida real




Una instrucción, múltiples datos (SIMD)
En computación, SIMD (del inglés Single Instruction, Multiple Data, en español: "una instrucción, múltiples datos") es una técnica empleada para conseguir paralelismo a nivel de datos.

Los repertorios SIMD consisten en instrucciones que aplican una misma operación sobre un conjunto más o menos grande de datos. Es una organización en donde una única unidad de control común despacha las instrucciones a diferentes unidades de procesamiento. Todas éstas reciben la misma instrucción, pero operan sobre diferentes conjuntos de datos. Es decir, la misma instrucción es ejecutada de manera sincronizada por todas las unidades de procesamiento.

Características del modelo SIMD:

  • Todas las unidades ejecutan la misma instrucción
  • Cada unidad procesa un dato distinto
  • Todas las unidades operan simultáneamente


Múltiples instrucciones, múltiples datos (MIMD)

En computación, MIMD (del inglés Multiple Instruction, Multiple Data, en español "múltiples instrucciones, múltiples datos") es una técnica empleada para lograr paralelismo. Las máquinas que usan MIMD tienen un número de procesadores que funcionan de manera asíncrona e independiente. En cualquier momento, cualquier procesador puede ejecutar diferentes instrucciones sobre distintos datos. La arquitectura MIMD pueden utilizarse en una amplia gama de aplicaciones como el diseño asistido, simulación, modelado y en interruptores. Las computadoras MIMD pueden categorizarse por tener memoria compartida o distribuida, clasificación que se basa en cómo el procesador MIMD accede a la memoria. La memoria compartida de las máquinas puede estar basada en buses, extensiones, o de tipo jerárquico. Las máquinas con memoria distribuida pueden tener esquemas de interconexión en hipercubo o malla

Características del modelo MIMD:
  • Cada unidad ejecuta una instrucción distinta
  • Cada unidad procesa un dato distinto
  • Todas las unidades operan simultáneamente


Clasificaciones Adicionales



También existe una extensión común a esta taxonomía que es:
  • Un programa, múltiples datos (SPMD) - múltiples procesadores autónomos que trabajan simultáneamente sobre el mismo conjunto de instrucciones (aunque en puntos independientes) sobre datos diferentes. También se le llama 'un proceso, múltiples datos'.
  • Múltiples programas, múltiples datos (MPMD) - múltiples procesadores autónomos que trabajan simultáneamente sobre al menos dos programas independientes. Normalmente este sistema elige a un nodo para ser el host o administrador, que corre el programa y otorga los datos a todos los demás nodos que ejecutan un segundo programa. Esos demás nodos devuelven sus resultados directamente al administrador. Un ejemplo podría ser la consola de Sony PlayStation 3, que tiene la arquitectura de procesador SPU/PPU.

lunes, 16 de mayo de 2016

memorias del computador


Historia de la memoria

La historia de la memoria flash siempre ha estado muy vinculada con el avance del resto de las tecnologías a las que presta sus servicios como routers, módems, BIOS de los PC, wireless, etc. Fue Fujio Masuoka en 1984, quien inventó este tipo de memoria como evolución de las EEPROM existentes por aquel entonces. Intel intentó atribuirse la creación de esta sin éxito, aunque si comercializó la primera memoria flash de uso común.
Entre los años 1994 y 1998, se desarrollaron los principales tipos de memoria que conocemos hoy, como la SmartMedia o la CompactFlash. La tecnología pronto planteó aplicaciones en otros campos. En 1998, la compañía Rio comercializó el primer ‘Walkman’ sin piezas móviles aprovechando el modo de funcionamiento de SmartMedia. Era el sueño de todo deportista que hubiera sufrido los saltos de un discman en el bolsillo.

En 1994 SanDisk comenzó a comercializar tarjetas de memoria (CompactFlash) basadas en estos circuitos, y desde entonces la evolución ha llegado a pequeños dispositivos de mano de la electrónica de consumo como reproductores de MP3 portátiles, tarjetas de memoria para vídeo consolas, capacidad de almacenamiento para las PC Card que nos permiten conectar a redes inalámbricas y un largo etcétera, incluso llegando a la aeronáutica espacial. 
¿ Que son las memorias ?
.


La memoria hace referencia a Componentes, Dispositivos y medios que se utilizan para almacenar y acceder a la información durante algún intervalo de tiempo. Es uno de los elementos centrales de todas las computadoras modernas (Arquitectura Von Neumann) junto con la unidad de procesamiento central (CPU).
La gran capacidad de procesar y almacenar información es una de las ventajas claves que nos ofrecen las computadoras, Cabe hacer notar la diferencia entre memoria y almacenamiento, nos referimos a memoria cuando el dispositivo retiene la información por una cierta cantidad de tiempo para poder procesar estos datos en base a una tarea.
Nos referimos a Almacenamiento cuando el dispositivo guarda la información para su posterior uso.
La memoria se clasifica en Primaria y Secundaria según con que velocidad la información se tramita con la unidad de procesamiento central.
memorias primarias
**memori ram**
.
La memoria de acceso aleatorio, (en inglés: Random Access Memory cuyo acrónimo esRAM) es la memoria desde donde el procesador recibe las instrucciones y guarda los resultados. Es el área de trabajo para la mayor parte del software de un computador.[1] Existe una memoria intermedia entre el procesador y la RAM, llamada caché, pero ésta sólo es una copia de acceso rápido de la memoria principal almacenada en los módulos de RAM.[1] Los módulos de RAM son la presentación comercial de este tipo de memoria, se compone de integrados soldados sobre un circuito impreso.
**memoria rom**

.
¿que es la memoria rom?
la memoria rom es una mmoria de solo lecura(permnete) o “no volatil”, a diferencia de la ram que es una memoria temporal o “volatil”.que quiere decir de que sea una memoria de solo lectura, de que esta es utilizada para almacenar datos  o programas los cuales ponen en marcha el ordenador.
¿que tipos de datos almacena la memoria rom?
los datos o programas que se encuentran almacenados en ella son aquellos que necesitamos para que nuestro ordenador pueda iniciarse correctamente.
¿tipos de memorias rom?
·     ROM
·     PROM
·     EPROM
·     EEPROM
·     Memoria Flash
Cada tipo tiene unas características especiales, aunque todas tienen algo en común:
  • Los datos que se almacenan en estos chips son no volátiles, lo cual significa que no se pierden
cuando se apaga el equipo.
  • Los datos almacenados no pueden ser cambiados o en su defecto necesitan alguna operación especial para modificarse. Recordemos que la memoria RAM puede ser cambiada en al momento.
Todo esto significa que quitando la fuente de energía que alimenta el chip no supondrá que los datos se pierdan irremediablemente.

sábado, 14 de mayo de 2016

clusters



¿QUE ES UN CLUSTER?

Un cúmulo, granja o cluster de computadoras, lo podemos definir como un sistema de procesamiento paralelo o distribuido. Consta de un conjunto de computadoras independientes, interconectadas entre sí, de tal manera que funcionan como un solo recurso computacional. A cada uno de los elementos del cluster se le conoce como nodo. Estos son aparatos o torres que pueden tener uno o varios procesadores, memoria RAM, interfaces de red, dispositivos de entrada y salida, y sistema operativo. Los nodos pueden estar contenidos e interconectados en un solo gabinete, o, como en muchos casos, acoplados a través de una red de área local (LAN (Local Area Network)). Otro componente básico en un cluster es la interfaz de la red, la cual es responsable de transmitir y recibir los paquetes de datos, que viajan a través de la red entre los nodos. Finalmente el lograr que todos estos elementos funcionen como un solo sistema, es la meta a la que se quiere llegar para dar origen a un cluster.

Comúnmente, en los clusters existe una máquina (con monitor, teclado, ratón, etcétera) que funciona comonodo-maestro y se encarga de administrar, controlar y monitorear todas las aplicaciones y recursos del sistema, en tanto que el resto de los nodos está dedicado al procesamiento de datos o a ejecutar operaciones aritméticas. Se les conoce como nodos-esclavos



CONCEPTOS BÁSICOS DE CLUSTERING


 El concepto clustering se refiere a una técnica que permite combinar múltiples sistemas para que trabajen en paralelo y se comporten como un recurso informático unificado para: servir a un grupo de tareas, proporcionar tolerancia a fallos y tener disponibilidad continua. Por ejemplo, en el caso de usuarios de Internet.

el clustering proporciona bases de datos, correo electrónico, ficheros u otros servicios de sistema sin interrupciones. Si se presentara una falla dentro de una red de servidores de un cluster, ésta se corregiría inmediatamente sin que los usuarios lo notaran. Dentro de esta técnica existen una serie de conceptos fundamentales. Como el  paralelismo, que consiste en el procesamiento de una serie de instrucciones de un programa, que son ejecutadas por múltiples procesadores que trabajan de manera independiente. El paralelismo puede manejarse en dos niveles: paralelismo del hardware y el software. El primero depende básicamente de la tecnología de cómputo disponible, mientras el segundo se refiere a la habilidad del usuario para encontrar áreas bien definidas del problema por resolver, de tal forma que éste pueda ser dividido en partes autónomas que serán distribuidas entre los nodos del cluster, obteniendo un sistema de alto rendimiento computacional.


Por otro lado está el concepto de multiprocesamiento, una característica del sistema operativo que controla el hardware. El software asegura la interacción entre los procesadores a nivel de carga y descarga de datos, además de realizar el despacho de trabajos en forma múltiple, independiente y simultánea.
Otro concepto fundamental es la programación de hebras(programming threads). Una hebra (thread) es una secuencia de instrucciones ejecutables que pueden correr independientemente, compartiendo recursos computacionales con otras hebras. En un programa hay la posibilidad de ejecutar varias hebras simultáneamente. Cuando esto ocurre todas las hebras activas pueden competir y compartir los recursos del sistema. Por lo tanto, el usuario ha recurrido a la programación multi-hebras(multithread) que trae como consecuencia la concurrencia entre procesos y tiene una gran importancia en el cómputo paralelo.





CLASIFICACION DE LOS CLUSTERS

¿cuáles son las ventajas que nos ofrecen estos sistemas? La respuesta inmediata es: alto rendimiento, expansibilidad y escalamiento, soporte a alta carga de trabajo y alta disponibilidad. A partir de esas características se puede hacer unaclasificación de los clusters.

1-Por disponibilidad, en esta categoría los usuarios pueden contar con clusters dedicados no-dedicados. Los primeros están destinados a ejecutar un solo código, programa o aplicación. Por lo tanto los procesadores estarán funcionando al 100% en las tareas que se les asignaron. En los segundos, los procesadores serán utilizados al mismo tiempo por diferentes procesos. Dependiendo de la demanda de trabajo, se tendrá disponible cierto porcentaje del procesador.

2- Por aplicación, aquí entran los clusters que ejecutan aplicaciones utilizadas en el Cómputo Científico, donde lo más importante es obtener un alto desempeño, optimizando el tiempo de procesamiento, es decir, evitando en lo posible demasiado tiempo de CPU en procesos de respaldo y lectura de datos. También en este grupo se encuentran los clusters de alta disponibilidad, donde lo fundamental es que los nodos-esclavos siempre se encuentren funcionando de manera óptima.

3- Por hardware esta clasificación se hace de acuerdo a las características físicas de los equipos. Entonces, podemos encontrar clusters de computadoras personales (CoPs o PoPs, por sus siglas en inglés), clusters de estaciones de trabajo (COWs, por sus siglas en inglés) y clusters con multiprocesadores simétricos (CLUMPs, por sus siglas en inglés).

4-De acuerdo al sistema operativo (SO) instalado en sus nodos: clusters-Beowulf si el SO es Linux; clusters-NOW cuando funcionan a través de Solarisclusters-NT si están basados en Windows NT; clusters-AIX cuando el SO es el utilizado por la compañía IBM; clusters-VMS si emplean el SO de Digital, y por último los clusters HP-UX y los Microsoft Wolfpack.

 5-Finalmente  por la configuración de los nodos a nivel del hardware y del SO: si el cluster es homogéneo significa que las arquitecturas son similares y todos los nodos corren el mismo SO. En el caso de los clusters heterogéneos, los nodos pueden tener arquitecturas diferentes y trabajar con SO distintos.



información  obtenida de www.revista.unam.mx