GNU/Linuxyudith/docencia/ci-4821/Temas/GNU_Linux y... · Mónica Del Río Germán León Juan Arocha...

71
Mónica Del Río Germán León Juan Arocha Matteo Ferrando UNIVERSIDAD SIMÓN BOLÍVAR SISTEMAS DE OPERACIÓN II Abril-Julio 2013 Profesora: Yudith Cardinale GNU/Linux

Transcript of GNU/Linuxyudith/docencia/ci-4821/Temas/GNU_Linux y... · Mónica Del Río Germán León Juan Arocha...

Mónica Del RíoGermán LeónJuan Arocha

Matteo Ferrando

UNIVERSIDAD SIMÓN BOLÍVARSISTEMAS DE OPERACIÓN II

Abril-Julio 2013Profesora: Yudith Cardinale

GNU/Linux

GNU/Linux

Temas:● Componentes● Gestión de procesos● Gestión de memoria● Módulos● Controladores para dispositivos● Controladores para sistemas de archivos● Gestión de la red● Seguridad

Componentes

GNU/Linux

Gestión de procesos

GNU/Linux

● El planificador es el componente del sistema operativo que se encarga de repartir el procesador entre los procesos listos.

● Todas sus operaciones corren en tiempo constante independientemente de la cantidad de procesos en el sistema.

Gestión de procesos: Prioridades

GNU/Linux

● Prioridad Estática: puede ser modificada por el usuario a través del comando nice

● Prioridad Dinámica: se recalcula cada vez que el proceso abandona el procesador o un dispositivo. Para procesos reales es igual a la prioridad dinámica

● Rango de Prioridades: [0-139]Procesos de Tiempo Real [0-99]Procesos Normales [100-139]

Gestión de procesos: Timeslice o Quantum

GNU/Linux

El timeslice es calculado simplemente pasando la prioridad estática de la tarea al rango de posibles timeslice.

MIN_TIMESLICE = 10 Quantum MínimoMAX_TIMESLICE = 200 Quantum MáximoMAX_PRIO = 140 Máxima prioridadNICE_TO_PRIO(0) = 120(p)->static_prio Prioridad del Proceso

(MIN_TIMESLICE + ((MAX_TIMESLICE - MIN_TIMESLICE) * (MAX_PRIO-1 - (p)->static_prio) / (MAX_USER_PRIO-1) ))

Gestión de procesos: Estructuras

GNU/Linux

● La estructura principal es la runqueue con 140 listas de procesos listos y 140 de procesos con timeslice expirado.

● Hay además un bitmap que indica si cada lista está vacía o no.

● La búsqueda del próximo proceso listo consiste en encontrar el primer bit 1 del bitmap y sacar al primer proceso de la lista.

Gestión de procesos: Estructuras

GNU/Linux

Gestión de procesos: Multiprocesadores

GNU/Linux

● Equilibrio de Carga: mover algunas tareas desde una CPU a otra CPU para equilibrar el sistema.

● Variable cpu_load almacena un valor que representa la carga de la CPU

● Dominios de Planificación: es un conjunto de CPUs cuya carga debe mantenerse balanceada

Gestión de memoria

GNU/Linux

● El manejo de memoria es una de las partes más importantes de un sistema operativo. Se han desarrollado distintas estrategias para el manejo de memoria en sistemas operativos y las más exitosa ha sido la memoria virtual.

● El kernel de Linux implementa un sistema de memoria virtual compartida.

Gestión de memoria

GNU/Linux

Sistema de memoria virtual compartida

El sistema manejador de memoria de Linux nunca asigna la memoria física directamente a algún proceso.

En lugar de esto cada proceso tiene una visión "virtual" de la memoria.

Cada proceso cree que es el único proceso que accede a la memoria en el sistema. Es decir no está consciente de las solicitudes de memoria que hacen los demás procesos.

El uso de una partición swap permite que los procesos crean que la memoria RAM es más grande de lo que realmente es.

