Sistemas Operativos para Aplicaciones Distribuidas

Usted está aquí

Créditos
6
Tipos
Complementaria de especialidad (Ingeniería del Software)
Requisitos
  • Precorrequisito: PAR
  • Prerrequisito: SO
Departamento
AC
Esta assignatura es una intensificación de los conceptos básicos de SO. NO ES UNA ASIGNATURA SOBRE SO DISTRIBUIDOS. El objetivo es entender mejor cómo la gestión de recursos por parte del SO puede afectar al rendimiento y eficiencia de aplicaciones distribuidas, tales como BBDD, buscadores, etc. Las políticas y estrategias de gestión de recursos se ampliarán a nuevos niveles, tales como tiempo de ejecución, middleware o librerías.

Profesorado

Responsable

  • Marisa Gil Gomez ( )

Horas semanales

Teoría
1
Problemas
2
Laboratorio
1
Aprendizaje dirigido
0.4
Aprendizaje autónomo
5.6

Competencias

Competencias Técnicas

Competencias técnicas comunes

  • CT2 - Utilizar de forma apropiada teorías, procedimientos y herramientas en el desarrollo profesional de la ingeniería informática en todos sus ámbitos (especificación, diseño, implementación, despliegue -implantación- y evaluación de productos) de manera que se demuestre la comprensión de los compromisos adoptados en las decisiones de diseño.
    • CT2.4 - Demostrar conocimiento y capacidad de aplicación de las herramientas necesarias para el almacenaje, el procesamiento y el acceso a los Sistemas de información, incluidos los basados en web.
  • CT6 - Demostrar conocimiento y comprensión del funcionamiento interno de un computador y del funcionamiento de las comunicaciones entre ordenadores.
    • CT6.3 - Demostrar conocimiento de las características, funcionalidades y estructura de los Sistemas Operativos que permita su uso adecuado, administración y diseño, así como la implementación de aplicaciones basadas en sus servicios.
    • CT6.4 - Demostrar conocimiento y capacidad de aplicación de las características, las funcionalidades y la estructura de los Sistemas Distribuidos, de las Redes de Computadores y de Internet que permita su uso y su administración, así como el diseño y la implementación de aplicaciones basadas en ellas.
  • CT7 - Evaluar y seleccionar plataformas de producción hardware y software para la ejecución de aplicaciones y de servicios informáticos.
    • CT7.1 - Demostrar conocimiento de las métricas de calidad y saber utilizarlas.
    • CT7.2 - Evaluar sistemas hardware/software en función de un criterio de calidad determinado.
    • CT7.3 - Determinar los factores que inciden negativamente en la seguridad y la fiabilidad de un sistema hardware/software, y minimizar sus efectos.
  • CT8 - Planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha, su mejora continua y valorando su impacto económico y social
    • CT8.1 - Identificar tecnologías actuales y emergentes y evaluar si son aplicables, y en qué medida, para satisfacer las necesidades de los usuarios.
    • CT8.4 - Elaborar el pliego de condiciones técnicas de una instalación informática que cumpla los estándares y la normativa vigente.

Competencias Técnicas de cada especialidad

Especialidad ingeniería del software

  • CES1 - Desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario, que se comporten de forma fiable y eficiente, que tengan un desarrollo y mantenimiento asequible y que cumplan normas de calidad, aplicando las teorías, los principios, los métodos y las prácticas de Ingeniería del Software.
    • CES1.4 - Desarrollar, mantener y evaluar servicios y aplicaciones distribuidas con soporte de red.
    • CES1.8 - Especificar, diseñar e implementar sistemas de control y de tiempo real.
  • CES2 - Valorar las necesidades del cliente y especificar los requisitos software para satisfacer estas necesidades, reconciliando objetivos en conflicto mediante la búsqueda de compromisos aceptables, dentro de las limitaciones derivadas del costo, del tiempo, de la existencia de sistemas ya desarrollados y de las propias organizaciones.
    • CES2.2 - Diseñar soluciones apropiadas en uno o más dominios de aplicación, utilizando métodos de ingeniería del software que integren aspectos éticos, sociales, legales y económicos.
  • CES3 - Identificar y analizar problemas, y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, de los modelos y de las técnicas actuales.
    • CES3.1 - Desarrollar servicios y aplicaciones multimedia.

Competencias Transversales

Sostenibilidad y compromiso social

  • G2 [Avaluable] - Conocer y comprender la complejidad de los fenómenos económicos y sociales típicos de la sociedad del bienestar. Ser capaz de analizar y valorar el impacto social y medioambiental
    • G2.3 - Tener en cuenta las dimensiones social, económica y ambiental, y el derecho a la privacidad a aplicar soluciones y llevar a cabo proyectos coherentes con el desarrollo humano y la sostenibilidad.

