• No se han encontrado resultados

Construcción de una máquina paralela para centros de investigación

N/A
N/A
Protected

Academic year: 2023

Share "Construcción de una máquina paralela para centros de investigación"

Copied!
140
0
0

Texto completo

(1)

INSTITUTO POLITÉCNICO NACIONAL

UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERIA Y CIENCIAS SOCIALES Y

ADMINISTRATIVAS

Sección de Estudios de Posgrado e investigación

CONSTRUCCIÓN DE UNA MÁQUINA PARALELA PARA CENTROS DE

INVESTIGACIÓN.

TESIS

QUE PARA OBTENER EL GRADO DE

MAESTRO EN CIENCIAS EN INFORMÁTICA

P R E S E N T A

JESÚS ANTONIO ALVAREZ CEDILLO

(2)
(3)

CARTA CESION DE DERECHOS

En la Ciudad de México, D.F. el día 23 del mes de Marzo del año 2006, el que suscribe Jesús Antonio Álvarez Cedillo alumno del Programa de Maestría en Ciencias en Informática con número de registro A010396, adscrito a la Sección de Estudios de Posgrado e Investigación de la UPIICSA-IPN, manifiesta que es autor intelectual del presente trabajo de Tesis bajo la dirección de Dr. Miguel Lindig Bos y cede los derechos del trabajo intitulado CONSTRUCCIÓN DE UNA MÁQUINA PARALELA PARA CENTROS DE INVESTIGACIÓN, al Instituto Politécnico Nacional para su difusión, con fines académicos y de investigación.

Los usuarios de la información no deben reproducir el contenido textual, gráficas o datos del trabajo sin el permiso expreso del autor y/o director del trabajo. Este puede ser obtenido escribiendo a la siguiente dirección [email protected]. Si el permiso se otorga, el usuario deberá dar el agradecimiento correspondiente y citar la fuente del mismo.

INSTITUTO POLITECNICO NACIONAL

COORDINACION GENERAL DE POSGRADO E INVESTIGACION

(4)

A Dios:

Por su infinita gracia, por haberme dado una vida hermosa y plena, una familia maravillosa y por dejarme encontrar una esposa inteligente y comprensiva y por darme sólo el poco de entendimiento y sabiduría que me han permitido llegar a este punto.

(5)

A Mi Esposa:

Como una pequeña muestra de

agradecimiento por todo lo que me ha

dado y enseñado.

(6)

A mis Hermanos:

Por el gran apoyo que siempre me han

brindado, por su gran nobleza y por la

fuerza que cada uno me ha inspirado para

seguir adelante en momentos difíciles

(7)

A mis Padres:

Como reconocimiento a su apoyo incondicional y comprensión y como muestra de un esfuerzo conjunto para alcanzar una meta más.

Los Amo.

(8)

8

A mis profesores y compañeros:

Especialmente a mi director de tesis Dr.

Miguel Lindig Bos por sus consejos,

apoyo y por creer en mí, así como por su

orientación magnífica para terminar este

trabajo, y al M. En C. Eduardo René

Rodríguez Ávila por su atinadas

correcciones

(9)

“CONSTRUCCIÓN DE UNA MÁQUINA PARALELA PARA CENTROS DE INVESTIGACIÓN “

RESUMEN.

Debido a la situación económica actual de nuestro país y ante la imposibilidad de que los centros de investigación cuenten con los recursos adecuados y herramientas para desarrollar proyectos no teóricos, se hace prioritario aplicar nuevas técnicas y desarrollar nuevas herramientas que debido a su bajo costo, puedan ser implementadas y no necesiten de largos procesos para su adquisición.

Es en este marco de referencia donde se ubica la creación de una computadora diseñada especialmente para la investigación, que explote él cómputo distribuido y el procesamiento paralelo y que pueda ser operada bajo una instrucción mínima por investigadores de cualquier parte y de cualquier rama de la ciencia, que busquen explotar el procesamiento paralelo con un desempeño alto o considerable.

Es necesario considerar que en México el tema del súper cómputo no ha sido explotado adecuadamente, ya que por lo general un equipo con estas características sólo lo tienen las grandes empresas comerciales por su alto costo, por la misma razón, es casi imposible que un centro de investigación pueda adquirir este recurso cuando el equipo cuesta millones de dólares.

Un investigador que cuente con este tipo de herramientas podrá auxiliar sus investigaciones aplicando el procesamiento recursivo y paralelo, para realizar pruebas prácticas de los modelos que genere, podrá realizar simulaciones y proponer ambientes de prueba.

Por otro lado, contar con una máquina paralela que soporte los estándares de programación de facto de la industria, permitirá a los centros de investigación, crear programas de aplicación real inclusive para otras plataformas que soporten el estándar sobre súper computadoras comerciales de marca. Estos programas contribuirán al desarrollo de nuevos investigadores que a su vez aportarán con sus descubrimientos al desarrollo tecnológico y económico del país.

Es necesario destacar que el software libre en el mundo ha comenzado a ganar terreno a partir de la creación del sistema operativo Linux , hecho que ha permitido a millones de programadores y científicos del mundo poder generar nuevas aplicaciones gracias a un ambiente común y de acceso total sobre los códigos de programación.

(10)

“CONSTRUCTION OF A PARALELL MACHINE FOR RESEARCH CENTERS”

ABSTRACT.

Due to the current economic situation of our country and the imposibility for research centers to get adecuate resources and tools to develop non-theoretical projects, it becomes a priority to apply new techniques and to develop new tools that they may be readily implemented, due to their low cost and short adquisition times.

It is under this frame of reference where the design of a high-performance computer becomes desirable, specifically oriented toward research problems, based on distributed and parallel processing concepts and requiring a minimum of instruction in its use for researchers of any specialty that wish to exploit recursive processing with high levels of performance.

It is necessary to recall that in Mexico the subject of supercomputing has not been explored in depth since, in general, this type of equipment is only available to very large corporations due to its high cost of many thousands of dollars. For the same reason, is almost impossible to be aquired by a public or government research center.

A researcher that counts with this tools is able to improve his work by applying recursive and parallel processing, to apply tests to the models that its generates, to run detailed simulations and to develop test environments.

On the other hand, the availability of a parallel machine that runs de facto industry- standard software would allow research centers to develop new application software compatible with other platforms, including commercially availlable high-performance machines. These application programs would aid in the education of new researchers which, in turn, due to the results of their work would contribute to the technological and economic growth of the country.

It is necessary to highlight that the importance of free software has been steadyly growing since the introduction of the Linux operating system. This fact has permitted that millions of programmers and scientists in the whole world can generate and share new applications, thanks to a common environment and total access to source code.

(11)

GLOSARIO DE TÉRMINOS

ACCESO DEDICADO. Servicio que proporciona conectividad, en la misma localidad, entre los inmuebles del cliente y un punto de presencia de un Operador, de forma tal que el cliente pueda utilizar los servicios proporcionados por dicho Operador.

ADDRESS. (Vea Dirección).

ALGORITMO: Conjunto finito de pasos estructurados en el tiempo, acorde a un conjunto finito de reglas que proveen la solución a un problema o indica la falta de ésta.

ANCHO DE BANDA. Medida de capacidad de comunicación o velocidad de transmisión de datos de un circuito o canal analógico. Cuando se trata de transmisiones analógicas, el ancho de banda es la diferencia entre las frecuencias superior e inferior en un rango dado. Se mide en ciclos por segundo o hertzios (Hz). En las transmisiones digitales, el ancho de banda se mide en bits por segundo (bps) y cuanto más grande sea este número, más rápida será la transmisión. La velocidad es importante para los dispositivos de entrada/salida ya que un bus con un ancho de banda escaso puede limitar sus capacidades.