Gestión de memoria

GNU/Linux

La memoria virtual es mapeada luego hacia la memoria real (física) por el sistema manejador de memoria por medio de tablas de páginas de memoria

Gestión de memoria

GNU/Linux

Limitaciones de la cantidad de memoria permitida en un sistema:

● Sistemas con arquitectura de 32 bits:4Gb: 3Gb para espacio de usuario.1 Gb: para espacio de kernel.

● Sistemas con arquitectura de 64 bits:256 Tb para espacio de usuario.256 Tb para espacio de kernel.

Gestión de memoriaUso de la memoria física como cache

El acceso a un dispositivo de almacenamiento secundario como un disco duro es significativamente más lento que acceder a la memoria principal.

Por lo tanto, el sistema de manejo de memoria de Linux utiliza una porción de la memoria principal como caché para mantener en memoria los archivos que hayan sido recientemente utilizados y así agilizar futuros accesos a dichos archivos.

GNU/Linux

Gestión de memoriaTipos de memoria:

● Páginas de kernel - fijas en la memoria RAM● Texto de programas - sólo lectura● Ligadas a archivos● Páginas anónimas - no están ligadas a archivos

Las páginas anónimas pueden ser "swappeadas"

GNU/Linux

Gestión de memoriaSoluciones para cuando la memoria RAM está ocupada

Cuando una aplicación solicita espacio en memoria y no hay suficiente espacio libre en la RAM.

El kernel tiene dos maneras de liberar espacio en disco:● Reduciendo el tamaño del cache que esta en la RAM● Utilizando espacio de la partición swap.

Desde la versión 2.6 del kernel el usuario puede definir la probabilidad que se le dará a cada una de las dos opciones. Es un valor del 0 al 100 donde 0 se apega a la primera opción (reducir el cache) y 100 (mandar paginas al área de swap)

GNU/Linux

En un principio todo el código estaba enlazado estáticamente al kernel.

Esto requería que para agregar alguna nueva funcionalidad al kernel se hacía necesario recompilar y reiniciar el kernel.

Por otro lado, todos los módulos que formarán parte del kernel (aunque fueran utilizados o no) debían cargarse en memoria pudiendo ocupar espacio innecesariamente.

Módulos

GNU/Linux

LKM (Loadable Kernel Modules)

Los LKM presentados en la versión 1.2 del kernel permiten afrontar estos problemas. Los LKM pueden ser enlazados dinámicamente al kernel y ser liberados y desmontados de la memoria RAM cuando ya no son utilizados.

Distintos sistemas operativos soportan los LKM, la implementación particular de Linux utiliza la utilidad modprobe para montar y desmontar módulos del kernel dinámicamente.

Módulos

GNU/Linux

Controladores para dispositivos

GNU/Linux

● Unidad mínima de almacenamiento en disco: sector

● Para lectura y/o escritura en disco, se transforma la unidad del sistema de archivos (bloques) en sectores a través de los i-nodos.

● Algoritmos de planificación○ Completely Fair Queueing (CFQ)○ NOOP○ Deadline

Controladores para dispositivos: CFQ

GNU/Linux

● Estructuras○ Conjuntos de colas de peticiones ordenadas por prioridad de E/S de

los procesos solicitantes○ Cola de despacho

● Algoritmo○ Loop infinito

■ Si la cola de despacho está vacía ● Se toma la primera petición de cada uno de las colas de

peticiones (si existen)● Se reordenan las peticiones basado en la continuidad de

los bloques a leer (para evitar movimiento innecesario de cabezal)

● Se guardan en la cola de despacho● Se atienden peticiones hasta vaciar la cola.

● Este es el algoritmo que está "por defecto" en el Kernel de Linux desde el año 2006.

Controladores para dispositivos: NOOP

GNU/Linux

● Maneja las peticiones en una cola FIFO.● NOOP asume que cualquier optimización en cuanto a la búsqueda en el

