Fichas de asignaturas 2016-17
![]() |
PROGRAMACIÓN CONCURRENTE Y DE TIEMPO REAL |
![]() ![]() ![]() |
|
Asignatura |
![]() |
| |
Profesorado |
![]() |
| |
Competencias |
![]() |
| |
Resultados Aprendizaje |
![]() |
| |
Actividades Formativas |
![]() |
| |
Sistemas de Evaluación |
![]() |
| |
Contenidos |
![]() |
| |
Bibliografía |
![]() |
Código | Nombre | |||
Asignatura | 21714020 | PROGRAMACIÓN CONCURRENTE Y DE TIEMPO REAL | Créditos Teóricos | 3 |
Título | 21714 | GRADO EN INGENIERÍA INFORMÁTICA | Créditos Prácticos | 4.5 |
Curso | 2 | Tipo | Obligatoria | |
Créd. ECTS | 6 | |||
Departamento | C137 | INGENIERÍA INFORMÁTICA |
Requisitos previos
El alumno debe tener cursadas y aprobadas las asignaturas de primer curso "Introducción a la Programación" y "Metodología de la Programación". Se deja constancia explícita de que sin las habilidades mínimas de programación que ambas proporcionan una vez superadas, no es factible enfrentarse con garantías al estudio de la concurrencia.
Recomendaciones
a)Sería de desear que el alumno dispusiese de un dominio razonable del castellano, tanto a nivel de expresión oral como escrita, así como del marco cognitivo-intelectivo y metalingüístico necesario para una correcta lectura, procesamiento y asimilación de los contenidos que la bibliografía de la asignatura exige, al ser estos muchos y variados. b)Igualmente deseable sería el dominio de las reglas elementales de la aritmética básica, y cierta cultura general, obtenida a través de la lectura de libros de toda clase, de la prensa escrita, o de ambas. c) No resultará ocioso el adecuado conocimiento y manejo de las reglas de urbanidad, para el correcto trato tanto a los compañeros como al profesor. d)Se recomienda al alumno entregarse al estudio con seriedad, rigor, continuidad e interés, como si se tuviese una inquebrantable voluntad intelectual y académica. e)Más vale un mal libro que muchos buenos apuntes: por tanto, para cada tema concreto del curso se le propondrán como material de revisión/trabajo/estudio un mínimo de dos y un máximo de cuatro capítulos de referencias concretas (en inglés, claro está). Ocasionalmente se le proporcionarán unos apuntes (en castellano), que como mucho debería usar como material de apoyo, pero nunca como texto base. Se deja constancia clara y explícita de que un correcto estudio y preparación de la asignatura requerirá la lectura íntegra del material propuesto, y que en modo alguno limitar la preparación al estudio aislado de los apuntes garantiza superar la misma, y mucho menos garantiza la adquisición de los conocimientos deseados. f)La copia de apuntes en clase ES UNA PÉRDIDA DE TIEMPO: por tanto, los profesores harán lo posible para que no tenga que copiar apuntes en clase, proporcionándole en la página de la asignatura con carácter previo a su explicación todo el material necesario para la preparación de la misma. En consecuencia, si copia apuntes, es porque es usted un copiador compulsivo; pero sepa que distraen su atención y suelen ser fuente de errores en el estudio posterior, ya que lo que se copia mal se estudia peor, para el hipotético caso en que el alumno se apreste a estudiar. g)El alumno debe saber que una clase comienza antes de ser explicada y continua tras ser explicada: o lo que es lo mismo, llegar a clase a ver qué nos cuenta hoy este buen señor es un error. La mecánica de trabajo que les recomiendo a lo largo del curso para preparar una clase debe seguir las siguientes fases: PRIMERA: Lectura y revisión previa de los materiales indicados en el cronograma del curso para esa clase en concreto. Semanalmente se establecerá el conjunto de tópicos a impartir del temario oficial, el material de lectura para esa clase en concreto, los problemas recomendados para ejercitar los contenidos teóricos explicados, y en ocasiones alguna tarea adicional de interés. SEGUNDA:. Asistencia a clase. Dado que no necesita tomar apuntes, preste atención a los desarrollos y explicaciones del profesor, y relaciónelos con lo previamente leído por usted. Tome notas de la dudas o discrepancias que le surjan, para su posterior discusión en la propia clase o en una tutoría individualizada. El alumno debe saber además que se encuentra matriculado en una universidad pública presencial, y que la asistencia a clase forma parte de sus obligaciones como discente. TERCERA: Tras la clase, repase los contenidos de la misma, entiéndalos y aclare con el profesor los conceptos que no estén claros. Póngalos en práctica con los problemas de la relación que corresponda, y conéctelos con los contenidos a desarrollar en la próxima clase. Es decir, vuelva al primer apartado. h)Una asignatura NO se prepara en una semana. NO deje la preparación de los trabajos a entregar ni la del examen final para el último momento. Probablemente será inútil. Utilice el cronograma de la asignatura para planificar su esfuerzo, o pida ayuda a su profesor para planificar el tiempo y su preparación de cara al examen final con antelación. Si no lo hace, el único perjudicado será usted. i) Saber una asignatura NO es saber unos apuntes. Nunca lo ha sido. Unos apuntes son, probablemente y en el mejor de los casos, un resumen de lo explicado por elprofesor en clase, lo cual a su vez será un resumen de lo revisado por el profesor en la bibliografía específica. Por tanto, olvide aquello de "me sé los apuntes pero me han suspendido", o "esto no estaba en los apuntes, sino en tal libro" o "este problema o ejercicio no se parece a ninguno que hayamos hecho en clase". Si usted SABE la materia, estará preparado para aplicarla a situaciones nuevas y desconocidas. Y ello pasa por haber manejado bibliografía tal y cómo se indica en el apartado b). Saber los apuntes es una condición necesaria para aprobar, pero no suficiente. Por tanto, si usted sabe sus apuntes, NO SABE la materia. Y recuerde que SABER no es MEMORIZAR. j)La revisión de calificaciones NO es una subasta. Es un medio que la Universidad pone a su disposición para que sepa DÓNDE, CÓMO Y POR QUÉ ha fallado, y proceda a PLANIFICAR con su profesor la fase posterior de estudio orientada a subsanar las lagunas que sus conocimientos tengan. Por tanto, por favor, no acuda a revisión con la intención de discutir sobre: Los criterios de corrección, ya que estos los define su profesor, y no es ni puede ser algo sujeto a negociación. La distribución de la puntuación entre los diferentes enunciados de los ejercicios del examen, ya que su profesor sabe qué es más importante que usted haya aprendido, y cómo evaluar ese aprendizaje, y ajustará esa distribución en consecuencia. El que considere que esa distribución le perjudica es un error, ya que habrá sido aplicada por igual a sus compañeros, y además lo que hará será demostrar que no tiene claros aquellos conceptos que son más relevantes. Lo parecido o distinto de los ejercicios del examen a los realizados en clase. Un examen no tiene por qué parecerse a lo ya ejercitado. Los ejercicios de clase le CAPACITAN para dominar los conceptos. Los exámenes DEMUESTRAN que usted sabe aplicar esos conceptos aprendidos a situaciones novedosas o simplemente diferentes a las estudiadas. La verificación de si determinado ejercicio estaba o no en sus apuntes La simple pataleta por no haber superado la asignatura. No entienda un suspenso más que con la siguiente lectura: el trabajo realizado no ha sido válido, no ha sido suficiente, o ambas cosas. Debe trabajar más. Cualquier otra interpretación por su parte es un error. k)Su obligación es estar informado de las circunstancias de la asignatura. Visite con asiduidad la sección de noticias de la plataforma virtual de la asignatura y en caso de duda consulte por e-mail a su profesor. No utilice argumentos de la clase "no sabía nada..." o "no me he enterado de que.." para excusar un fallo. Recuerde que ES su obligación y su responsabilidad estar enterado. l)Utilice la tutoría. Es el único medio por el cual el profesor puede ofrecerle una enseñanza de carácter individualizado. Por tanto, aproveche la tutoría, en sus versiones presencial, electrónica, o de cualquier otro tipo boloñés. Y hágalo con frecuencia: siga el método de preparación de las clases ya descrito, y visite a su profesor cada vez que tenga dudas. Con carácter ordinario, un mínimo de una visita al profesor cada tres semanas debería ser normal para usted. Si hay dificultades, tan a menudo como necesite. m)NO se quede con una duda. Es muy habitual entre nuestros alumnos que cuando les surge una duda se queden con ella hasta el mismo momento del examen. Luego, durante la revisión reconocen: "sí, esto no me quedó claro, pero..." EVITE estos comportamientos. En una asignatura como esta, el progreso con garantías hacia nuevos contenidos implica haber asimilado correctamente los contenidos previos. n)El profesor es su juez. Su labor en el momento de evaluarle se limitará a juzgar la cantidad y calidad del esfuerzo realizado por usted. Cualquier otro aspecto es irrelevante. ñ)Acuda a clase y participe en ella. Plantee sus dudas, y fomente la discusión entre sus compañeros y con el profesor. Ello contribuirá de forma positiva a su formación, y hará la dinámica académica más rica. Además, contribuirá positivamente a su crecimiento personal. o)Sea consciente de sus derechos como alumno, pero también de las obligaciones que el serlo conlleva. En particular, trate de seguir en todo momento la línea de conducta que el código ético de la Universidad (Código Peñalver) le aconseja.
Profesorado
Competencias
Se relacionan aquí las competencias de la materia/módulo o título al que pertenece la asignatura, entre las que el profesorado podrá indicar las relacionadas con la asignatura.
Identificador | Competencia | Tipo |
C14 | Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real. | ESPECÍFICA |
Resultados Aprendizaje
Identificador | Resultado |
R01 | Capacidad de identificar la concurrencia en un problema y de descomponer el mismo en una serie de tareas concurrentes cooperativas debidamente sincronizadas. |
R04 | Capacidad para desarrollar el intercambio de mensajes entre objetos distribuidos bajo algún middleware, o bien mediante algún API de paso de mensajes. |
R03 | Capacidad para desarrollar programas concurrentes en algún lenguaje de programación que dé soporte a la concurrencia, con adecuado control de la exclusión mutua y la sincronización que sea necesaria, en base a las primitivas de control de la concurrencia que el lenguaje proporcione. Capacidad para explotar procesadores multicore. |
R05 | Conocimiento básico del concepto de aplicación de tiempo real, y de algún API a nivel puramente descriptivo- que proporcione soporte al mismo en el marco de programación general y bajo la misma filosofía utilizada para la consecución de los anteriores resultados |
R02 | Conocimiento de las principales primitivas teóricas de control de la exclusión mutua y la sincronización entre entidades concurrentes: variables comunes, cerrojos, semáforos, monitores y memoria transaccional |
Actividades formativas
Actividad | Detalle | Horas | Grupo | Competencias a desarrollar |
01. Teoría | Exposición de los contenidos de la materia con ayuda de diapositivas, junto con la propuesta de ejercicios de afianzamiento desarrollados en aula. Descarga desde el Campus Virtual y ejecución de códigos de prueba y desarrollo de soluciones a ejercicios de baja complejidad. |
24 | C14 | |
02. Prácticas, seminarios y problemas | En este grupo de actividad formativa se realizarán las siguientes actividades: SEMINARIO 1: Concurrencia con el Lenguaje C++11. SEMINARIO 2: Introducción a la Programación Concurrente Multi-core con GPUs. SEMINARIO 3: Memoria Transaccional Software sobre la JVM: Clojure. SEMINARIO 4: Concurrencia con el Lenguaje C#. RESOLUCIÓN DE PROBLEMAS: ejercicios de concurrencia y paralelismo en java de mediana complejidad, y resolución de problemas de exclusión mutua y sincronización con primitivas de nivel teórico. |
12 | C14 | |
03. Prácticas de informática | El alumno resolverá en las clases de prácticas informáticas un conjunto de ejercicios prácticos de programación de complejidad media-alta con la asistencia y el asesoramiento del profesor. Tales ejercicios configurarán una asignación de prácticas, siendo su propuesta de carácter semanal o bisemanal, y su confección y entrega obligatoria para el alumno. |
24 | C14 | |
10. Actividades formativas no presenciales | a) Lectura cuidadosa y razonada de las referencias bibliográficas indicadas por los profesores. b) Resolución de los ejercicios y/o problemas de afianzamiento de contenidos propuestos por los profesores. c) Estudio intenso y continuado. |
86 | C14 | |
12. Actividades de evaluación | Exámenes Finales Teórico y Práctico |
4 | C14 |
Evaluación
Criterios Generales de Evaluación
APARTADO PRIMERO: CRITERIOS DE CORRECCIÓN Y DESARROLLO DE EXÁMENES A) DEL EXAMEN TEÓRICO -El examen teórico será escrito, con una duración mínima de 60 minutos y máxima de 120 minutos. Dicho examen podrá incluir preguntas tipo test de repuesta simple o múltiple, preguntas de desarrollo corto, ejercicios o problemas. -El examen teórico se calificará de 0 a 10 puntos. Se obtiene Aprobado en el examen teórico con una calificación igual o superior a cinco puntos. -Una cuestión tipo test, corta, ejercicio o problema simple, se consideran correctos únicamente si la solución final que se proporciona es completamente correcta. En otro caso se considera incorrecta y no puntúa. -Una cuestión tipo test, corta, ejercicio o problema de múltiples apartados se consideran correctos si todos los apartados que la conforman son correctos. En cualquier otro caso es incorrecta y no puntúa. B) DEL EXAMEN PRÁCTICO -Se realizará en ordenador con una duración mínima de 120 minutos y máxima de 180 minutos. El alumno dará solución mediante algún lenguaje de programación que dé soporte a la concurrencia a los enunciados que se le planteen. -El examen práctico se calificará de 0 a 10 puntos. Se obtiene Aprobado en el examen práctico con una calificación igual o superior a cinco puntos. -Las condiciones que una solución a un enunciado de examen práctico debe cumplir para considerarse correcta son: a) Los ficheros subidos a través del Campus Virtual que conforman el examen práctico se ajustan al número, formato y nomenclatura de nombres explicitados por el profesor en el documento de examen. b) El contenido de los ficheros es el especificado por el profesor en el documento de examen en orden a solucionar el enunciado en cuestión. c) Los programas elaborados por el alumno, se pueden abrir y procesar con el compilador del lenguaje utilizado, y realizan un procesamiento técnicamente correcto,según el enunciado de que se trate. Se entiende por un procesamiento técnicamente correcto a aquél que corresponde a un código de programa que compila correctamente sin errores, cuya semántica da soporte a la solución pedida, y que ha sido escrito de acuerdo a las convenciones de estilo y eficiencia habituales en programación. C) DE LAS APORTACIONES AL FORO, GLOSARIO Y WIKI DEL CAMPUS VIRTUAL -Tendrán carácter individual y podrán realizarse durante el periodo de clases de la asignatura, pudiendo incluir definiciones, tópicos concretos de la asignatura, o desarrollos completos de conceptos teóricos o prácticos. Se podrán publicar en los foros, glosario o wiki del campus virtual de la asignatura. -Su validación a efectos de ser puntuados exigirá tener un contenido mínimo, ser técnicamente correctas, y describir con propiedad y un uso correcto del idioma y en su caso- de la notación, el elemento de que se trate. Cada aportación correcta sumará un máximo de 1 punto.El alumno podrá realizar tantas aportaciones como estime oportuno, si bien el límite práctico de puntuación a obtener en este apartado es de 10 puntos. D)DE LAS ASIGNACIONES DE PRÁCTICAS Semanalmente se propondrá al alumno una asignación de prácticas, que este deberá resolver y entregar a través del Campus Virtual. Los criterios de corrección (en su caso) de las mismas, y dada su naturaleza práctica, serán los mismos que los descritos en el apartado B) anterior para los exámenes prácticos. Estas asignaciones podrán servir para compensar la calificación del examen final de prácticas, siempre que se cumplan los criterios descritos en el punto c) del APARTADO SEGUNDO. APARTADO SEGUNDO: CRITERIOS DE EVALUACIÓN a) La calificación final de la asignatura vendrá determinada por la calificación obtenida en el examen final teórico ponderada al 40%, sumada a la calificación obtenida mediante las aportaciones a foros, glosario y wiki, ponderada al 10% y sumada a la calificación obtenida en el examen final práctico ponderada al 50%,siempre que se cumplan todos los criterios siguientes: -se haya obtenido al menos cinco puntos en el examen final teórico. -se haya obtenido al menos cinco puntos en el examen final de prácticas. b) El examen final práctico no será corregido si no se supera el examen final teórico, ni tampoco las aportaciones evaluables en foros, glosario y wiki del campus virtual. c) Aquél alumno que obtenga menos de cinco puntos (5.0) en el examen final práctico pero obtenga un mínimo de tres puntos y medio (3.5), podrá compensar la diferencia y superarlo mediante las asignaciones de prácticas que se habrán ido entregando durante el curso, siempre que se cumplan los siguientes criterios: el 100% de las asignaciones han sido entregadas, al menos el 70% de las mismas están bien resueltas y el alumno ha acreditado una asistencia a las clases prácticas de al menos el 80% de las horas de clase práctica impartidas. La valoración global de las asignaciones será por tanto, en su caso, de hasta un máximo de 1.5 puntos si se entregan en la convocatoria de Febrero, reduciéndose a 0.75 puntos si se entregan en las de Junio o Septiembre en los respectivos plazos extraordinarios de entrega. d)Exclusivamente para las convocatorias de Junio y Septiembre, se habilitará un periodo de entrega de asignaciones prácticas atrasadas para aquellos alumnos que no habiendo cumplido con el calendario de entregas, deseen realizar las mismas previamente a las citadas convocatorias, siendo la reducción de su valoración global, en su caso, la indicada en la letra c) anterior. El alumno debe conocer además que la evaluación se regirá por las siguientes normas adicionales: 1)En caso de no poder entregar una asignación de prácticas por enfermedad o causa de fuerza mayor documentalmente justificadas, el profesor indicará al alumno nueva fecha de entrega. Como se ha indicado, para las convocatorias de Junio y Septiembre, se habilitará un período de entrega de prácticas atrasadas, para aquellos alumnos que deseen acogerse al mismo. No obstante lo anterior, el profesor podrá establece plazos de entrega extraordinarios si lo considera oportuno. 2) Los exámenes finales de Febrero, Junio y Septiembre se regirán por los Estatutos de la Universidad de Cádiz y normativa derivada en cuanto a número de llamamientos y días de revisión de calificaciones se refiere. 3) A toda convocatoria se acude con el temario completo (tanto teórico como práctico). No se reservarán calificaciones de partes de la asignatura para convocatorias sucesivas. 4) Para lo no contemplado en estas notas se estará a lo dispuesto en el Reglamento de Régimen Académico y Evaluación del Alumnado de la Universidad de Cádiz.
Procedimiento de Evaluación
Tarea/Actividades | Medios, Técnicas e Instrumentos | Evaluador/es | Competencias a evaluar |
Aportaciones a los foros, glosario y wiki del Campus Virtual de la asignatura | MEDIOS: Soporte proporcionado por el Campus Virtual para la generación y distribución de contenidos elaborados por los alumnos. En concreto se utilizarán uno o varios de los siguiente medios: foro, glosario y wiki. TÉCNICA: Desarrollo libre y abierto de contenidos por el alunmno. INSTRUMENTO DE EVALUACIÓN: Revisión por el profesor de las aportaciones, que serán calificadas con hasta un máximo de un punto en función de su extensión y calidad. |
|
|
Examen final de Prácticas | MEDIOS: Computadoras personales, Plataforma Virtual Moodle y software de propósito específico para el desarrollo de la Programación Concurrente y de Tiempo Real. TÉCNICAS: Verificación de la corrección sintática, semántica y de estilo de los programas desarrollados por el alumno. INSTRUMENTOS DE EVALUACIÓN: Examen de prácticas incluyendo ejercicios y/o problemas de programación. El alumno debe escribir y depurar código de programa que dé solución a los ejercicios/problemas planteados, y que deberá entregar mediante el Campus Virtual al finalizar el tiempo asignado al examen práctico. El código deberá compilar correctamente, realizar un procesamiento técnicamente correcto, y haber sido escrito de acuerdo a las normas de estilo y eficiencia habituales en programación. |
|
C14 |
Examen final teórico | MEDIOS: Expresión Escrita. TÉCNICA: Verificación de la corrección de los enunciados plantedos. INSTRUMENTOS DE EVALUACIÓN: Exámenes escritos que pueden incluir algunos de los siguientes elementos: preguntas tipo test de respuesta simple o múltiple, cuestiones de desarrollo corto, demostraciones, ejercicios y problemas. |
|
C14 |
Procedimiento de calificación
La calificación de la asignatura vendrá determinada de acuerdo a la siguiente expresión: CALIFICACIÓN=(0.4)*NOTA EXAMEN TEÓRICO+(0.1)*NOTA APORTACIONES AL CAMPUS VIRTUAL+(0.5)*NOTA EXAMEN DE PRÁCTICAS NOTA: Dicha ecuación será aplicable única y exclusivamente en el caso de que el alumno haya obtenido una NOTA IGUAL O SUPERIOR A CINCO PUNTOS EN EL EXAMEN TEÓRICO y EN EL EXAMEN DE PRÁCTICAS. Si uno de los dos exámenes no se supera, la calificación final será la obtenida en el examen no superado.
Descripcion de los Contenidos
Contenido | Competencias relacionadas | Resultados de aprendizaje relacionados |
SEMINARIOS: SEMINARIO 1: Concurrencia con el Lenguaje C++11. SEMINARIO 2: Introducción a la Programación Concurrente Multi-core con GPUs. SEMINARIO 3: Memoria Transaccional Software sobre la JVM: Clojure. SEMINARIO 4: Concurrencia con el Lenguaje C#. |
C14 | R01 R03 R02 |
Tema 1: PRINCIPIOS GENERALES DE LA CONCURRENCIA La era de los procesadores multi-core y many-core (Intel Xeon-Phi, Kepler de nVidia y Cell de IBM). Concurrencia versus paralelismo. Rendimiento. Speed up. Recursos compartidos y su problemática: entrelazado de instrucciones, condiciones de concurso, secciones críticas y exclusión mutua. Corrección en Sistemas Concurrentes. Lenguajes concurrentes. Creación de Entidades Concurrentes. La Taxonomía de Flynn. Multiprocesamiento Simétrico. Conceptos Elementales de Tiempo Real |
C14 | R01 R02 |
TEMA 2: FUNDAMENTOS DE JAVA PARA LA CONCURRENCIA La JVM. Tipos primitivos, estructuras de control y estructura básica de un programa. Compilación y ejecución. Uso del API en línea. Documentación del código y generación automatizada de API: el binario javadoc. Wrappers. Clases, objetos y referencias. Llamada a métodos y paso de argumentos. Diseño de clases. Entrada/salida de carácter básico: la clase Scanner y otras. Leyendo argumentos desde el terminal. Excepciones: concepto y utilidad. Herencia, sobreescritura y uso de interfaces. Principios del uso de la biblioteca de contenedores. |
C14 | R01 R03 |
TEMA 3: CREACIÓN Y CONTROL DE THREADS. Creación de threads mediante herencia de la clase Thread e implementación de la interfaz Runnable. Modelo básico de co-rutina start()-join(). Gestión del ciclo de vida de un hilo: métodos sleep() y yield(). Gestión de ciclo con métodos derogados de control, y por qué están derogados. API de control de prioridad; los métodos getPriority() y setPriority(). Mapping prioridades JVM a Windows, Linux y Solaris. Por qué no es posible planificar con prioridades. Ejecutando tareas de forma asíncrona: las interfaces Callable y Future. Delegando el ciclo de vida de los threads: ejecutores y pool de threads. Ejecutores predefinidos: SingleThreadPool, FixedThreadPool y CachedThreadPool. Ejecutores altamente configurables por el programador: la clase ThreadPoolExecutor. Cómo dimensionar un pool de threads según el número de núcleos de la máquina y la tipología del problema que se tiene que resolver. Pools de threads y mejora del rendimiento en problemas de cálculo masivo y con latencia de entrada/salida grande: la ecuación de Subramanian, el coeficiente de bloqueo y cómo emplear ambos en la práctica. Otras ecuaciones de balanceado de carga. Cuándo y dónde utilizar un pool de threads: servidores, intefaces de usuario, etc. |
C14 | R04 |
TEMA 4: MODELOS TEÓRICOS DE CONTROL DE LA CONCURRENCIA Algoritmos de control con variables comunes. Semáforos. Regiones Críticas. Monitores: concepto, variables de condición, políticas de señalización. Disponibilidad de primitivas equivalentes en Java: bloques y métodos synchonized, clase java.util.concurrent.Semaphore y monitores utilizando cerrojos ReentrantLock y Condition. Disponibilidad de primitivas equivalentes en C++11: las clases mutex y condition_variable. |
C14 | R05 |
TEMA 5: CONTROL DE LA CONCURRENCIA EN JAVA CON API ESTÁNDAR Bloques de código y métodos synchronized. Protocolos de control de la exclusión mutua entre hilos utilizando unos y otros. Reentrancia. Interbloqueos, y lo fácilmente que se provocan. Sincronización entre hilos: los métodos de la clase Object wait(), notify() y notifyAll(). El wait-set: necesidad y funcionamiento instrínseco. Limitaciones del modelo de sincronización y necesidad del uso de condiciones de guarda. Protocolo de diseño de monitores en Java utilizando el API estándar, métodos sincronizados y condiciones de guarda. |
C14 | R03 R02 |
TEMA 6: CONTROL DE LA CONCURRENCIA EN JAVA CON API DE ALTO NIVEL Familia de objetos con acceso atómico a través del API: paquete java.util.concurrent.atomic. Uso de la clase Semaphore: métodos acquire() y release(), protocolos de control de exclusión mutua y de sincronización con objetos de clase Semaphore. Citando a todos los hilos en un punto: clase CyclicBarrier y protocolo de barrera. Ajustando la granularidad de la sección crítica según convenga: la clase ReentrantLock; API, protocolo de control de exclusión mutua y sincronización con cerrojos ReentrantLock. Obteniendo variables de condición sobre un cerrojo: la interfaz Condition, API y uso. Protocolo de diseño de monitores en Java utilizando cerrojos de clase ReentranLock y objetos Condition. Otros cerrojos disponibles en el API de alto nivel. La vida es bella: utilizando clases contenedoras autosincronizadas. Novedades introducidas por Java 8 en el API de concurrencia de alto nivel. |
C14 | R03 R02 |
TEMA 7: PASO DE MENSAJES EN JAVA CON RMI El modelo de paso de mensajes: necesidad y utilidad. RMI en Java. Modelando los objetos remotos: la interfaz Remote y su implementación. Generando resguardos: el precompilador rmic. ¿Y si no generamos resguardos? Descarga dinámica de resguardos y generación automática de resguardos. El lado del servidor: la clase Namig. Activando un servicio de nombres donde registrar objetos servidores: el binario del jdk rmiregistry. Registrando un servicio: métodos bind() y rebind(). El cliente: protocolo de activación, localización del servicio de nombres; obteniendo una referencia al objeto remoto con el método lookup(). Transfiriendo objetos complejos: la interfaz Serializable. Gestionando la seguridad: clase RmiSecurityManager y herramienta policytool para diseño de políticas de seguridad. Mejorando el modelo: clientes con callback. Limitaciones del modelo. |
C14 | R04 |
TEMA 8: LA ESPECIFICACIÓN JRT Principios elementales de un sistema RT. Por qué la especificación de Java Estándar no basta para hacer tiempo real. La especificación JRT. Nuevos tipos de memoria. Un modelo de planificación expulsivo, con 28 niveles de prioridad, y que resuelve las inversiones de prioridad. Modelando los objetos que se ejecutan: la interfaz Schedulable. Hilos RealTimeThread y NoHeapRealTimeThread. Cómo planificar esos hilos: métricas de prioridad primara y secundaria. Planificadores predefinidos: PriorityScheduler. Planificadores propios mejorados. Gestión de Enventos Asíncronos. |
C14 | R05 |
TEMARIO DE PRÁCTICAS: El alumno desarrollará entre diez y doce asignaciones de carácter semanal o bisemanal, en las que dará soluciones a las cuestiones planteadas por el profesor en el documento de asignación. En las clase prácticas se proprorcionará mediante diapositivas o pizarra el soporte conceptual y técnico necesario para que al alumno afronte la asignación con garantías. Igualmente se pondrá a disposición de los alumnos,en aquellas asignaciones donde sea necesario, una carpeta en el Campus Virtual con código que dé soporte al desarrollo de la asignación. Se pondrá especial atención en el desarrollo de soluciones de múltiples hilos sobre arquitecturas multicore, y en el análisis del rendimiento de las soluciones. Programa de Prácticas: P1: Programación Elemental en Java. P2: Orientación a Objetos Básica en Java. P3: Herencia e Implementación de Interfaces en Java. P4: Concurrencia/Paralelismo de Datos de Grano Fino. P5: Exclusión Mutua con Variables Comunes. P6: Concurrencia/Paralelismo de Datis de Grano Grueso: La Ecuación de Subramanian. P7: Mejorando el Rendimiento: Uso de Pool de Threads en Java. P8: Control de Exclusión Mutua con API Estándar de Java. P9: Diseño de Monitores con API Estándar de Java. P10: Control de Exclusión Mutua con API de Alto Nivel de Java. P11: Paso de Mensajes Interobjeto con RMI en Java. P12: Distribución de Tareas mediante Paso de Mensajes con RMI. |
C14 | R01 R04 R03 R02 |
Bibliografía
Bibliografía Básica
[Alb15] Albahari, J. y Albahari, B. C# in a Nutshell. The Definitive Reference. O'Reilly, 2015
[Akh06] Akhter, S. y Roberts, J. MultiCore Programming. Incresing Performance Throught Software Multithreading. Intel Press, Digital Edition, 2006.
[Bal16] Balaji, P. (ed.) Programming Models for Parallel Computing. The MIT Press, 2016.
[Ben06] Ben-Ari, M. Principles of Concurrent and Distributed Programming (second edition). Addison-Wesley, 2006.
[Bol09] Bollella, G. y Bruno, E. Real Time Java Programming With Java RTS. SunMicrosystems, 2009.
[Cap12] Capel, M. y Rodríguez, S. Sistemas Concurrentes y Distribuidos: Teoría y Práctica. Copicentro, 2012.
[Coo13] Cook, S. CUDA Programming: A Deverlopers Guide to Parallel Computing with GPUs. Morgan Kaufmann-Elsevier, 2013.
[Fer12] Fernández, J. Java 7 Concurrency Cookbook. Packt Publishing, 2012.
[Fer16] Fernández, J. Mastering Concurrency Programming with Java 8. Packt Publishing, 2016.
[Göe06] Göetz, B., Peierls, T., Bloch, J., Bowbeer, J., Holmes, D. y Lea, D. Java Concurrency in Practice. Addison-Wesley, 2006.
[Gra03] Grama, A. et al. Introduction to Parallel Computing (2nd Edition). Benjamin/Cummings Publishing Company, 2003.
[Oak04] Oaks, S. & Wong, H. Java Threads, 3rd Edition. O’Reilly, 2004.
[Ora14] Java SE 8 Concurrency Utilities. Oracle, 2014. http://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/
[Pal03] Palma, J.T y otros. Programación Concurrente. Thompson Editores, 2003.
[Sub11] Subramanian, V. Programming Concurrency on the JVM: Mastering Synchronization, STM and Actors. The Pragmatic Programmers, 2011.
[Val14] Vallejo, D., González, C. y Albusac, J. Programación Concurrente y Tiempo Real, 2ª Edición. Dpto. de Tecnologías y Sistemas de la Informarción. Universidad de Castilla-La Mancha. En http://www.libropctr.com/downloads/LibroPCTR_2014.pdf
[Wel04] Wellings, A. Concurrent and Real Time Programming in Java. John Wiley &Sons, 2004
[Wil12] Williams, A. C++ Concurrency in Action. Practical Multithreading. Manning, 2012.
Bibliografía Específica
[Arn01] Arnold, K., Gosling, J. & Holmes, D. El Lenguaje de Programación Java.
Addison-Wesley, 2001.
[Bre95] Breshears, C. A Beginner's Guide to PVM-Parallel Virtual Machine.
Publicación electrónica del Joint Institute for Computational Science, 1995.
[Col94] Coulouris, G., Dollimore, J. and Kindberg, T. Distributed Systems. Concept and Design.
2nd ed., Addison-Wesley, 1994.
[Eck06] Eckel, B. Thinking in Java (4th Edition). Prentice Hall, 2006.
[Kal09] Kalin, M. Java Web Services; Up and Running. O’Reilly, 2009.
Bibliografía Ampliación
[Lea01] Lea, Doug. Programación Concurrente en Java. Addison-Wesley, 2001.
[Mul93] Mullender, S (ed.) Distributed Systems, Second Edition.
Addison-Wesley, 1993.
[Mur89] Murata, T Petri Nets: Properties, Analysis and Applications.
Proceedings IEEE vol. 77, no. 4. April, 1989.
[Nat06] Naftalin, M. & Wadler, P. Java Generics and Collections. O’Reilly, 2006.
[Per90] Pérez, J.E. Programación Concurrente. Editorial Rueda, 1990.
[Pri03] Prieto, Manuel J. Curso de J2ME. Disponible en formato electrónico. 2003.
[Rif92] Rifflet, J.M. Comunicaciones en Unix. McGraw-Hill, 1992.
[Rob96] Robbins, K. & Robbins, S. Practical Unix Programming: A Guide to
Concurrency, Communication and Multithreading. Prentice Hall, 1996.
[Vin97] Vinoski, S. CORBA: Integrating Diverse Applications Within Distributed
Heterogeneus Environments. IEEE Communications Magazine, Vol. 35, No 2,
February 1997.
[Wan00] Wang, P. Java. International Thompson Editores, 2000.
El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente. En aplicación de la Ley 3/2007, de 22 de marzo, para la igualdad efectiva de mujeres y hombres, así como la Ley 12/2007, de 26 de noviembre, para la promoción de la igualdad de género en Andalucía, toda alusión a personas o colectivos incluida en este documento estará haciendo referencia al género gramatical neutro, incluyendo por lo tanto la posibilidad de referirse tanto a mujeres como a hombres.