Objetivos

  1. Conocer el funcionamiento de un SO real, desde que arranca el ordenador y la inicialización del sistema, pasando por la gestión dinámica de recursos, hasta que se apaga el ordenador.
    Competencias relacionadas: CES1.4, CES3.1, CT6.3, CES1.8,
  2. Conocer los detalles de la implementación de algunos de los componentes básicos de un SO real: código de inicialización, código de gestión de memoria, código de gestión de E/S, código de gestión de los procesos y código de gestión de red.
    Competencias relacionadas: CES1.4, CES3.1, CT8.1, CT6.3, CT6.4, CT7.2, CES1.8, CT2.4,
  3. Entender la programación multihilo, las restricciones asociadas al correcto funcionamiento del acceso a memoria compartida y los mecanismos de exclusión mutua.
    Competencias relacionadas: CES1.4, CES3.1, CT7.1, CT7.2, CT7.3, G2.3, CT2.4,
    Subcompetences:
    • Identificar limitaciones de escalabilidad en la gestión de la información del sistema.
  4. Ser capaz de entender el impacto en la potencia y el consumo energético de la ejecución de funciones y / o aplicaciones teniendo en cuenta los componentes utilizados, por ejemplo: estructuras de datos, algoritmos, políticas y mecanismos, así como las técnicas de comunicación y sincronización basadas en bloqueo y esperas.
    Competencias relacionadas: CES2.2, CT8.1, CT7.1, CT7.2, CT8.4, G2.3, CES1.8,
  5. Conocer la legislación básica existente en cuanto a la protección de datos y propiedad intelectual.
    Competencias relacionadas: CT8.1, CT7.3, CT8.4, G2.3,
    Subcompetences:
    • Conocer las posibilidades de combinación de hardware y software propietario y libre y las consecuencias legales de desarrollo y modificación de código a partir de material ya existente.
    • Entender los problemas de responsabilidad legal relacionados con el mantenimiento de los datos y robustez del sistema. Conocer las posibilidades de combinación de hardware y software propietario y libre y las consecuencias legales de desarrollo y modificación de código a partir de material ya existente.
  6. Entender el impacto en eficiencia y rendimiento que puede causar la existencia de diferentes niveles de gestión de recursos.
    Competencias relacionadas: CES1.4, CES3.1, CT8.1, CT7.3, CES1.8, CT2.4,
    Subcompetences:
    • Conocer los mecanismos más populares de comunicación entre niveles.
  7. Conocer diferentes políticas de planificación de sistemas de propósito general, como Linux, y entender las implicaciones que puede tener para la aplicación el uso de una política determinada.
    Competencias relacionadas: CES1.4, CES2.2, CES3.1, CT8.1, CT6.3, CT7.3, G2.3, CES1.8,
    Subcompetences:
    • Detectar limitaciones de escalabilidad.
    • Detectar cuellos de botella y problemas de rendimiento en el uso de recursos distribuidos, como ficheros de BBDD o búsquedas de información.
  8. Entender los aspectos tecnológicos que impactan en los fenómenos económicos, sociales y ambientales.
    Competencias relacionadas: CES2.2, CT7.3, CT8.4, G2.3,
    Subcompetences:
    • Comprender el impacto energético asociado a diferentes plataformas, dependiendo del rendimiento
  9. Ser capaz de dividir la gestión recursos en capas, cuando se trabaja con middlewares, librerías o máquinas virtuales.
    Competencias relacionadas: CES2.2, CT8.1, CT6.4, CT7.2, CT7.3, G2.3, CT2.4,
    Subcompetences:
    • Seleccionar los parámetros del SO más adecuados en función de la plataforma a utilizar.
  10. Entender la asignación básica de recursos que hace el SO para que un programa o aplicación se pueda ejecutar y las repercusiones que puede tener en cuanto a rendimiento y uso eficiente de la energia.
    Competencias relacionadas: CES1.4, CES3.1, CT8.1, CT6.3, CT6.4, CT7.2, G2.3, CT2.4,

