Universidad Autónoma de Manizales Departamento de Ciencias Computacionales ASIGNATURA CÓDIGO 1004 Sistemas Distribuidos NÚMERO DE CRÉDITOS Trabajo Presencial PRERREQUISITOS Trabajo dirigido Redes LAN PERIODO ACADÉMICO 2014-1 Estudio independiente DOCENTE Marlon J. Manrique JUSTIFICACIÓN Las estrategias desarrolladas en el campo de la los sistemas distribuidos intentan hacer que los computadores realicen de una manera eficiente procesos independientes de la máquina de forma transparente a los usuarios; optimizando así el uso se los recursos que se encuentren asociados al sistema, utilizando como medio de comunicación las redes computacionales. Conociendo los principios fundamentales y algunas de las técnicas desarrolladas en esta área se logran ampliar las bases conceptuales del ingeniero de sistemas optimizar el uso de recursos en una red y de los que deben manifestar un cierto comportamiento distribuido. OBJETIVOS DE APRENDIZAJE Al finalizar el curso los estudiantes podrán: Conceptuales: Identificar claramente la diferencia entre sistemas distribuidos, sistemas de red y servicios Explicar las características de un sistema distribuido Procedimentales: Manejar las herramientas que permitan desarrollar servicios distribuidos. Desarrollar aplicaciones basado en los conceptos de Sistemas Distribuidos. Instalar y Configurar Servicios Distribuidos que se encuentran en el mercado Actitudinales: Reconocer la importancia del autoaprendizaje y el aprendizaje cooperativo y colaborativo, que se evidencia en el trabajo en equipo y en las sesiones de trabajo en clase, donde todos pueden participar activamente. Página 1 de 5
MAPA CONCEPTUAL CONTENIDOS 1. Historia y motivación. Definición del ámbito de estudio. Desarrollo histórico. Ventajas y desventajas. Objetivo Diferenciar y definir las características básicas de los sistemas distribuidos. 2. Clasificaciones y metas. Tipos de arquitecturas. Qué se espera de los sistemas distribuidos? Requisitos que debe cumplir. - Reconocer y Diferenciar las diferencias entre los sistemas cliente servidor, red y sistemas distribuidos. - Caracterizar y distinguir las diferentes arquitecturas que se pueden considerar como sistemas distribuidos - Identificar las diferencias de un sistema distribuido con respecto a una aplicación distribuida.. Redes y protocolos (Enfocado a S.D) El modelo ISO/OSI. Tecnologías de red de área local. TCP/IP. Protocolos orientados a sistemas distribuidos. - Reconocer, e Identificar los protocolos de comunicación que utilizan los sistemas distribuidos para su ejecución. Página 2 de 5
- Manejar las plataformas sobre las cuales los sistemas distribuidos se ejecutan sin profundizar en los protocolos de red que se manejan (este tema se toca en Redes). 4. Comunicación entre procesos Comunicación Cliente/Servidor sockets) Introducción Características Representación externa de datos y Marshalling - Identificar las características de las aplicaciones Cliente Servidor, concurrentes, no concurrentes, bloqueantes, no bloqueantes. - Desarrollar una aplicación utilizando de hilos para repasar este tema, el cual se requiere para aplicaciones concurrentes. - Analizar programas que ejemplifiquen el uso de los Sockets bajo lenguajes de programación como C y JAVA. - Desarrollar una aplicación usando Sockets aplicando las características asociadas al protocolo de red, los puertos en los cuales se atienden las aplicaciones, usando lenguajes de programación como JAVA y C++ y Sistemas operativos de red como LINUX. 5. Objetos Distribuidos e Invocación remota. Llamados a procedimiento remoto (RPC). Peculiaridades de la RPC. Definición de interfaces y ligadura. Realización de RPCs. Ejemplos de uso de RPCs. RPCs y procesos ligeros. RMI Corba JINI Web Services - Analizar y Manejar aplicaciones desarrolladas con RPC y RMI y reconocer los conceptos básicos que permites a estos ambientes desarrollar aplicaciones distribuidas. - Identificar las diferencias con respecto a la invocación de procesos remotos (RPC) de los programas procedimentales, con la invocación de métodos Remotos (RMI) de los programas orientados por objetos. - Analizar programas ejemplo que demuestren el uso de RMI, RPC y CORBA. - Desarrollar un proyecto que use RMI. Nota: Este proyecto será aplicado junto con las técnicas de control de concurrencia y este será el momento ideal de desarrollarlo. 6. Servicios Distribuidos Archivos Distribuido (NFS, SAMBA, AFS) y Servicio de Nombres DNS. Arquitectura. Control de acceso. El servicio de archivos y de directorio. Casos de Estudio de Servicios Distribuidos Archivos (NFS, SAMBA) Servidor de Nombres DNS - Identificar y Reconocer las diferencias entre un servicio y un sistema distribuido, al igual que Página de 5
las características de las aplicaciones distribuidas. - Realizar el montaje de NFS, DNS y SAMBA, sobre el sistema operativo de Red LINUX. - Realizar montaje de Clustering, DFS y distribución de cargas sobre Windows 200 Enterprise Edition. ESTRATEGIAS DE ENSEÑANZA-APRENDIZAJE En la búsqueda de alcanzar los objetivos de aprendizaje del curso, durante el desarrollo del mismo se promueve el autoaprendizaje y el aprendizaje cooperativo y colaborativo. Es así como a través de los talleres y las actividades extraclase, los estudiantes pueden explicarse mutuamente lo apropiado durante el desarrollo de las clases presenciales o el desarrollo de los talleres y acudir a las sesiones de trabajo dirigido para aclarar posibles dudas o profundizar en temáticas del curso. Se espera que lo estudiantes puedan construir los conocimientos requeridos y adelantar las tareas propuestas por el profesor para cada temática. Para llevar a la práctica la estrategia propuesta, el profesor procura balancear el autoaprendizaje, el trabajo colaborativo realizado por los estudiantes y el abordaje de los conocimientos conceptuales y procedimentales en las sesiones de clase presencial. En un momento inicial el profesor utiliza la exposición de conceptos propios del área de conocimiento del curso, para posteriormente buscar la interpretación y análisis por parte de los estudiantes, quienes a su vez a través de las lecturas, el trabajo individual, el trabajo cooperativo con sus compañeros y el apoyo del profesor, avanzará paulatinamente en el proceso de aprendizaje propuesto en el curso y realizará la transferencia y aplicación de los conocimientos adquiridos a diferentes situaciones. De acuerdo con el plan de desarrollo de este programa, y bajo las indicaciones generales dadas por el profesor, el estudiante preparará el tema de cada clase consultando: el texto del curso, las referencias bibliográficas indicadas en este programa, las anotaciones de la página del curso, y la información disponible a través de Internet le servirán para desarrollar los contenidos. Se recomendará especialmente la lectura de material de referencia en inglés. El curso se dictará semanalmente en el horario estipulado. El profesor ofrecerá su asesoría en el desarrollo de los proyectos. EVALUACIÓN CORTE TIPO DE EVALUACIÓN % PARCIAL % TOTAL PRIMERO SEGUNDO TERCERO 0% 5% 5% REFERENCIAS BIBLIOGRÁFICAS Libro guía, de disponibilidad en la biblioteca del programa: COULOURIS, George; DOLLIMORE, Jean y KINDBERG, Tim. Distributed Systems: Concepts and Design, 4a Edición. Addison-Wesley, 2005. [004.6 C685]. Página 4 de 5
[1] ANDREWS, Gregory R. Foundations of multithreaded, parallel, and distributed programming. Massachusetts: Addison-Wesley, 2000 [005.1 A527] [2] FOSTER, Ian T. Designing and building parallel programs: concepts and tools for parallel software engineering. Addison-Wesley, 1995 [005.26 F677] [] STEVENS, W Richard. UNIX Network Programming Vol. I y II. Prentice-Hall, 1990. [005.71 S78] [4] SLOMAN, Morris y KRAMER, Jeff. Distributed System and Computer Network. Prentice-Hall,1987 [004.6 S565] Página 5 de 5