disco duro se hará en un nivel más bajo en la jerarquía IO● Mayormente utilizado en dispositivos que no dependen de un movimiento

mecánico para la búsqueda (memoria flash, solid state drives, etc) pues el tiempo en reordenar peticiones sería un desperdicio pues no influye en la misma.

Controladores para dispositivos: Deadline

GNU/Linux

● Agrega un atributo deadline (tiempo de expiración) a las peticiones.

● Estructuras○ 2 colas ordenadas por sectores: una de operaciones de

lectura y otra de escritura (la de lectura tiene más prioridad pues es una operación bloqueante en los procesos

○ 2 colas deadline donde se ordenan los procesos por su tiempo de expiración

● Algoritmo○ Mientras existan peticiones.

■ Primero se revisa una de las colas ordenadas (Primeramente la de lectura por prioridad)

■ Luego se revisan la cola de deadline asociada a ver si la primera petición caducó● Si caducó, se atiende● Si no caducó, se atiende petición de la siguiente cola

ordenada.

Estructura sistemas de archivos

GNU/Linux

Existe un estándar para la jerarquía de los sistema de archivos de las distribuciones GNU/Linux (Filesystems hierarchy standard o FSH)

● Sub-jerarquías○ Archivos Estáticos: No cambiantes sin la intervención de

algún usuario root (/bin, /sbin, /boot, etc)○ Archivos Dinámicos: Editables por el dueño o por el root

(/var/mail, /home, etc)○ Compartidos: compartibles entre usuarios (/usr/share...)○ Restringidos: no compartibles (/etc, /boot, etc)

● En general, la ruta principal es "/" ya que es allí donde se encuentra toda la jerarquía de archivos.

● Dado que en "/" se encuentran los archivos de configuración del sistema, suele montarse en particiones diferentes a "/home" para aislar los archivos del usuario de cualquier depuración sobre el sistema.

Estructura sistemas de archivos

GNU/Linux

Componentes sistemas de archivos

GNU/Linux

● Tabla de i-nodos○ Ruta o path al archivo.○ Tamaño.○ Ubicación física.

● Bloques de almacenamiento○ Tamaño preconfigurado al montar el sistema de archivos:

entre 512 bytes y 4096 bytes.○ No necesariamente contiguos.○ Unidad mínima de almacenamiento en el sistema de archivos.

Componentes sistemas de archivos

GNU/Linux

Controladores para sistemas de archivos

GNU/Linux

Para las distribuciones GNU/Linux, los formatos usados normalmente son los ext.

● Ext2: Se define con:○ la jerarquía estándar y los componentes antes mencionados.○ no es usado en la actualidad.

● Ext3: Sucesor de Ext2○ Mejora: se puede usar journaling (Para cada transacción, dígase escritura o

lectura, se hacer un registro para poder revertirla en caso de error). ○ No es tan común usarlo ya que tiene un sucesor con varias mejoras: Ext4

● Ext4: Actualmente el más usado en distribuciones linux.○ Trae consigo varias memorias desde poder usar un formato extent para la

asignación de bloques, hasta aumento de tamaño máximo de disco y directorios.

Una red consiste de dos o más dispositivos conectados entre sí para comunicarse, esta comunicación puede conformarse de comandos, datos, hardware y otros recursos.

Para lograr una comunicación estable y coherente se definieron protocolos de comunicación que se deben a la hora de acceder a una red.

Gestión de la red

GNU/Linux

Linux ofrece herramientas para facilitar esta comunicación entre dispositivos:

● socket: crea un socket del tipo indicado, usa recursos del sistema, está identificado por un número entero.

● bind: se usa para asociar un socket con una estructura para almacenar la dirección de éste.

● listen: se usa en el servidor, se usa para aceptar llamadas TCP.

Gestión de la red

GNU/Linux

En Linux

● connect: se usa en el cliente, se usa para asignar un puerto libre a un socket, para intentar hacer una nueva conexión TCP

● accept: se usa en el servidor, acepta una conexión TCP que haya sido recibida del cliente, creando un nuevo socket.

● (send & recv) / (write & read) / (sendto / recvfrom): se usan para enviar y recibir datos de sockets remotos.

Gestión de la red

GNU/Linux

En Linux

● close: libera los recursos del sistema que estaban siendo utilizados por el socket, de ser una conexión TCP, termina la conexión.

● gethostbyname & gethostbyaddr: para obtener el IP dado un nombre o una estructura de dirección.

Gestión de la red

GNU/Linux

En Linux

En Linux se cuenta con estándares también de configuración de conexiones.

En el directorio /etc se consiguen diversos archivos de configuración que pueden ser modificados por el usuario y por herramientas de configuración de redes. Por razones obvias se recomienda usar herramientas de configuración.

Gestión de la red

GNU/Linux

En Linux

“The first fact to face is that UNIX was not developed with security, in any realistic sense, in mind; this fact alone guarantees a vast number of holes.”

Dennis Ritchie, “On the Security of UNIX”, 1979

La seguridad en Linux está estrechamente ligada al enfoque de seguridad que se dio al desarrollar Unix.

Evaluaremos las siguientes categorías que presentan mejoras de seguridad en Linux:

● Autenticación● Control de acceso de red● Criptografía● Linux Security Modules (LSM)

Seguridad

GNU/Linux

Seguridad

Autenticación

Tradicionalmente se utiliza el sistema de contraseñas de Linux para autenticar a los usuarios de una máquina.

PAM (Pluggable Authentication Modules) es un mecanismo que permite flexibilizar el esquema de autenticación que se desea utilizar en un sistema.

Cuando un programa necesita autenticar a un usuario, PAM provee una librería funciones para utilizar el esquema de autenticación que se desee.

GNU/Linux

Seguridad

GNU/Linux

Controles de seguridad en la red

● Seguridad en la capa IP (IPSec)

Es un stack de protocolos que proporcionan autenticación y cifrado de cada paquete IP de una sesión de comunicación.

● IPTables (Firewall)

Sistema cortafuegos implementado en el kernel de Linux. Tiene distintos módulos que manejan distintos protocolos: iptables (IPv4), ip6tables (IPv6), arptables (ARP) y ebtables (Tramas Ethernet).

Seguridad

GNU/Linux

Criptografía

● GPG (Gnu Privacy Guard)

Implementación libre de OpenPGP

● TrueCrypt

Herramienta de cifrado multiplataforma. Soporta distintos algoritmos como AES, Blowfish, entre otros.

Seguridad

GNU/Linux

MAC (Mandatory Access Control)

Es un tipo de control de acceso en donde el sistema operativo restringe o controla la habilidad de un sujeto de acceder o realizar cualquier actividad sobre un objeto. En la práctica un sujeto suele referirse a un proceso o un thread mientras que un objeto sería un archivo, directorio, puerto tcp/udp, etc.Un sistema operativo revisa cualquier acción de cualquier sujeto contra un conjunto de políticas para determinar si la acción se puede llevar a cabo.

DAC (Discretionary Access Control)

Linux implementa esta estrategia por defecto. Restringe el acceso a objetos basados en la identidad o los grupos al que pertenece el sujeto. El acceso es discrecional ya que un sujeto con un permiso particular puede pasarle su permiso a otro sujeto

Seguridad

GNU/Linux

Linux Security Modules (LSM)

Es un framework que presenta distintos módulos para evitar favoritismo por una implementación en particular. Cada uno de estos módulos implementa un MAC como sistema de acceso de control.

Los siguientes módulos están integrados en el kernel de Linux desde la versión 2.6:

● SELinux ● TOMOYO Linux● AppArmor● Smack (Usado en el proyecto Tizen)

Bibliografía

GNU/Linux

[1] http://personales.ya.com/aj2r/Planificador.pdf

[2] http://www.fing.edu.uy/inco/cursos/tso/teorico/TSO-Planificador.pdf

[3] http://www.infor.uva.es/~fjgonzalez/apuntes/Tema4.pdf

[4] http://es.scribd.com/doc/31000802/LINUX-Gestion-de-Procesos

[5]http://smultiprocesadorydistribuidos.wikispaces.com/EJEMPLO+SISTEMA+OPERATIVO+MULTIPROCESADOR+DEBIANLINUX

[6] http://www.escomposlinux.org/wwol26/wwol26.html

[7] http://nthur.lib.nthu.edu.tw/bitstream/987654321/6898/12/432011.pdf

[8]http://www.ibiblio.org/pub/linux/docs/LDP/system-admin-guide/translations/es/html/ch03s02.html

[9] http://www1.frm.utn.edu.ar/soperativos/Archivos/nucleolinux.pdf

[10]http://recursostic.educacion.es/observatorio/web/ca/software/software-general/562-elvira-misfud-

Mónica Del RíoGermán LeónJuan Arocha

Matteo Ferrando

UNIVERSIDAD SIMÓN BOLÍVARSISTEMAS DE OPERACIÓN II

Abril-Julio 2013Profesora: Yudith Cardinale

Cluster

Cluster

● Definición y Conceptos Relevantes● Historia● Ventajas / Desventajas● Clasificación● Componentes:

○ Nodos○ Almacenamiento○ Sistemas operativos○ Conexiones de red○ Middleware○ Protocolos de comunicación y servicios○ Aplicaciones○ Ambientes de programación paralela

● Sistemas de clústeres implementado

Temas:

Definición y Conceptos Relevantes

Cluster

● Conjuntos o conglomerados de computadoras construidos mediante la utilización de hardwares comunes y que se comportan como si fuesen una única computadora.

● Un clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio.

Un cluster consiste en un tipo de sistema de procesamiento paralelo o distribuido, compuesto por un conjunto de computadoras que trabajan cooperativamente como un único e integrado recurso de cómputo

Definición y Conceptos Relevantes

Cluster

● Alto rendimiento: altas prestaciones en cuanto a capacidad de cálculo

● Alta disponibilidad: es la capacidad de estar presente, de estar listo en un determinado momento en el que se quiere hacer uso.

● Balanceo de carga: técnica usada para compartir el trabajo a realizar entre varios procesos, ordenadores, discos u otros recursos.

● Escalabilidad: capacidad de un equipo de hacer frente a volúmenes de trabajo cada vez mayores, sin dejar por ello de prestar un nivel de rendimiento aceptable.

Definición y Conceptos Relevantes

Cluster

Historia

Cluster

● Las redes de conmutación de paquetes fueron conceptualmente inventados por la corporación RAND en 1962.

● Gene Amdahl de IBM, en 1967 publicó la Ley de Amdahl que describe matemáticamente el aceleramiento que se puede esperar paralelizando cualquier otra serie de tareas realizadas en una arquitectura paralela.

● El proyecto ARPANET logró crear en 1969 lo que fue posiblemente la primera red de computadoras básico basadas en el clúster de computadoras

● En 1983 los protocolos y herramientas para el trabajo remoto, que facilitaron la distribución y el uso compartido de archivos, fueron definidos (en gran medida dentro del contexto de BSD Unix, e implementados por Sun Microsystems).

● El primer producto comercial de tipo clúster fue ARCnet, desarrollada en 1977 por Datapoint.

● 1984 VAXcluster produce el sistema operativo VAX/VMS.● En 1994 se crea Tandem Himalaya.● IBM S/390 Parallel Sysplex se crea en 1994, principalmente para el uso de

la empresa.

HistoriaCluster

● PVM (parallel virtual machine: ‘máquina virtual paralela’).● En 1993 se inicia un proyecto de la NASA para construir

supercomputadoras de clústeres.● En 1995, la invención de la Beowulf una granja de computación.

Historia

Cluster

Ventajas

Cluster

● Mayor velocidad de computación, al interactuar un gran número de computadoras como si de una sola se tratase. "Procesamiento en paralelo"

● Mayor disponibilidad, evita la no disponibilidad de un sitio web, por la caída de uno de sus servidores al direccionar su contenido directamente a otro servidor.

● Ahorro en infraestructura

● Requieren en muchos casos de un elevado nivel de conocimientos para su montaje y configuración.

● En muchos casos, para alcanzar capacidades de procesamiento similares a las de equipos actuales se requiere un gran espacio para el elevado número de computadoras.

● Existen muchos programas los cuales son incompatibles para procesar en paralelo, o no son capaces de migrar el 100% de los procesos.

Desventajas

Cluster

Clasificación

Cluster

● High Performance o Alto Rendimiento

● High Availability o Alta Disponibilidad

● High Reliability o Alta Confiabilidad

● Homogéneos

● Heterogéneos

Clasificación:High Performance o Alto Rendimiento

Cluster

El objetivo es mejorar el rendimiento, de tiempo o precisión, para la solución de un problema, que pueden ser de este tipo:● Cálculos matemáticos● Mejora de gráficos● Compilación de programas● Descifrado de códigos● Rendimiento del sistema operativo

Están destinados a mejorar los servicios que ofrecen las empresas de cara a los clientes de una red, ya sea local o de internet. Fundamentalmente tienen dos características:● Fiabilidad● Disponibilidad

Cluster

Clasificación:High Availability o Alta Disponibilidad

Con alta confiabilidad se trata de aportar la máxima confianza en un entorno en el cual se necesita saber que el sistema siempre se va a comportar de una forma determinada, como por ejemplo sistemas de respuesta a tiempo real.

Suele ser usado para entornos de tipo empresarial, necesitando un hardware especializado.

Clasificación:High Reliability o Alta Confiabilidad

Cluster

Clasificación

Cluster

● Clúster homogéneo: tienen todos la misma configuración de hardware y sistema operativo.

● Clúster semihomogéneo: diferente rendimiento pero con arquitecturas y sistemas operativos similares.

● Clúster heterogéneo: tienen diferente hardware y sistema operativo

Componentes

Cluster

● Nodos● Almacenamiento● Sistemas operativos● Conexiones de red● Middleware● Protocolos de comunicación y servicios● Aplicaciones● Ambientes de programación paralela

Componentes:Nodos

Cluster

● Cada una de las máquinas involucradas es un nodo.

● Pueden ser simples computadoras, sistemas multiprocesador o estaciones de trabajo.

● Dedicados / no dedicados.

○ Exclusividad de uso por la máquina "maestro".

○ La máquina "maestro" usa los ciclos de reloj libres de las máquinas "esclavos".

● Similitud

○ Arquitectura

○ Sistemas operativos

Componentes:Almacenamiento

Cluster

Comparten la capacidad de almacenamiento, logrando un gran disco duro distribuido entre todos los nodos del clúster

● Se comunican usando el protocolo NFS (Network File System)● Puede consistir de

○ NAS(Network-Attached Storage)■ Comparte la capacidad de un servidor con clientes a través de una red.■ Todos los nodos acceden a un NAS Head, que actúa como interfaz entre los

clientes.■ Hacen peticiones de archivos al NAS Head y trabajan con estos localmente.■ Normalmente usa el protocolo TCP/IP■ Hacen uso del tráfico de la red de clústeres.

○ SAN(Storage Area Network)■ Consta de una red de alta velocidad, un equipo de interconexión y discos

duros.■ Tráfico de datos es totalmente independiente del tráfico de usuario, es una

conexión dedicada.■ Brinda mayor velocidad, seguridad y fiabilidad.

Componentes:Sistemas Operativos

Cluster

● Para un clúster se debe contar con un sistema operativo multiproceso y

multiusuario.

● Debe tener tolerancia a fallos y capacidad de recuperación después de una falla, los

procesos activos en el resto del sistema deben haciendo caso omiso al error.

○ Cuando deja de funcionar apropiadamente un nodo.

○ Cuando quitan un nodo del clúster.

● Es importante la escalabilidad y que esté altamente disponible.

● Logrando ver al sistema como una sola máquina, para el usuario y para la red.

Componentes:Sistemas Operativos

Cluster

Algunos sistemas operativos para clúster para Unix son:

● Solaris MC○ Desarrollado en Sun Microsystems○ Implementado como una extensión del sistema base Solaris.

● UnixWare○ Desarrollado en Lancaster University, 1990s○ Basado en UnixWare 7

● MOSIX○ Desarrollado en The Hebrew University of Jerusalem, 1990s○ Adapta el kernel Linux/UNIX para tener capacidades de clúster.

● GLUnix○ Desarrollado en la Universidad de California, 1980s○ Basado en Solaris 2.3-2.6

Hay diversas maneras de hacer llevar a cabo la conexión entre nodos del clúster

● Ethernet

○ La forma más básica de conexión.

○ Actualmente es la más utilizada por su bajo costo.

○ Normalmente con un ancho de banda de 1 Gbit/s

○ Latencia de 30 a 100 µs ( 1 s = 1.000.000 µs)

● Myrinet (2000 / Myri-10G)

○ Tiene ancho de banda de 2 Gbit/s (2000) a 10 Gbit/s (10G)

○ Tiene una latencia de 3 a 10 µs

○ La red de baja latencia más usada en clústeres

Componentes:Conexiones de red

Cluster

● InfiniBand

○ Deriva de un estándar desarrollado específicamente para comunicación en clústeres.

○ Con agregación de canales, que puede ser en grupos de 4 o de 12, se alcanzan

niveles de ancho de banda increibles.

○ Tiene diferentes tasas de transferencia de datos.

○ Con una tasa de transferencia de datos EDR (Enhanced Data Rate) y una

agrupación de 12 canales se logra un ancho de banda de 300 Gbit/s

○ Lo logra permitiendo que varios nodos usen la red al mismo tiempo.

○ Define conexiones entre un nodo de computación, que lleva a cabo los cálculos, y un

nodo de I/O, para almacenamiento de datos generados o lectura de datos

necesarios

Componentes:Conexiones de red

Cluster

● SCI (Scalable Coherent Interface)

○ Tiene una latencia de 1,43 µs

○ Ancho de banda de 5333 Mbit/s

○ No necesita un conmutador (switch)

○ Adecuada para clústeres de mediano o pequeño tamaño

○ Se pueden llevar a cabo todas las comunicaciones a través de SCI-SOCKETS,

dejando transparencia al usuario

Componentes:Conexiones de red

Cluster

Componentes:Middleware

Cluster

El middleware es un software que se encuentra entre el sistema operativo y las aplicaciones. En un cluster se utiliza para proveer al mismo lo siguiente:

● Proveer una interfaz única de acceso al sistema conocida como SSI (Single System Image).

● Herramientas para optimización, mantenimiento y administración del sistema. Debe permitir manejo de procesos, balanceo de cargas, tolerancia a fallos, etc.

● Escalabilidad.

Existen varias implementaciones de middleware para clústeres, entre las más populares se encuentran:

● MOSIX (Propietario) es un sistema operativo distribuido.

● LinuxPMI: Linux Process Migration Infrastructure está basado en el abandonado proyecto OpenMOSIX (Open Source) el cual a su vez fue un fork de MOSIX cuando este pasó a ser propietario.

● HTCondor (anteriormente llamado Condor).

● OpenSSI: es un software de para clusters que permite tratar a un conjunto de computadoras como si fuera un único gran computador.

Componentes:Middleware

Cluster

Componentes:Aplicaciones

Cluster

Los clusters son utilizables en muchas situaciones en donde se requieran de una gran cantidad de recursos como lo son:

● Aplicaciones científicas: simuladores, genómica computacional, predicción meteorológica, simulación de corrientes y vertidos en el mar, aplicaciones en química computacional.

● Aplicaciones empresariales: se utiliza para empresas que requieren alta disponibilidad y entrega inmediata. Es usual que en un cluster se aloje un sistema que maneje varios servicios, por ejemplo, en un nodo puede estar alojado el manejador de bases de datos, en otro nodo el servidor web y así sucesivamente mientras más servicios sean manejados. Ejemplos de estos son: Flickr , Wikipedia, Google, etc.

Componentes:Ambientes de programación paralela

Cluster

Librerías

● Atlas: es una implementación mejorada del estándar BLAS (Basic Linear Algebra Subproblems) con algunas rutinas LAPack adicionales. Maneja cálculos vectoriales, gráficos y de álgebra lineal.

● GSL (GNU Scientific Library) es un extenso conjunto de rutinas para cómputos numéricos y científicos orientada a programadores del lenguaje C.

● GMP (GNU Multiple Precision Library): es utilizada para permitir el manejo exacto de muy grandes y muy pequeños números enteros, racionales y reales.

Componentes:Ambientes de programación paralela

Cluster

Hay distintos modelos de programación paralela pero el más común, particularmente en clusters Linux es el paso de mensajes.

Las dos especificaciones más populares para el paso de mensajes son:● PVM (Parallel Virtual Machine)● MPI (Message Passing Interface)

Ambas definen especificaciones para crear librerías y APIs que puedan ser usadas en distintos lenguajes como Fortran, C, C++, Python, Java, entre otros.

MPI, el cual es más nuevo que PVM, tiene algunas ventajas y es considerado un open standard, las implementaciones más populares de éste son LAM (Local Area Multicomputer) y MPICH.

Sistemas de clústeres implementado

Cluster

● Google● RoadRunner IBM (Los Álamos National Laboratory):

○ 122400 cores○ 1042-1375 TFlops/s○ 2345 KW de poder○ Linux○ 22 top 500 Noviembre 2012

● Beowulf: Formado a partir de hardware de bajo costo y con sistemas operativos en base a Unix

● PS2: 70 consolas play station 2, con sistema operativo Sony Linux Kit

Sistemas de clústeres implementado

Cluster

RoadRunner

Google

Sistemas de clústeres implementado

Cluster

Ps2 Cluster

Beowulf

Bibliografía

Cluster

[1] http://es.wikipedia.org/wiki/Cluster_(informática)[2] http://root-neztgul.blogsp ot.com/2008/11/sistemas-distribuidos-cluster.html[3] http://wwwclusterinformatica.blogspot.com/2011/05/cluster-informatica.html[4] http://www.telefonica.net/web2/victormn128/cluster_cinco.htm[5]http://www.ibiblio.org/pub/linux/docs/LuCaS/Manuales-LuCAS/doc-cluster-computadoras/doc-cluster-computadoras-html/node7.html[6]http://icaro.eii.us.es/descargas/segunda%20parte%20Sistemas%20Multiprocesadores%202006_2007.pdf[7] http://www.fing.edu.u://es.m.wikipedia.org/wiki/Cl%C3%BAster_(inform%C3%A1tica)[8] http://www.fing.edu.uy/inco/cursos/hpc/material/clases/Clusters.pdf[9] http://www.uhu.es/josem.bravo/AD/Tema3.pdf[10] http://technet.microsoft.com/es-es/library/bb124225(v=exchg.65).aspx[11] http://www.ac.uma.es/~sromero/ad/AD4_Clusters.pdf

[12] http://xxito.files.wordpress.com/2008/11/trabajo-final-beowulf.pdf