Contenidos

  1. Introducción
    Conceptos básicos y definición de SO. Estructura de un sistema operativo. Interfaz de usuario y gestión de recursos. Funcionalidades actuales básicas de un SO. Otros softwares de gestión de recursos: servidores y middlewares. Gestió de recursos de aplicaciones distribuidas: servicios remotos, concurrencia de servicios y datos. Sistemas heterogéneos
  2. Puesta en marcha e interficies de comunicación.
    Boot del sistema y definición de proceso: estructuras básicas del SO. Modos de ejecución. Interrupciones.Llamadas al sistema y paso de mensajes.
  3. Procesos
    Definición de proceso y contexto: estructuras básicas para mantener el contexto de un proceso. Cambio de contexto. Planificación de procesos: concurrencia y sincronización. Políticas de planificación: niveles de planificación. Contextos de diferente peso: procesos, threads. Gestión de concurrencia y paralelismo en middlewares y servidores.
  4. Memoria
    Procesos y espacios de direcciones: protección y compartición de espacios. Soporte del hardware: Memoria virtual, TLB y caches. Modos de acceso: datos y código, niveles de privilegio. Objetos de memoria y gestión desde diferentes niveles (pools de objetos, garbage collector). Librerías estáticas y librerías dinámicas.
  5. E/S
    Principio de independencia de la E/S. Llamadas al sistema y librerías. Drivers, descriptores y estructuras relacionadas. Dispositivos virtuales y físicos. E/S síncrona i asíncrona. Compartición y modos de acceso: coherencia y distribución de datos. E/S multimedia.
  6. Sistemas de Ficheros
    Directorio y gestión del espacio de nombres. Operaciones con ficheros. Gestión concurrente de datos. Replicación. Sistemas de ficheros virtuales. Gestió i migració de dades i binaris. Execució remota i bytecodes.
  7. Protección y seguridad.
    Definición de protección. Mecanismos d eprotección. Autorización, control de acceso e integridad del sistema. Capabilities. Virus, gusanos y malware.

Actividades

Actividad Acto evaluativo


Introducción al código del SO: estructuras de datos y acceso a los servicios

A partir de la introducción de la asignatura, habrá una interacción entre los estudiantes para recordar conceptos ya trabajados en cursos anteriores y completar entre todos las nomenclaturas básicas. Incluye la búsqueda de información y propuesta de pautas para evaluar la competencia de sostenibilidad a partir de la definición de competencias y del contenido del curso.
Objetivos: 1 2 8 5 4
Contenidos:
Teoría
2h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Lab 1: mecanismos de comunicación con el SO y objetos de primera clase: procesos

A partir de un SO reducido (ZeOS), el estudiante trabajará y completase el código de gestión de excepciones e interrupciones, hará una sencilla llamada a sistema y completase información básica que el SO necesita de los programas que se están ejecutando.
Objetivos: 2 9 4
Teoría
0h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Información y gestión de recursos de las entidades de ejecución (procesos, threads,...)

Ver cómo afectan desde las estructuras de datos y la asignación de recursos, el trabajar con procesos, threads u otros tipos de objetos que representen al programa en ejecución y los recursos y políticas asignadas por el SO.
Objetivos: 6 3 9 4 7
Teoría
2h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7h

Lab 2: Mecanismos y políticas de planificación de procesos

A partir de un mecanismo de colas y una política RR, se implementarán diferentes políticas con preempción y prioridades. El estudiante deberá evaluar cuáles son las más apropiadas según el tipo de trabajo (interactivo, cálculo, sincronización,...)
Objetivos: 2 6 3 9
Teoría
0h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Interacción en la gestión de memoria con diversos niveles: middlewares y máquinas virtuales.

A partir de los conocimientos del uso y asignación de memoria que hace el sistema a los programas en ejecución, ver las alternativas y diferentes estrategias de asignación, reserva y mapeo, estática y dinámicamente, también implícita o explícitamente, con llamadas al sistema. Se trabajará la evaluación de rendimiento y las consecuencias de utilizar diferentes políticas de asignación de recursos. Además se verán las implicaciones que tiene la gestión de recursos del propio middleware.
Objetivos: 1 2 6 9 5
Contenidos:
Teoría
2h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
9h

workshop on scheduling policies

Presentación de un trabajo en grupo que cubre los temas dados hasta el momento
Objetivos: 1 2 6 8 10 4
Semana: 6
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
5h

Lab 3: Utilización de herramientas para extraer información sobre el uso de los recursos del sistema

Conocer y usar las herramientas básicas del sistema y las estructuras de datos relacionadas con información del sistema para mejorar el uso que hacen las aplicaciones de los recursos básicos: memoria, cpu, discos,... Se incluyen herramientas para evaluar el gasto energético como PowerTOP
Objetivos: 2 6 10
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

E/S

A partir de la independencia y uniformidad de las operaciones de E/S, profundizar en la virtualización de dispositivos (canales y ports), nivel de abstracción, gestión de diferentes características de compartición y distribución,...
Objetivos: 1 2 9 4
Contenidos:
Teoría
2h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7h

Sistema de ficheros

A partir de los conocimientos ya adquiridos en otras asignaturas y el refuerzo de las clases de teoría, profundizar en las operaciones básicas de ficheros y los temas de compartición, replicación, etc. de datos en situaciones actuales como por ejemplo el trabajo con BBDD y/o búsquedas distribuidas.
Objetivos: 2 10 9 4
Contenidos:
Teoría
2h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
5h

Lab 4: Gestión de E/S en aplicaciones distribuidas: Paso de mensajes

