Download Retos del cómputo moderno

Document related concepts

Servidor wikipedia , lookup

Núcleo (informática) wikipedia , lookup

Computación paralela wikipedia , lookup

Middleware wikipedia , lookup

Clúster (informática) wikipedia , lookup

Transcript
Retos del cómputo moderno
de Sistemas de la UANL
ía Mecánica y Eléctrica
Distribuido, paralelo e integrado
Conferencia magistral, el 15 de octubre del 2008
esionales
a Congreso
nivel maestría
Cuarto
Internacional de las Tendencias Tecnológicas en Computación
Centro adelos
Innovación
e científico
sistemasy Desarrollo Tecnológico en Cómputo, IPN, México D.F.
la industria, gobierno o
Dra. Elisa Schaeffer
ortancia por el impacto
CENTRO DE INNOVACIÓN, INVESTIGACIÓN Y DESARROLLO
EN INGENIERÍA Y TECNOLOGÍA
Sistemas distribuidos
• Un sistema distribuido consiste en componentes ubicados en
computadoras individuales que comunican entre ellos vía una red
de telecomunicaciones.
• La motivación principal para sistemas distribuidos es compartir
recursos, o sea contenidos (documentos, música, películas),
dispositivos (pantallas, impresoras) o recursos computacionales
(memoria, disco duro, procesador).
Ejemplos de sistemas y servicios distribuidos
• Internet - una red de ruteadores, computadoras y otros dispositivos de red.
• WWW - un servicio que opera en la Internet que consiste de servidores
HTTP y programas clientes (navegadores) para acceder contenido de los
servidores vía identificadores tipo URL.
• Redes de telefonía celular - estaciones base, servidores y teléfonos móviles.
• Cómputo ubicuo - la cooperación y sincronización automatizada de
dispositivos móviles con dispositivos en su ambiente.
• Redes P2P (peer-to-peer) - disponibilidad de contenido en las computadoras
de los usuarios participantes para compartir en la Internet.
Estructura de un sistema distribuido
Firefox
Servicios y aplicaciones
Skype
Adium
SSH
Middleware
XP
Linux
CORBA
RMI
Sistema operativo
OS X
Capa de hardware
AMD
Intel
Ejemplos de arquitecturas posibles
• Cliente-servidor
• Cliente-multiservidor
• Cliente-proxy-servidor
• Entre pares (P2P)
Retos principales de sistemas distribuidos
• Al diseñar y operar sistemas distribuidos, el ingeniero enfrenta numerosos retos:
• Los componentes pueden tener características diferentes.
• Es posible que todos o algunos de los componentes entran y salen el sistema
independientemente de una manera dinámica, cambiando su estructura.
• Hay que atender los asuntos de seguridad: control de accesos, permisos y
derechos.
• Hay que asegurar extensibilidad a un alto número de usuarios simultáneos.
• Si un componente falla, el sistema debe recuperar de los errores que causa
la pérdida del componente.
• Todo el sistema debe funcionar de una manera transparente para que el
usuario no tenga que estar consiente de la naturaleza distribuida.
Puntos críticos
• Canales de comunicación - rapidez, confiabilidad
• Sincronización y un “reloj común” - poder establecer un orden temporal
entre mensajes recibidos
• Detección de errores y fallas
• Recuperación de errores y fallas
• Adaptación a cambios dinámicos en la estructura
• Eficacia de los protocolos de comunicación y operación
• Ruteo de los mensajes en el sistema
• Control de congestión de las canales de comunicación
Parelelismo
• En un sistema uniprocesador, el paralelismo refiere a la comunicación y
coordinación entre los procesos que están esperando su turno de
ejecución. En este caso, paralelismo es una abstracción del sistema.
• Actualmente, hasta una laptop barata ya puede contar con un procesador de
doble núcleo, que permite que dos procesos estén en ejecución
simultáneamente.
• Los retos del paralelismo son la coordinación, sincronización y
cooperación de los procesos que se ejecuta de manera simultánea.
• Esto no es nada fácil - casi cada caída de una computadora se debe a un
error en cómo el sistema maneja el paralelismo.
Sistemas paralelos versus distribuidos
• Los sistemas distribuidos son necesariamente paralelos - los distintos
componentes del sistema operan simultáneamente.
• Un sistema paralelo no es necesariamente distribuido: si los núcleos tienen
acceso a una memoria local compartida, se facilita mucho la tarea de su
coordinación.
• En sistemas distribuidos, frecuentemente se necesita establecer algún tipo
de memoria compartida distribuida para la realización de ciertos tipos de
operaciones.
• En ambos casos, una tarea importante es la recolección de basura - no es
trivial saber qué memoria sigue en uso cuando no está manejado por un solo
proceso centralizado.
Coordinación justo, atómico y sin bloqueos
• Es necesario que la repartición de acceso y tiempo de uso de
recursos compartidos sea justa (inglés: fairness) entre todos los
procesos que lo solicitan.
• Cuando un proceso está realizando una transacción que no debe ser
interrumpida (o sea, una transacción atómica), tiene que tener
garantizado la continuidad de esa operación.
• No se debe ocurrir que bloqueo donde un proceso A se quede con
algún recurso X esperando infinitamente por otro recurso Y que ya
tiene reservado otro proceso B que espera por el recurso X (inglés:
deadlock).
Retos de la paralelización
• Es cierto que dos procesadores pueden ejecutar - en teoría - una tarea más
rápidamente que uno solo.
• Sin embargo, el programador tiene que diseñar su programa de tal manera
que sea posible identificar cuáles partes se puede ejecutar en paralelo y qué
dependencias hay entre las tareas que ejecuta el programa.
Sistemas integrados (inglés: embedded systems)
• Cuando el dispositivo final no es una computadora sino un aparato que tiene
funcionalidad afuera de pura computación, nos enfrentamos con más retos.
• Las condiciones de operación están dictadas por la funcionalidad principal
del aparato, sea un teléfono, un robot industrial, un vehículo o una lavadora.
• Típicamente la capacidad computacional de un dispositivo integrado es
significativamente menor a la de computadoras tradicionales.
• Son sistemas de tiempo real: el tiempo de espera permisible entre la acción
de un usuario y la reacción del sistema está mucho más limitada.
• En el desarrollo de sistemas integrados, los requisitos de diseño,
especificación, verificación y respeto a los estándares es aún más
importante que en el desarrollo de software para computadoras - los errores
no serán puramente de cómputo, sino pueden tener repercusiones físicas
inmediatas.
Conocimientos necesarios
• Para poder exitosamente diseñar y desarrollar sistemas integrados, se
requiere conocimientos previos de
• física (mecánica, electromagnetismo),
• electrónica (componentes básicos, diagramas),
• procesamiento de señales (transformaciones, teoría de control, sensores),
• arquitectura de computadoras (instrucciones de procesadores, manejo
de memoria, canales de entrada y salida) y
• sistemas operativos (núcleos, controladores de dispositivos).
Retos por dispositivos heterogéneos
• Al desarrollar código y operar el mismo software en distintos tipos de
dispositivos, uno tiene que considerar los cambios con respeto a
• protocolos, interfaces y acceso a redes de telecomunicación,
• diferencias en el hardware, tales como
• cantidad, velocidad y persistencia de la memoria,
• velocidad y tipo del procesador y
• diferencias en tamaño, resolución y tipo de pantalla;
• los sistemas operativos y sus características fundamentales como
• el formato del sistema de archivos
• los módulos y mecanismos de control
• lenguajes de programación, verificando
• la disponibilidad de compiladores,
• la compatibilidad de librerías y
• la eficiencia del ejecutable.
Retos por extensibilidad
• Para poder extender la funcionalidad del sistema, se atiende
• la definición de interfaces públicas de programación,
• reuso de código y componentes existentes,
• código abierto,
• interoperabilidad de código escrito por distintas personas y
• complejidad de las combinaciones de condiciones que emergen en el
crecimiento del sistema.
• Para poder extender el uso del sistema a un mayor número de usuarios:
• El sistema debe funcionar eficientemente aún cuando el número de
usuarios incremente de una manera significativa con respeto a tiempo de
respuesta.
• El incremento en la cantidad necesaria de recursos no puede ser mayor
que lineal en el número de usuarios.
Retos de la seguridad de la información
• Una falla no debe destruir o corromper información; se puede recuperar a
través de redundancia en la arquitectura y la operación del sistema.
• Acceso a información y recursos debe estar limitado a componentes y
usuarios autorizados.
• Uso de criptografía - aplicación de sellos digitales, cifras y certificados.
Retos de cambios dinámicos y la adaptación
• En la actualidad se busca desarrollar soluciones de cómputo integrado que
no requieren intervención de un ser humano para ajustar su
comportamiento al enfrentar un cambio en su ambiente de operación.
• Tales sistemas requieren el uso de técnicas de la inteligencia artificial para
que el sistema sea capaz de observar su ambiente y deducir la necesidad de
realizar cambios en su comportamiento.
• Ese tipo de sistemas ya existen y se están constantemente convirtiendo a
algo más cotidiano:
• Sistemas de iluminación y aire acondicionado inteligentes.
• Sistemas de seguridad y control de accesos.
• Sistemas de control vehicular dentro de un vehículo individual y entre
grupos de vehículos cercanos.
Futuro del programador
• Ya no basta saber escribir un programa que funciona en un solo núcleo de un
solo procesador en una cierta versión de un cierto sistema operativo con
ciertos tipos de periféricos en una computadora individual.
• Hay que manejar...
• programación paralela para aprovechar de los múltiples núcleos o
procesadores disponibles en las computadoras;
• programación distribuida: aplicaciones que comunican entre
computadoras;
• programación web: aplicaciones que residen en servidores HTTP e
interactúan con varios navegadores en diferentes sistemas operativos;
• programación de dispositivos integrados para crear una amplia gama de
productos innovadores que facilitan la vida y el trabajo.
Gracias por su atención.
Recibo con gusto sus preguntas y comentarios en este
momento igual como posteriormente por correo electrónico
o teléfono.
[email protected]
http://it.ciidit.uanl.mx/~elisa/
(81) 1340 4000
http://www.uanl.mx/
ext. 1637
http://www.fime.uanl.mx/
ext. 1509 & 1518
http://www.ciidit.uanl.mx/