Tarea para PSP02.

Tarea para PSP02.

Detalles de la tarea de esta unidad.
Enunciado.

Ejercicio 1

De igual manera a lo visto en el tema, ahora te proponemos un ejercicio del tipo productor-consumidor que mediante un hilo productor almacene datos (15 caracteres) en un búfer compartido, de donde los debe recoger un hilo consumidor (consume 15 caracteres). La capacidad del búfer ahora es de 6 caracteres, de manera que el consumidor podrá estar cogiendo caracteres del búfer siempre que éste no esté vacío. El productor sólo podrá poner caracteres en el búfer, cuando esté vacío o haya espacio.

Te mostramos una posible salida del programa que debes realizar

Imagen parcial de la salida de una ejecución del programa Ejercicio1.

Ejercicio 2

De igual manera a lo visto en el tema, ahora te proponemos que resuelvas el clásico problema denominado "La cena de los filósofos" utilizando la clase Semaphore del paquete java.util.concurrent.

El problema es el siguiente: Cinco filósofos se sientan alrededor de una mesa y pasan su vida comiendo y pensando. Cada filósofo tiene un plato de arroz chino y un palillo a la izquierda de su plato. Cuando un filósofo quiere comer arroz, cogerá los dos palillos de cada lado del plato y comerá. El problema es el siguiente: establecer un ritual (algoritmo) que permita comer a los filósofos. El algoritmo debe satisfacer la exclusión mutua (dos filósofos no pueden emplear el mismo palillo a la vez), además de evitar el interbloqueo y la inanición.

Dibujo de una mesa circular con 5 platos y 5 palillos situados de forma alterna, entre cada dos platos hay un palillo.

Te mostramos una posible salida del programa que debes realizar.

Imagen parcial de la salida de una ejecución del programa Ejercicio2.

 

Criterios de puntuación. Total 10 puntos.

Total 10 puntos.

  • Ejercicio 1. 5 puntos.
  • Ejercicio 2. 5 puntos.

Se tendrá en cuenta que:

  • La ejecución de los programas produce el resultado esperado.
  • No se produce interbloqueo ni inanición.
Recursos necesarios para realizar la Tarea.

Ejercicio 1.- Los contenidos y ejemplos realizados en la Unidad.

Ejercicio 2.- Además de los contenidos y ejemplos de la unidad, se proporciona el archivo PSP02_Recurso_Tarea.zip con indicaciones sobre las clases y métodos que puedes crear para resolver el problema. Para ver esa información, generada mediante JavaDoc, descomprime el archivo y ejecuta index.html.

Consejos y recomendaciones.

Para el Ejercicio1.- Ten en cuenta que ahora el problema del productor-consumidor utiliza un búfer de tamaño 6, que lo puedes implementar mediante un array. La forma de ir introduciendo caracteres será de izquierda a derecha y se consumirán de derecha a izquierda (el último que se produzca será el primero en consumirse).

Para el Ejercicio2.- Lo primero que debes tener claro es si se trata de proteger una sección crítica o bien de comunicar hilos, para así utilizar la clase Semaphore de la forma apropiada. Consulta el "problema de la cena de los filósofos" en la wikipedia, en él se comentan diversos algoritmos para resolver el problema y además hay enlaces a la solución visual del problema.

"El problema de la cena de los filósofos" en Wikipedia

Indicaciones de entrega.

Una vez realizada la tarea elaborarás un único documento donde figuren las respuestas correspondientes. El envío se realizará a través de la plataforma de la forma establecida para ello, y el archivo se nombrará siguiendo las siguientes pautas:

apellido1_apellido2_nombre_SIGxx_Tarea

 

Asegúrate que el nombre no contenga la letra ñ, tildes ni caracteres especiales extraños. Así por ejemplo la alumna Begoña Sánchez Mañas para la segunda unidad del MP de PSP, debería nombrar esta tarea como...

sanchez_manas_begona_PSP02_Tarea

 

Anexo.- Recursos de licencia.

Licencias de recursos utilizados en la Unidad de Trabajo.
Recurso (1)
Datos del recurso (1)
Recurso (2)
Datos del recurso (2)
imagen parcial de la salida de una ejecución del programa Ejercicio1.

Autoría: Isabel M. Cruz Granados.

Licencia: Uso educativo-nc.

Procedencia: Captura de pantalla de la Salida del programa NetBeans, propiedad Sun Microsystems, bajo licencia GNU GPL v2.

imagen parcial de la salida de una ejecución del programa Ejercicio2.

Autoría: Isabel M. Cruz Granados.

Licencia: Uso educativo-nc.

Procedencia: Captura de pantalla de la Salida del programa NetBeans, propiedad Sun Microsystems, bajo licencia GNU GPL v2.