ARP. Address Resolution Protocol. Protocolo que se utiliza para averiguar la dirección del enlace correspondiente a la dirección IP.

ARPANET. Advanced Research Projects Agency Network [Red de la Agencia de Proyectos Avanzados de Investigación]. Red desarrollada en 1969 por parte del Departamento de Defensa de los Estados Unidos en la experimentación de una amplia red que funcionara a pesar de que parte de la red quedara fuera de servicio. Desapareció en 1990 propiciando la aparición de la tecnología de conmutación de paquetes y del protocolo TCP/IP. Dio origen a Internet.

ASCII. American Standard Code for Information Interchange [Codificación Americana Normalizada para el intercambio de Información]. Norma mundial para la codificación usada en las computadoras a fin de representar los caracteres requeridos para la comunicación entre máquinas. Hay 128 códigos normalizados ASCII, cada uno de los cuales se puede representar con un número binario de 7 dígitos.

Este código le asigna 8 bits a cada carácter.

ASÍNCRONO. Tipo de comunicación que envía datos usando control del flujo sin necesidad de sincronizar entre una terminal origen y un terminal destino.

(12)

BAJA LATENCIA. Un periodo de tiempo muy corto, el cual está destinado a la transmisión y recepción de los datos desde que son emitidos por el puerto transmisor y hasta que alcanzan al puerto receptor.

BANDA AMPLIA. Ruta/circuito de comunicaciones de capacidad media. Suele indicar una velocidad de 64 kbps a 1.544 Mbps.

BANDA ANCHA. Ruta/circuito de comunicaciones de gran capacidad. Normalmente implica una velocidad superior a 1.544 Mbps.

BANDA BASE. Método de transmisión de datos en una red que utiliza el ancho de banda completo para una transmisión individual. Ejemplo: Ethernet, realiza una única transmisión en cada momento.

BANDWIDTH. (Ver Ancho de Banda).

BIND. Berkeley Internet Name Domain. [ Nombre de dominio internet Berkeley]. Una de las primeras implementaciones del sistema de nombres de dominio de Internet.

BIOS. Basic Input Output System. [ Sistema Básico de Entrada/Salida ]. Programa que se encuentra en la mayoría de los ordenadores y que controla el proceso de arranque de la máquina y otras funciones básicas como el funcionamiento del teclado o las unidades de disco. Los ordenadores antiguos almacenaban el BIOS en un chip que no se podía borrar, mientras que en los más modernos, el programa se puede actualizar, ya que se guarda en un chip que se puede borrar y reprogramar.

BIT. Binary digit. [Dígito binario]. Unidad elemental de la información. Puede ser 0 ó 1. Físicamente, el bit se puede representar como un transistor en una célula de memoria, un punto magnetizado en la superficie de un disco o como un pulso enviado a través de un circuito. Cuando se combinan formando varios bytes, también llamados palabras, pueden representar grandes cantidades de información. En la mayoría de los sistemas, ocho bits consecutivos forman un byte, que es equivalente a un carácter alfanumérico. Las transmisiones se suelen medir en bits por segundo (bps), lo que indica el número de bits que pasan por un determinado punto en un segundo.

BOOTP. Boot Protocol. Protocolo usado para arrancar estaciones de la red de forma remota.

BROWSER. [ Navegador ]. Programa que permite visitar sitios en Internet.

BYTE. Conjunto de 8 bits (por estandar de úso). Es la mínima cantidad requerida para representar cada símbolo alfanumérico.

(13)

CLUSTER. [Lit. racimo]. Es un grupo de sectores de un disco (normalmente de dos a ocho) que se trata como una entidad por el sistema operativo o la controladora de disco. Este término se refiere a veces a un grupo de terminales informáticos conectados a un sistema.

DAEMON (Demonio). Programa que se ejecuta de modo independiente al navegador. Los Demonios pueden realizar varias tareas administrativas como las de construir índices, resúmenes y retroenlaces.

En Unix se utiliza el término por el de servidor debido a que los servidores operan de modo independiente.

DATAGRAMA. Paquete individual de datos que es enviado a un equipo receptor sin ninguna información que lo relacione con ningún otro posible paquete.

DHCP. Dynamic Host Configuration Protocol. [ Protocolo de configuración de equipo dinámico].

Método que asigna automáticamente direcciones IP a clientes de una red.

DIRECCIÓN IP. Dirección de 32 bits del protocolo Internet asignada a un ordenador conectado a Internet. La dirección IP tiene un componente del propio ordenador y un componente de la red. Este número tiene el formato de cuatro grupos de hasta tres dígitos binarios, cada uno con valores de cero a doscientos cincuenta y cinco, separados por un punto.

DNS. Domain Name System. [Sistema de Nombres de Dominio]. Base de datos distribuida que gestiona la conversión de direcciones de Internet expresadas en lenguaje natural a una dirección numérica IP.

ETHERNET. Tipo de red local que usa la configuración en BUS, que no puede sobrepasar los 2000 metros de longitud.

FAST ETHERNET. Versión de Ethernet que permite transferencias de datos entre 10 y 100 Mbps u usa protocolo CSMA/CD.

FTP. File Transfer Protocol. [Protocolo de transferencia de archivos]. Es el método común de enviar archivos entre computadoras en Internet.

GUI. Graphical User Interface. [ Interfaz gráfica de usuario ]. Se trata de una interfaz que utiliza

(14)

utilizados que operan mediante una interfaz gráfica de usuario son Windows , X11 y MacOS. Unix es un sistema basado en caracteres que también permite la incorporación de una interfaz gráfica de usuario, entre otros.

HOST. [Anfitrión]. Es una computadora en una red. Antes se denominaba con el término "nodo" que se utiliza en el lenguaje de definición de documentos. Muchas veces se usa como sinónimo de servidor.

HTTP. Hipertext Transfer Protocol. [ Protocolo de transferencia de hipertexto ]. Es un conjunto de estándares que permite a los usuarios de la Web intercambiar información. Es el método que se utiliza para transferir documentos desde el sistema donde se almacenan las páginas hasta los usuarios individuales.

IP . (Ver DIRECCIÓN IP ).

ISO. International Standard Organization. [ Organización Internacional de Estándares ]. Fundada en 1947 reúne asociaciones de unos 90 países y su objetivo es establecer los estándares internacionales, incluidos para la comunicación de datos

LINUX. Es un sistema operativo multitarea y multiusuario de 32 bits para PC desarrollado inicialmente por Linus Toorvald, modificado y mejorado por programadores de todo el mundo. Su distribución es gratuita.

NFS. Protocolo desarrollado por Sun Microsystems para permitir que una computadora pueda acceder a los archivos de otro equipo como si éstos fueran propios.

NODO. Su definición original es la de punto donde convergen de dos líneas. En informática, el término se refiere muchas veces a una máquina conectada a Internet, aunque lo normal es que se hable de un punto de confluencia en una red.

NFTS. NT File System. Sistema de archivos propio de Windows NT, que permite nombres largos, reduce la fragmentación de archivos, proporciona tolerancia a fallos e incrementa el sistema de seguridad.