Caracterizar diferentes modos de acceso a datos dependiendo del tipo de aplicación. Conocer herramientas básicas para evaluar y caracterizar el comportamiento y rendimiento de los programas. A partir de pequeñs benchmarks sobre diferentes tamaños de datos de entrada y resultados, ver el comportamiento de diferentes aplicaciones distribuidas (basadas en web, búsquedas, BBDD, ...).
Objetivos: 2 6 9 5 4
Contenidos:
Teoría
0h
Problemas
2h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Protección y seguridad

A partir de la información facilitada se resolverán casos de privacidad y se propondrán herramientas y estructuras que garanticen la seguridad del sistema y la privacidad de los objetos de usuario. Se extraerán conclusiones y se hará un replanteamiento (si es necesario) sobre las pautas y consejos de sostenibilidad en este ámbito.
Objetivos: 8 10 5
Teoría
1h
Problemas
4h
Laboratorio
1h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Presentación final


Objetivos: 3 10 9 5 4
Semana: 14
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7h

Sesión de resumen sobre el paralelismo de las aplicaciones

Un articulo o una charla técnica en video servirán para compartir lo aprendido durante el curso en materia de paralelismo y su aplicación a casos concretos en aplicaciones o entornos distribuidos.

Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
6h
Aprendizaje autónomo
0h

Metodología docente

La asignatura está concebida sobre el trabajo práctico que el alumno debe desarrollar en las clases de problemas, apoyada sobre una base teórica y respaldada por las pruebas realizadas en el laboratorio.

La base teórica se desarrollará en clases organizadas y dirigidas por el profesor y con la participación activa del alumno. A partir de referencias bibliográficas y documentación que el profesor le facilitará, los estudiantes irán profundizando en el uso y la gestión de recursos del sistema que las aplicaciones distribuidas y / o basadas en distribución de datos necesitan para trabajar eficientemente. Para ello eligirán un proyecto al inicio de curso que irán desarrollando en las sucesivas semanas.

Los ejercicios en el laboratorio servirán como base de pruebas para confirmar o modificar las estrategias y propuestas de los proyectos en clase. Se basarán en un guión que el estudiante puede utilizar como soporte.

Al final del curso y en grupos de 4-6 estudiantes presentarán el caso práctico desarrollado.

Método de evaluación

Para evaluar la asignatura se tienen en cuenta las siguientes calificaciones:

a. Teoría (NT), que se obtendrá de tres cuestionarios recogidos en clase de problemas (uno cada 5 semanas de curso, aprox.) y un caso práctico presentado a medio curso (Midterm) como acto evaluativo.

b. Laboratorio (NL), que es la evaluación continua del trabajo de las prácticas de laboratorio. El laboratorio sirve como soporte a las propuestas de la clase de problemas, para entender mejor el funcionamiento y justificar costes.

c. Presentación (Final). En grupos de 3-4 estudiantes presentarán a final de curso un trabajo en formato poster, artículo o presentación oral, donde se muestre la experiencia adquirida durante el curso.

d. Evaluación de la Competencia transversal: Para cada tema de la asignatura habrá una pregunta basada en criterios de sostenibilidad y compromiso social. Igualmente en cada laboratorio habrá un punto basado en la competencia transversal. El peso total será un 10% de la nota final: un 5% se evaluará en teoría y un 5% en el laboratorio.

Sólo en el caso de no asistir a ninguno de los actos evaluatorios la nota final de la asignatura será "No Presentado".

La nota final se obtendrá a partir de las siguientes fórmulas:

NT = 0,5 (1/3 * [(Cuestion1) + ... + (Cuestion3)] ) + 0,5 * Midterm
NL = 1/num.pract * [(NotaPr 1) + ... + (NotaPr n)]

NACTA = (0,10 * NL + 0,45 * NT + 0,45 * Final)

Bibliografía

Básica:

Capacidades previas

El estudiante debe tener las capacidades técnicas que le otorgan las asignaturas cursadas previamente además de un nivel de inglés técnico fluido para leer y entender documentación, así como para poder comunicarse oralmente.
Las capacidades técnicas las podríamos resumir en:
-Sistemas operativos: Conocimiento de los conceptos básicos de un sistema operativo unido a la programación de aplicaciones utilizando la interfaz genérica de llamadas al sistema impartido en Sistemas Operativos.
- Estructura de Computadores: Conocimiento de los elementos principales de un ordenador, relación de estos elementos entre sí, representación interna de datos y conocimientos de lenguaje máquina.
-Programación: Capacidad de hacer programas complejos y modulares desde cero que incluyan definición de tipo de datos, referencias con punteros y código en ensamblador. Compilación y montaje de ficheros ejecutables.
-Paralelismo: entender la distribución de tareas para conseguir un objetivo. Trabajar concurrentemente y sincronizándose en puntos concretos. Proteger los datos y la fiabilidad de resultados cuando se accede desde distintas tareas.