OSI. Open Systems Interconnection. [ Interconexion de Sistemas Abiertos ]. Modelo de referencia de interconexión de sistemas abiertos propuesto por la organización de normalización ISO. Divide las tareas de la red en siete niveles.

PING. Packet Internet Grouper. [ Buscador de Paquetes Internet ]. Programa utilizado para comprobar si un servidor está disponible. Envía paquetes de control para comprobar si el servidor esta activo y los

(15)

devuelve.

PLATAFORMA. Conjunto de tecnologías que obedecen a un estándar sobre las cuales los procesos corren en forma natural independientemente de su arquitectura

PROTOCOLO. Conjunto de reglas y normas que determinan cómo se realiza un intercambio de datos, asegurando que los datos recibidos son idénticos a los datos enviados.

PUERTO. Dispositivo físico o lógico que forma parte de la infraestructura de una red y que funge como interfase entre el equipo de datos del Usuario y la red .

RARP. Reverse Address Resolution Protocol. [ Protocolo de Resolución de Dirección inversa ].

Protocolo de bajo nivel para la asignación de direcciones IP a maquinas simples desde un servidor en una red física.

RED. Sistema de elementos interrelacionados que se conectan mediante un vínculo dedicado o conmutado para proporcionar una comunicación local o remota (de voz, vídeo, datos, etc.) y facilitar el intercambio de información entre usuarios con intereses comunes.

SERVIDOR. En una red, es un ordenador que proporciona servicios a otros equipos (estaciones) .

TCP/IP. Transfer Control Protocol/Internet Protocol. [ Protocolo de control de transmisiones / Protocolo Internet ]. Es el protocolo estándar de comunicaciones en red y transporte del modelo OSI, utilizado para conectar sistemas informáticos a través de Internet ( Vea también DIRECCIÓN IP ).

TELNET. TELe NETwork. [ Tele Red ]. Programa de red que ofrece una forma de conectarse y trabajar desde otro equipo. Utiliza una conexión a un servidor por medio de la cual el ordenador cliente del usuario emula una terminal virtual.

UNIX. Sistema operativo multitarea y multiusuario de gran importancia en el desarrollo y evolución de Internet.

WAN. Wide Area Network. [ Red de Área Amplia ]. Red de ordenadores conectados entre sí, dispersos geográficamente, localizados a gran distancia.

(16)

ÍNDICE

INTRODUCCIÓN...1

1.1 Antecedentes Teóricos Básicos...6

1.2 Posix (Portable Operating System Interface) ...8

1.3 El Sistema Operativo Linux...9

1.4 El Paradigma Cliente Servidor...11

1.5 Direcciones IP ...12

1.6 Taxonomía de arquitecturas...15

1.6.1 Clasificación de Flynn ... 15

1.6.2 Sistema único flujo de instrucciones sobre un único flujo de datos... 15

1.6.3 Sistemas SIMD (Single Instruction stream, Multiple Data stream) ... 16

1.6.4 SIMD con CPU particionada ... 16

1.6.5 SIMD con múltiples ALU... 17

1.6.6 Sistemas MISD (Multiple Instruction stream, Single Data stream). ... 18

1.6.7 Sistemas con un flujo de múltiples instrucciones que operan sobre múltiples datos MIMD (Multiple Instruction stream, Multiple Data stream) ... 18

1.7 Categorías de Computadoras Paralelas ...19

1.7.1 Multiprocesadores ... 19

1.7.2 UMA (Uniform Memory Access) ... 20

1.7.3 Sistema de Multiprocesador NUMA (Non Uniform Memory Access) ... 21

1.7.4 Sistema COMA (Cache Only Memory Access) ... 21

1.7.5 Multicomputadoras ... 22

2.1. La conjetura de Minsky ...25

2.2. Ley De Amdahl...26

2.3. Granularidad...29

2.3.1 Paralelismo de grano fino... 30

2.3.2 El paralelismo de grano medio... 30

2.3.3 Paralelismo de grano grueso y muy grueso ... 30

2.3.4 Paralelismo independiente ... 30

2.4. Redes específicas ...34

2.4.1 Red Crossbar ... 34

2.4.2 Memorias Multipuerto ... 35

2.5 Estrategias de software de los MIMD. ...37

2.5.1 Técnicas de compilación... 37

(17)

2.5.2 Arquitecturas paralelas de granularidad fina... 42

2.5.3 Estrategia Doacross scheduling... 43

2.5.4 Estrategia Doall loop scheduling... 44

2.5.5 Estrategia de balance de carga... 44

2.5.6 MPI (Messaging passing interface) Intercambio de paso deMensajes ... 45

2.5.7 PVM(Paralell Virtual Machine) Maquina Virtual Paralela... 49

2.6 El estudio del rendimiento. ...53

2.6.1 Factores que influyen en el rendimiento... 53

2.6.2 Tiempo de respuesta (Turnaround Time) ... 54

2.7 Algoritmos paralelos. ...56

2.7.1 Método De Diferencias Finitas... 56

2.7.2 Método de expansión de Taylor ... 57

2.7.3 Aproximación De Diferencia Para Derivadas Parciales. ... 60

3.1 Pensamiento y la filosofía de construcción...61

3.2 Aspectos generales de la programación en paralelo...63

3.2.1 Tipo de Hardware ... 63

3.2.2 Tipo de red de Comunicación ... 67

3.2.3 El sistema operativo. ... 68

3.3 Elección de componentes para la construcción de la maquina paralela...70

3.3.1 Tipo de carga del sistema operativo para la máquina paralela. ... 71

3.3.2. Aplicaciones y Programas. ... 72

3.3.2.1 Servicios requeridos ...72

3.3.2.1.1 El servidor RPL...72

3.3.2.1.2 El servidor DHCP (dynamic host configuration protocol). ...73

3.3.2.1.3 El servidor TFTP (trivial ftp). ...74

3.3.2.1.4 El servidor NFS...74

3.3.2.1.5 El servidor RSH...75

3.4 Proceso de construcción ...75

3.4.1 Construcción física ... 75

3.4.2 Construcción Lógica... 80

3.4.3 Instalación del nodo principal... 82

3.4.4 Diseño e implementación de la máquina paralela ... 86

3.4.4.1 Intercambio de mensajes ...89

3.4.4.2 Sincronización...89

3.4.5 Experimentos y optimización. ... 96

3.4.5.1 Performance de Red ...96

3.4.5.2 Transmisión de información (throughput) de MPICH ...99

(18)

LISTA DE FIGURAS Y TABLAS

DESCRIPCIÓN

Página

_________________________________________________________________

Figura 2.- Sistema SIMD. Fuente: Organización de computadoras Andrew S. Tanenbaum ...16

Figura 3.- Sistemas MISD Fuente: Organización de computadoras Andrew S. Tanenbaum...18

Figura 4.- Sistema MIMD Fuente: Organización de computadoras Andrew S. Tanenbaum. ...19

Figura 5.- Sistemas UMA Fuente: Organización de computadoras Andrew S. Tanenbaum ...20

Figura 6.- Cluster Jerárquico Fuente: Organización de computadoras Andrew S. Tanenbaum...21

Figura 7.- Sistema Coma. Fuente: Organización de computadoras Andrew S. Tanenbaum...22

Figura 8.- Ejemplo de incremento de velocidad obtenido con la ley de Amdahl usando varios procesadores ...28

Figura 9.- Gráfico generado con Upshot donde expresa el nivel de computación, de comunicación y en espera para 8 procesadores...29

Figura 10.- La interconexión de red usando memoria de puertas múltiples . ...32

Figura 11.- Sistema de memoria compartida con un elemento de proceso con memoria local...32

Figura 12.- Esquema de un módulo de procesamiento...33

Figura 13.- Interconexión a través de un bus común. ...34

Figura 14.- Red Crossbar ...34

Figura 15.- Comunicación entre procesadores usando una memoria de 4 puertos ...35

Figura 16.- Red multietapa...35

Figura 17.- Red Multietapa estrictamente no bloqueante...36

Figura 18.- Red Multietapa estrictamente no bloqueante reconfigurable. ...37

Figura 19.- Grafo de dependencia. Los arcos están rotulados con (Tk,Ck) ...40

Figura 20.- Arquitectura de Multiprocesador de memoria compartida. ...43

Figura 21.- Comunicaciones en PVM. ...51

Figura 22.- Ejemplo del Proceso de Carga Remota ...72

Figura 23.- Esquema de Hardware de un beowulf. ...76

Figura 24.- Diagrama a bloques de un cluster tipo beowulf...76

Figura 25.- El nodo Integral. ...78

Figura 26.- Esquema principal de la máquina paralela propuesta...79

Figura 27.- El modelo en hardware propuesto final de la máquina paralela...80

Figura 28.- Diagrama de flujo de la carga de los nodos integrales en el sistema operativo (parte 1) ...84

Figura 29.- Diagrama de flujo de la carga de los nodos integrales en el sistema operativo (parte 2). ...85 Figura 30.- Se muestra hasta el momento de como se establece la comunicación de los procesos en

(19)

la máquina paralela simulando un broadcast. ...94 Figura 31.- Throughput para tamaño de sockets por default sobre TCP , donde (F)ast, (E)thernet, (B)onding, M(PICH), (G)igabit. ...98 Figura 32.- Gráfico de saturación...99 Figura 33.- Gráfico de firma ethernet...100 Figura 34.- Se muestra el tiempo de ejecución de los comandos de lectura rm -f, du -sk, ls -R, grep -r y find -name...102

(20)

LISTA DE TABLAS

DESCRIPCIÓN

Página

__________________________________________________________________

Tabla 1. Procesos y granularidad de la sincronización ...29

Tabla 2. - Muestra la relación entre la granularidad del algoritmo...31

Tabla 3. - Cadena para el ciclo representado. ...40

Tabla 4. Segundo ciclo. ...41

Tabla 5. Tercer Ciclo...41

Tabla 7 .Relación entre factores de rendimiento y atributos del sistema ...56 Tabla I. Argumentos de funciones MPI. ... VI Tabla II. Correspondencia entre tipos de datos en MPI, Fortran y C. ...VII

(21)

INTRODUCCIÓN

Las súpercomputadoras son máquinas de gran tamaño físico que tienen la capacidad de realizar millones de operaciones por segundo, pero al igual que cualquier computadora, está limitada a hacer lo que se le ordene. Las órdenes que les damos a las computadoras son los programas. Los programas tradicionalmente le ordenan a la computadora que realice una secuencia de operaciones en un orden determinado, y no puede realizar una operación hasta haber terminado la anterior. Ejecutar un programa escrito con un enfoque tradicional en una súper computadora es un desperdicio, ya que un sólo programa no puede aprovechar la existencia de múltiples procesadores. Esto se debe a que la mayoría de los programas se desarrollan pensando que serán ejecutados en una computadora personal con un sólo procesador, tradicionalmente la secuencialidad de los programas y la estructura básica de los lenguajes de programación.

Para aprovechar las capacidades multiprocesador de las supercomputadoras, es necesario dividir las tareas en bloques que puedan ser ejecutados simultáneamente. Esto es conocido como programación de multihilos(multithreads). Los hilos van a realizar distintas tareas necesarias en un programa. Por ejemplo una parte del programa (hilo) puede dedicarse a producir algún objeto y otra parte del programa puede dedicarse a consumir esos objetos. Para hacer que los programas funcionen de esta manera, se utilizan distintas técnicas que le indican a las máquinas cuales son las partes del programa que pueden ejecutarse simultáneamente.

Para que exista la comunicación entre procesos por medio de paso de mensajes, existe un estándar llamado MPI (Message Passing Interface). Existen diferentes implementaciones de MPI, como por ejemplo MPICH, que es una implementación abierta de MPI. MPI permite la paralelización de programas tanto para máquinas con múltiples procesadores como para clusters. Las aplicaciones desarrolladas utilizando MPI pueden ser transportadas de una máquina paralela a un cluster sin que MPI cause algún tipo de conflicto.

El súper cómputo tiene múltiples aplicaciones de carácter puramente científico, otras en la industria del entretenimiento, en el gobierno, y también dentro de las empresas. La computadora más poderosa del mundo es la BlueGene de IBM1 actualmente es utilizada para realizar análisis molecular, modelado económico, investigaciones en química y genética. Esta máquina se encuentra en Estados unidos y puede alcanzar un desempeño de hasta 183.5 TFLOPS.

Una de las industrias que ha acercado más al súpercómputo al público en general, es la industria de los efectos especiales. Como un ejemplo, Pixar studios que utiliza computadoras Silicon Graphics y Sun para la realización de sus excelentes animaciones. A últimas fechas, Pixar también ha estado utilizando clusters Linux para el desarrollo de sus animaciones.

Sin embargo la capacidad que da el súper cómputo es aplicado también a áreas como la medicina, la física, la química y muchísimas especialidades más.

Con el fin de dar respuesta al propósito institucional antes mencionado y apoyar a la investigación en

(22)

maestría en Informática de UPIICSA bajo el nombre de "Construcción de una máquina paralela para centros de investigación " y es respaldada por el CIDETEC bajo el proyecto "Construcción de una computadora paralela del TIPO cc-numa", proyecto que en la actualidad esta trabajando sin problemas y dando servicio a investigadores del instituto.

Ahí se desarrollo un prototipo de una máquina paralela del tipo “cluster” con las siguientes características:

- 8 nodos de cómputo interconectados por enlaces de 1000 Mb/s - 2 procesadores Pentium III operando a 1.2 GHz en cada nodo - 256 MB de RAM y disco duro de 80 GB por nodo

- Sistema operativo LINUX (Mandrake 10.1 rc2)

- Servicios de servidor http, ftp y telnet, accesibles por Internet

Adicionalmente, se revisa y en su caso se desarrollan los programas necesarios para su funcionamiento y administración así como se adapta a los lenguajes de programación de “facto”

para el área. Así entonces, esta tesis de grado busca el siguiente objetivo:

a) Diseñar y construir una máquina de procesamiento paralelo utilizando material de cómputo en desuso, o viejo, en buenas condiciones.

Para facilitar el logro de este objetivo general, se establecen metas parciales, desagregadas en tres objetivos específicos.

1.- Diseñar y construir un prototipo de una máquina paralela tipo cluster.

2.- Establecer y afinar la máquina paralela para su óptimo rendimiento.

3.- Adaptar el prototipo para que responda a los estándares de programación y que busque ser compatible a otros sistemas.

El presente documento es la memoria de los trabajos desarrollados en cumplimiento de los objetivos señalados; en esta INTRODUCCIÓN, se da la información general del proyecto.

En el capítulo ANTECEDENTES GENERALES, se delimita el marco de referencia en el que se desarrolla este trabajo partiendo de la situación actual, así como el entorno que tienen que presentar los investigadores y las alternativas que toman.

En el capítulo PRINCIPIOS DE PROCESAMIENTO PARALELO, se delimita el marco teórico en el cual se basa el presente trabajo y bajo el cual se establecen las reglas para el diseño y la construcción, así como hago referencia a los procesos, características y entorno en los cuales son válidas esas condiciones teóricas y son clasificadas desde lo más general a lo más particular.

En el capítulo CONSTRUCCIÓN DE LA MÁQUINA PARALELA, que es el que

(23)

contiene la descripción detallada del trabajo técnico y de desarrollo tecnológico, se contemplan cuatro partes:

• Filosofía de Construcción, incluye que es lo que se quiere llegar a hacer y por que debe de construirse.

• Aspectos de Hardware, que comprende todo lo relacionado al diseño de los elementos que permitirán la construcción y el alto desempeño.

• Aspectos del Software, comprenden la elección correcta del sistema operativo, los programas y servicios que deberá de tener la máquina para responder con alto desempeño.

• Procesos de ensamble, incluyen los comentarios propios del diseño, así como el desarrollo, ensamble, problemas y pruebas realizadas a la máquina paralela

Al final se integran las CONCLUSIONES Y RECOMENDACIONES. Adicionalmente, incluye también un GLOSARIO DE TÉRMINOS y la BIBLIOGRAFÍA utilizada en el trabajo junto con un apartado de ANEXOS que incluye algunos datos técnicos referentes a los tipos de conexión y aspectos básicos de las pruebas y de programación.

(24)

CAPÍTULO 1. ANTECEDENTES GENERALES

En México, la educación en general y la investigación se encuentran definidas en sus características por la dinámica de la estructura socioeconómica de nuestro país en la que se insertan tales actividades.

De esta forma se asigna a la investigación los recursos económicos sobre la base de un presupuesto fijo. Los subejercicios en el gasto público y los recortes a los presupuestos federales dañan a organismos como el Instituto Politécnico Nacional, que carecen del margen de maniobra que tienen las universidades autónomas y que dependen de las políticas del gobierno federal.

Por otro lado, la interrelación que existe entre educación e investigación es esencial para la comprensión de la práctica de la investigación. La evolución de los distintos paradigmas que alumbran el camino de la investigación en las diferentes ramas de la ciencia constituye, desde luego, otro referente vital en la comprensión de los logros y obstáculos que cada ciencia particular enfrenta en su desarrollo, así como atender a las características del individuo cuyas capacidades se construyen histórica y genéticamente. Estas características actúan a su vez en la práctica de la investigación impulsándola o frenando su desarrollo. Es decir, para una comprensión cabal de la práctica de investigación es necesario engarzar dialécticamente los procesos macro y micro que la determinan.

La comprensión cabal de la actividad de investigación que requiere desde luego incorporar el planteamiento general arriba señalado y extraer en cada situación histórica la interrelación con otros ámbitos como el político, el cultural y el económico. El discernimiento de las interrelaciones complejas que históricamente se van construyendo entre los diferentes ámbitos y factores mencionados constituye un ejercicio de difícil ejecución, necesario sin embargo para entender la dinámica de la actividad de investigación en nuestro país. El acercamiento a este conocimiento integral permitirá entender las particularidades de la investigación en el ámbito urbano y regional.

A partir de esta conceptualización se desarrollan las siguientes reflexiones, cuyo objetivo terminal es la comprensión de los problemas y exigencias que se presentan en el proceso de investigación de la problemática arquitectónica, urbana y regional.

En México la preocupación central de obtener el desarrollo económico y la industrialización que en general ha caracterizado las diferentes estrategias de desarrollo implementadas desde la instauración del grupo hegemónico, surgido de la revolución, en el poder, no ha traído, como ocurrió en los orígenes de la industrialización, un desarrollo acelerado de la ciencia. Este aspecto es determinado por las condiciones estructurales de dependencia y subdesarrollo en que se mueve nuestro país, situación aún prevaleciente pese a los reiterados discursos que nos tratan de ubicar como un país desarrollado.

Tal situación estructural se ha traducido en el ámbito científico y técnico en un proceso permanente de transferencia, generalmente mecánica, de los adelantos técnicos y científicos logrados en otros países y que la industrialización de nuestro país requiere para su fortalecimiento. Las consecuencias de esta transferencia, tradicionalmente denunciadas por académicos e investigadores desde diversas disciplinas y enfoques, han sido puntualizadas actualmente a la luz de la perspectiva del desarrollo sustentable.

La corriente de pensamiento del desarrollo sustentable incorpora una nueva concepción del desarrollo basada en tres planteamientos centrales: que se oriente a la satisfacción de las necesidades

(25)

sociales, empezando por la eliminación de la miseria; que sea autógeno e independiente, esto es, basado en las propias fuerzas de la sociedad que lo emprende, y que esté en armonía con el medio ambiente.

Esta corriente ha construido sus planteamientos a partir de una crítica permanente a las consecuencias de la transferencia tecnológica derivadas de una concepción de desarrollo tradicional, basado en la maximización de las ganancias y el excedente económico. Son recurrentes los señalamientos en torno a la expoliación de nuestros recursos, el deterioro del medio ambiente, la crisis de energéticos y alimentos, la destrucción de la cultura local de las comunidades, etc.

La aplicación de tecnología que bajo esta concepción tradicional de desarrollo se efectúa en nuestro país, tiene pautas que van desde la transferencia de los rezagos tecnológicos que, por ejemplo, en el campo han tenido resultados atroces para la agricultura, suelos, agua y aire, con la utilización de sustancias y métodos de fumigación ya desechados en los países que los exportan, hasta la utilización de ciertas técnicas por parte del Estado mismo en la implementación de sus planes globales. La aplicación de técnicas inadecuadas para resolver cualquier tipo de problemática en nuestro país llega incluso a la transferencia de los técnicos mismos, como puede constatarse actualmente en la elaboración de planes y programas de desarrollo.

El patrón de distribución de la inversión pública federal se mantiene sin alteraciones fundamentales para años más recientes. En este caso se encuentra especificada la asignación al sector educativo que recibe en general montos mucho menores que los destinados a los dos sectores priorizados: industria y comunicaciones y transportes. Destacan ligeros incrementos en dos momentos, el primero al iniciar su administración Echeverría Álvarez, y el otro a inicios del sexenio de López Portillo.

La atención a la ciencia, la educación y el arte queda por lo tanto relegada en la medida en que no impactan de inmediato el proceso de desarrollo que, a juicio de sus dirigentes, requiere el país. Esta situación se ha agravado con el recorte del presupuesto en materia social que la implementación del modelo neoliberal ha establecido como base para salir de la crisis.

La escasez de recursos tanto en el ámbito científico como en la educación en general alimenta la existencia de condiciones precarias que se combinan con el escaso desarrollo alcanzado en ambos campos, configurando al parecer un círculo vicioso de precariedad. La estructura educativa en general se orienta a la formación de individuos capacitados técnicamente para incorporarse a las actividades productivas, en cualquiera de sus niveles, por lo que prevalece la debilidad o franca ausencia de espacios para la adquisición de conocimientos acerca del proceso de la investigación. Los resultados:

un nulo o precario conocimiento teórico y metodológico tanto de parte de los egresados del nivel de licenciatura de las diversas disciplinas como de los propios profesores. La abundancia de trabajos que difícilmente podrían considerarse tesis, es una muestra de las deficiencias señaladas.

El descuido de la investigación como función relevante de la educación, en México se explica además por las propias características de la actividad que requiere para su realización de una preparación que sólo se adquiere a través de largos procesos de formación teórica y de práctica de la investigación; además de otras cualidades más escasas aún como son la imaginación, la creatividad, la disciplina, la perseverancia.

(26)

dispersión, el individualismo y la factura artesanal. Tales rasgos no se presentan desde luego de la misma manera y con la misma intensidad.

La parcelación de la ciencia actúa en ello en razón de dos factores: El primero, recurrentemente señalado, es la forma cerrada de pensamiento que nos ha heredado la división de la ciencia en estancos del conocimiento. Sin dejar de reconocer el papel de este fenómeno en un momento histórico en la aceleración del desarrollo científico, podemos afirmar que actualmente sólo reproduce la fragmentación y el aislamiento en que se mueven los investigadores.

Un segundo factor, derivado del primero, es la situación que guardan las ciencias sociales respecto a las naturales. Ambas se encuentran en la actualidad inmersa en un proceso de diversificación que resulta de mayor magnitud en las ciencias sociales, y que se expresa en la generación de subdivisiones menores con estructura y desarrollo diferentes. El desarrollo y características peculiares de cada disciplina científica marcan también a la investigación, de tal forma que en algunas los rasgos anotados son más acentuados que en otras.

1.1 Antecedentes Teóricos Básicos

En el mercado de las empresas mundiales, existen grandes monopolios de software propietario los cuales cobran derechos de uso por una cantidad monetaria que en algunos casos es fija y se denomina licenciamiento” [ 2 ], esta práctica es muy utilizada actualmente en programas comerciales, tales como una hoja de cálculo, hasta programas de administración de recursos empresariales (ERP, por sus siglas en ingles).

La ley de Copyright (Derechos de autor), concede a los productores de software el poder para elegir las reglas que se impondrán sobre su producto a todos los demás consumidores, cómo utilizarlo, con qué recursos, bajo que condiciones e inclusive bajo que fallas deberá de trabajar éste, esté o no de acuerdo. La bandera de la globalización y la alta tecnología han impuesto modas que distan de ser las más productivas y las mejores opciones que permitan explotar la tecnología de la información.

Cuando los usuarios de los programas carecen de las libertades que definen al Software, este no podrá saber qué está haciendo, no pueden comprobar si hay puertas traseras, no pueden vigilar si sé está expuesto a posibles virus y gusanos, no se puede saber qué información personal está siendo manipulada. Y si este software está mal, no se podrá reparar y se tendrá que esperar a que el productor ejerza su poder para hacerlo.

Las discusiones sobre derechos y reglas para el software a menudo se han concentrado solamente en los intereses de los programadores, si consideramos que pocas personas en el mundo programan comercialmente y aún menos los que son dueños de empresas de software propietario. Y si consideramos que el mundo actual necesita utilizar software, entonces los productores de software controlan el modo en que el mundo trabaja, hace negocios, se comunica y se entretiene.

Afortunadamente existen varias asociaciones mundiales que permiten que un usuario decida qué hacer con el software que se utiliza, un ejemplo de esto es el GNU. Este proyecto ha desarrollado un sistema completo de software libre llamado GNU (GNU Not Unix) que es compatible con Unix (surge con relación a un documento inicial de Richard Stallman al cuál se le llama

2 Esta práctica es muy común en el mundo del software propietario.

(27)

Manifiesto GNU), y ha sido traducido a otros idiomas. Se escogió como nombre "GNU" porque cumplía algunos requisitos; primero, era un acrónimo recursivo de "GNU No es Unix"; segundo, ya existía esa palabra en inglés donde Gnu significa Ñu, y tercero, porque era divertido decirla (o cantarla).

Otra asociacion mundial es GPL(), cuya política principal es él darle al usuario el control del uso del software, al tiempo que lo protege de otros que quisieran controlar sus decisiones y manipular sus acciones.

La palabra free "libre" se refiere a libertad de elección y no a su precio, en inglés se usa la misma palabra para libre y gratuito sin embargo no son la misma cosa, de manera que es posible pagar o no, un precio por obtener software GNU pero la diferencia radica en que una vez que se obtiene el software, se podrán ejercer tres libertades específicas para usarlo:

a) Se tendrá la libertad de copiar el programa y distribuirlo.

b) Se tendrá la libertad de modificar el programa como se desee, por tener acceso completo al código fuente y librerías

c) Se tendrá la libertad de distribuir una versión mejorada ayudando así a construir la comunidad.

Este proyecto fue concebido en 1983 como una forma de devolver el espíritu cooperativo que prevalecía en la comunidad computacional en días pasados, al eliminar los obstáculos impuestos por los dueños de software propietario.

En 1971, cuando Richard Stallman[ 3 ] comenzó su carrera en el MIT (Instituto de Tecnología de Massachusetts), trabajó en un grupo que usaba software libre exclusivamente. Incluso compañías informáticas frecuentemente distribuían software libre. Los programadores eran libres de cooperar unos con otros, y frecuentemente lo hacían. En los 80, casi todo el software era propietario, lo cual significa que tenía dueños que prohibían e impedían la cooperación entre usuarios y surgieron grandes monopolios.

Cada usuario de computadoras necesita para que su computadora funcione de un sistema operativo; si no existe éste entonces no es posible ni siquiera comenzar a usar una computadora sin recurrir a un software propietario. Así que el primer elemento en la agenda del software libre es un sistema operativo libre. Un sistema operativo no es sólo opcionalmente el núcleo; si no que también incluye compiladores, editores de texto, software de correo y muchas otras cosas. Por todo esto, escribir un sistema operativo completo es un trabajo bastante grande. Se necesitaron muchos años. Se decidió hacer el sistema operativo compatible con UNIX porque el diseño en general ya estaba probado y era portable, y porque la compatibilidad hacía fácil para los usuarios de UNIX cambiar de UNIX a GNU.

El objetivo inicial de buscar un sistema operativo libre parecido al UNIX fue alcanzado para el inicio de los 90s y se tenían los componentes principales completos, excepto uno: el núcleo.

Linux surgió entonces como un núcleo libre, desarrollado por Linus Torvalds. La combinación de Linux con el ya casi completo sistema GNU permitió un sistema operativo completo, actualmente se estima que hay cientos de miles de personas que ahora usan proyectos GNU basados en Linux, incluyendo Slackware, Debian, Red Hat y otros.

(28)

Sin embargo, el proyecto GNU no se limita a sistemas operativos ya que se aplicó también a todo el amplio espectro de software incluyendo el software de aplicación, también proporciona software para usuarios que no son expertos en computadoras, además de ofrecer juegos y otras recreaciones.

¿Hasta dónde puede llegar el software libre? No hay límites, excepto cuando las leyes como el sistema de patentes prohíben el software libre completamente. El objetivo final es el de proporcionar software libre para hacer todos los trabajos que los usuarios de computadoras quieran hacer y por lo tanto hacer el software propietario obsoleto.

1.2 Posix (Portable Operating System Interface)

Posix está formado por un conjunto de interfaces estándar de sistema operativo basadas en el sistema operativo UNIX y desarrolladas bajo la supervisión de la IEEE. [4]. La necesidad de tener un estándar en común es muy importante ya que las compañías que usaban computadoras querían ser capaces de desarrollar programas que pudieran ser transportados entre diferentes sistemas de cómputo de varias manufacturas o plataformas, sin tener que volver a reprogramar. UNIX fue seleccionado como la base para un sistema de una Interfase estándar en parte porque era neutral en cuanto a la manufactura y era necesario desarrollar un sistema de común denominador.

Esto hace posible que al aprender un sistema operativo UNIX [5], cualquiera que este sea, permitirá utilizar cualquier otro sistema UNIX distinto, sin muchos problemas y únicamente se deberá de aprender las particularidades.

La estructura del estándar de POSIX está definida por la palabra POSIX y un decimal a continuación del nombre, a continuación se muestran los más importantes:

• POSIX.1 es el estándar para una Interfase de programa de aplicación en el lenguaje C.

• POSIX.2 es el shell estándar y Interfase de utilidades (es decir, la Interfase de comandos del usuario con el SO).

• POSIX.3 es el estándar para la Interfase de PERL apegada a la norma IEEE 1003.1

• POSIX.4 para la administración de hilos (threads).

Recientemente, las interfaces POSIX.1 y POSIX.2 fueron incluidas dentro de una Interfase aún más grande conocida como X/Open Programming Guide 4.2, también conocida como la especificación UNIX Simple (Single UNIX Specification" y "UNIX 95").

El grupo de estándares abiertos, llamado en ingles “Open Group”, un grupo para

4 El IEEE (Institute of Electrical and Electronics Engineers), es una organización profesional técnica sin ánimo de lucro que incluye a más de 377,000 socios en 150 países. A través de sus socios el IEEE se ha convertido en una autoridad en varias áreas técnicas, desde ingeniería en informática hasta ingeniería en telecomunicaciones, pasando por otras como ingeniería biomédica o ingeniería eléctrica.

Fuente http://www.ieee.org/.

5 Unix fue creado en los Laboratorios Bell de AT&T a comienzos de la década de 1970, el éxito del sistema operativo Unix ha dado lugar a una gran cantidad de versiones diferentes: los que recibieron el (en ese tiempo gratis) código del sistema Unix. Actualmente Unix® es marca registrada de X/Open.

(29)

estándares industriales y es el propietario de la marca registrada UNIX y puede por lo tanto, registrar sistemas operativos que formen parte o complementen mejoras a la Interfase de su sistema. El IBM OS/390 es un ejemplo de un sistema operativo que incluye una Interfase UNIX registrada.

1.3 El Sistema Operativo Linux

Linux es una versión de UNIX libremente distribuible e independiente, para plataformas con máquinas x86, Motorola 68k, Digital Alpha, Sparc, Mips y Motorola Power PC. En la actualidad, este sistema operativo es utilizado por miles de usuarios para desarrollo de software, redes y para plataformas de usuarios finales. Entre los muchos sistemas operativos alternos que existen, se ha convertido en una opción interesante, independientemente de que estas vengan de UNIX o de las más conocidas donde se encuentra Windows y NT.

Linux es una implantación de la especificación POSIX con la cual cumplen todas las verdaderas versiones de UNIX, el núcleo de Linux no usa código de AT&T o de cualquier otra fuente propietaria, la mayoría de los programas disponibles para Linux es desarrollado por el proyecto GNU de la Free Software Foundation. Este soporta un amplio espectro de aplicaciones o paquetes de programación tales como X Window, Emacs, redes de datos bajo protocolos TCP/IP (incluyendo SLIP, PPP, ISDN), está disponible en Internet en cientos de servidores FTP y el núcleo del Linux está legalmente protegido por la licencia pública GNU (GPL).

Linux incluye compiladores, ensambladores, editores de texto, paquetes de correo electrónico, lectores de Noticias, navegadores, servidores y programas para la creación y edición gráfica, además maneja los archivos de forma jerárquica, de la misma forma que el sistema operativo DOS, con la diferencia que el DOS está diseñado para procesadores x86.

Linux fue creado originalmente por Linus Benedict Torvalds [6] en la Universidad de Helsinki en Finlandia, sin embargo Linux ha sido desarrollado con la ayuda de muchos programadores a través de Internet, originalmente inició la creación del núcleo como su proyecto favorito, inspirado por su interés en MINIX, un pequeño sistema UNIX. El se propuso a crear lo que en sus propias palabras seria un mejor Minix que el Minix. El 5 de octubre de 1991, Linus anunció su primera versión

"oficial" de Linux, la versión 0.02. Desde entonces, muchos programadores han respondido a su llamado, y han ayudado a construir Linux como el sistema operativo completamente funcional que es hoy.

La última versión estable es la versión 2.2, que soporta muchos más periféricos, desde procesadores hasta joysticks, sintonizadores de televisión y reconoce buena cantidad de tarjetas de sonido. Incluye también soporte para tipos de archivos para Macintosh HFS, UNIX UFS y en modo de lectura, HPFS de OS/2 y NTFS, de NT.

Linux como producto final presenta las siguientes ventajas [7]:

(30)

• Precio bajo en distribución completa de venta (aproximadamente 100 Dólares Americanos) o gratis por medio de Internet.

• Estabilidad

• Seguridad, es mucho más segura que otros servidores comerciales.

• Compatibilidad, reconoce la mayoría de los otros sistemas operativos en una red.

• Velocidad, es mucho más veloz para realizar las tareas.

• Posee el apoyo de miles de programadores en el ámbito Mundial.

• El paquete incluye el código fuente, lo que permite modificarlo de acuerdo a las necesidades del usuario.

• Ideal para la programación, ya que se puede programar en Linux para distintas plataformas, como para Windows.

• Un sistema escalable.

• Se puede usar en casi cualquier computadora, desde una computadora con tarjeta madre 386.

• Multitareas real.

• Puede manejar múltiples procesadores. Incluso hasta 16 procesadores.

• Maneja discos duros de hasta 16 TeraBytes.

• Los fabricantes de Hardware le están dando su apoyo, como IBM y COMPAQ.

• Vendedores y desarrolladores implementan un sistema de certificación para Linux.

Sin embargo cuenta también con las siguientes desventajas:

• Linux no cuenta con una empresa que lo respalde, por lo que no existe un verdadero soporte como el de otros sistemas operativos.

• Linux corre el riesgo de llegar a fragmentarse como fue el caso de UNIX.

Linux cuenta con las siguientes características técnicas

• Multitarea[8]:permite que varios programas o en su caso procesos reales puedan ejecutarse al mismo tiempo.

• Multiusuario: permite que varios usuarios estén utilizando la misma máquina al mismo tiempo.

• Multiplataforma: corre en muchas CPU’s distintas tal es el caso de Intel, Mac y Alpha.

• Bajo la plataforma Intel trabaja en modo protegido 386 [9].

• Tiene protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.

• Permite la carga de ejecutables por demanda: La lectura del disco es sólo de aquellas partes de un programa que están siendo usadas actualmente.

• Permite la política de copia en escritura que permite compartir las páginas entre ejecutables: Varios procesos pueden usar la misma zona de memoria para ejecutarse y cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Este método tiene dos beneficios:

aumenta la velocidad y reduce el uso de memoria.

• Permite la memoria virtual usando paginación, lo cual involucra el no tener intercambio de procesos

8 Gracias a la multitarea, el rendimiento de las CPUs puede aumentar entre un 20 y un 25%. La multitarea tiene la misión de que la CPU realice varios trabajos simultáneamente vía hardware y no por simulación.

9 Dentro del modo protegido, el software puede realizar un cambio de tarea para entrar en tareas en modo 8086 virtual (V86 mode). Cada una de estas tareas se comporta como si fuera un 8086 el que lo está ejecutando, lo que permite ejecutar software de 8086 (un programa de aplicación o un sistema operativo).

(31)

completos a disco: una partición o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de intercambio sobre la marcha.

• Un total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser usadas en un momento dado con un límite teórico de 2Gb para intercambio.

• La memoria se administra como un recurso unificado para los Programas del usuario y para él caché de disco, de tal forma que toda la memoria libre puede ser usada para él caché y éste puede a su vez ser reducido cuando se ejecuten grandes programas.

• Utiliza las librerías compartidas de carga dinámica [10] y librerías estáticas.

• Permite realizar los volcados del estado (core dumps) para posibilitar los análisis post-mortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo.

• Es casi totalmente compatible con POSIX, System V y BSD a nivel fuente.

• Utiliza un módulo de emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario.

• Permite la edición del código fuente, incluyendo el núcleo completo y todos los manejadores (drivers), las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente.

Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente pero todo lo que ha sido gratuito sigue siendo gratuito.

1.4 El Paradigma Cliente Servidor

Desde el punto de vista de una aplicación, el TCP/IP (Ver anexo A), al igual que muchos otros protocolos de comunicación, implementa un mecanismo fiable para la transmisión de datos entre computadoras. En concreto, el protocolo TCP/IP permite que un programador pueda establecer comunicación de datos entre dos programas de aplicación, tanto si ambos se están ejecutando en la misma máquina, como en máquinas distintas unidas por algún camino físico (una red local, conexión telefónica directa entre computadoras, computadoras conectadas a Internet, etc.).

Hay que tener presente que el protocolo TCP/IP especifica los detalles y mecanismos para la transmisión de datos entre dos aplicaciones que se comunican pero no dictamina cuando ni por qué deben interactuar ambas aplicaciones, ni siquiera especifica como debería estar organizada una aplicación que se va a ejecutar en un entorno distribuido. Es tarea del diseñador de la aplicación distribuida el establecer un protocolo de comunicación y sincronización adecuado.

El esquema de programación más utilizado en la práctica para la implementación de aplicaciones distribuidas es el paradigma cliente - servidor. La motivación fundamental para el empleo del paradigma cliente - servidor surge cuando se presentan dos situaciones:

• Se hace referencia al mismo recurso y se presentan colisiones.

(32)

• Cuando se agotan los recursos físicos de un sistema.

Para entender dichos problema, imaginemos un programador de computadoras que inicia la ejecución de dos programas en máquinas distintas y que tiene la intención de que dichos programas se puedan comunicar entre sí. Una vez iniciado el primer programa; éste envía un mensaje. La conexión con la máquina a la cual va dirigido el mensaje se puede establecer en un intervalo de unos pocos milisegundos, por lo que el proceso recién enviado determina que su destino todavía no existe, con lo cual emite un mensaje de error y finaliza su ejecución. Mientras tanto, el programador inicia la ejecución del segundo proceso. Desafortunadamente, el segundo proceso no se puede comunicar con el primero ya que éste ha concluido su ejecución. Incluso si los dos procesos intentan establecer la comunicación continuamente éstos pueden ejecutarse tan rápidamente que la probabilidad de colisión es muy alta.

Muchos administradores hacen que ciertos programas de comunicaciones se inicien automáticamente cuando el sistema arranca, de este modo se aseguran que la computadora estará preparada para aceptar ciertas solicitudes de servicio. Después de iniciar su ejecución, cada uno de estos programas se queda en espera de la siguiente petición para el servicio que se espera dar. En el paradigma cliente - servidor se divide las aplicaciones en dos categorías, dependiendo de si la aplicación se queda en espera de conexiones o las inicia.

En general, una aplicación que inicia una comunicación con otra se le califica como cliente. Los usuarios finales invocan aplicaciones cliente cuando utilizan un servicio de red. Cada vez que se ejecuta una aplicación cliente, ésta contacta con el servidor, le envía una solicitud de servicio y espera la respuesta o resultados del servicio. El proceso cliente es el encargado de llevar a cabo la interacción con el usuario y de mostrar los resultados de las peticiones de servicio.

En la mayoría de las ocasiones los clientes son más fáciles de diseñar que los servidores, y no suelen precisar privilegios especiales del sistema para poder funcionar. Un servidor es un programa que espera peticiones de servicio por parte de un cliente. El servidor recibe la petición del cliente, ejecuta el servicio solicitado y retorna los resultados al cliente. No existe una interacción directa entre el usuario y el servidor, de esto ya se encarga la aplicación cliente.

1.5 Direcciones IP

El concepto de números o direcciones IP se puede entender mejor si se establece una analogía entre las computadoras y teléfonos. Del mismo modo que cada teléfono posee un único número a nivel mundial, cada computadora conectada directamente a la red Internet tendrá asignado un único número IP a nivel mundial. Por lo tanto, cualquier computadora del planeta puede conectar con cualquier otra computadora, siempre y cuando conozca su número IP y, además, exista un camino físico (formado en líneas telefónicas conmutadas, enlaces vía satélite, líneas de fibra óptica, etc.) que una a ambas computadoras para que puedan intercambiar información.

La comunicación entre computadoras se lleva a cabo mediante el intercambio de paquetes.

La semántica de los conjuntos de bytes que recibe una computadora viene dictada por la aplicación a la cual van destinados. Los paquetes de información que se difunden a través de una red de computadoras son encaminados hacia un equipo o host concreto y dentro de dicho host a un puerto concreto.

(33)

Se puede pensar en un puerto como un canal de comunicación. Cada computadora dispone de un total de 65536 canales o puertos, los cuales pueden estar reservados o no estar activos. Para que un puerto esté activo es necesaria una aplicación que tome el control del mismo y sea capaz de administrar los paquetes de bytes que llegan por dicho puerto. Cuando un host recibe un paquete examina su cabecera o sección de información para averiguar a que puerto va destinado, si existe una aplicación escuchando dicho puerto, entonces se le pasan los bytes del paquete para que ésta los interprete y actúe consecuentemente. El host no responderá a peticiones de conexión encaminadas hacia un puerto para el cual no existe ninguna aplicación escuchando o esperando. Es decir, de los paquetes de bytes remitidos hacia una computadora en concreto, sólo se va a atender aquellos paquetes para los cuales existe una aplicación escuchando en el puerto al cual van encaminados.

Existe una serie de puertos estándares utilizados universalmente para varios servicios.

Algunos de ellos son:

Servicio Puerto Descripción

FTP 21 Protocolo de transferencia de

archivos.

Telnet 23 Permite el acceso a una cuenta en

un equipo remoto.

SMTP 25 Para enviar correo electrónico.

POP3 110 Protocolo para obtener correo

electrónico.

HTTP 80 Protocolo para publicación

estándar en la Internet.

NNTP 119 Grupos de noticias de Internet

GOPHER 70 Antiguo Servicio de acceso a

información en modo texto.

Los programas de los servidores deben contener código que maneje situaciones de:

• Autenticación - Verificar la identidad del cliente.

• Autorización - Determinar si un cliente dado posee permisos para acceder al servicio que suministra.

• Seguridad de datos - Garantizar que la información no es revelada, de manera no intencionada, a clientes sin autorización.

• Privacidad - Preservar la información de un usuario de accesos no autorizados.

• Protección - Garantizar que las aplicaciones de red no puedan abusar de los recursos del sistema.

Referencias

Documento similar