01.02.2015 Views

Enunciado - Escuela Superior de Informática (UCLM) - Universidad ...

Enunciado - Escuela Superior de Informática (UCLM) - Universidad ...

Enunciado - Escuela Superior de Informática (UCLM) - Universidad ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

PROGRAMACIÓN CONCURRENTE Y TIEMPO REAL<br />

PRÁCTICA Nº 2<br />

SEMÁFOROS Y MEMORIA COMPARTIDA<br />

(CURSO 2011/2012)<br />

ESCUELA SUPERIOR DE INFORMÁTICA<br />

UNIVERSIDAD DE CASTILLA-LA MANCHA<br />

Índice<br />

Índice........................................................................................................................................... 1<br />

Objetivos..................................................................................................................................... 2<br />

Objetivo general......................................................................................................................................2<br />

Objetivos específicos...............................................................................................................................2<br />

Especificación............................................................................................................................ 2<br />

Sugerencias................................................................................................................................ 3<br />

Bibliografía básica..................................................................................................................... 3<br />

Plazos <strong>de</strong> entrega.......................................................................................................................3<br />

Normas <strong>de</strong> presentación............................................................................................................4<br />

Presentación onLine...............................................................................................................................4


PCTR - Práctica 2 (11/12)<br />

Semáforos y Memoria Compartida<br />

Objetivos<br />

Objetivo general<br />

Resolver un problema <strong>de</strong> concurrencia empleando las primitivas POSIX específicas<br />

<strong>de</strong> gestión <strong>de</strong> semáforos y memoria compartida.<br />

Objetivos específicos<br />

El alumno <strong>de</strong>berá adquirir las habilida<strong>de</strong>s para la resolución <strong>de</strong> un problema<br />

concurrente utilizando los mecanismos <strong>de</strong> sincronización y comunicación entre procesos<br />

basados en memoria compartida y semáforos.<br />

Implementar la solución teórica obtenida mediante los mecanismos que proporciona el<br />

estándar POSIX. Estos son los llamados IPC y más concretamente la implementación <strong>de</strong><br />

segmentos <strong>de</strong> memoria compartida y semáforos nombrados. El alumno <strong>de</strong>berá adquirir las<br />

habilida<strong>de</strong>s necesarias para la creación y espera <strong>de</strong> procesos así como el correcto tratamiento<br />

<strong>de</strong> las señales básicas relativas a la finalización <strong>de</strong> la aplicación.<br />

Especificación<br />

Se pi<strong>de</strong> simular la solución a la siguiente variante <strong>de</strong>l problema <strong>de</strong>l barbero dormilón.<br />

En esta ocasión, la barbería tiene una sala <strong>de</strong> espera con n sillas y una capacidad máxima <strong>de</strong><br />

m clientes que pue<strong>de</strong>n estar en el interior <strong>de</strong> la babería (sentados en las sillas o esperando <strong>de</strong><br />

pie en la sala). Si la barbería está llena (m clientes en total) y llega un cliente nuevo, este<br />

cliente no se esperará y abandonará la barbería. La barbería cuenta a<strong>de</strong>más, con una sala<br />

don<strong>de</strong> se atien<strong>de</strong> a los clientes. En esta sala hay tres sillones y tres barberos (el barbero lento,<br />

el medio y el rápido) que cortarán el pelo a los clientes. Los barberos son muy vagos y si no<br />

tienen clientes, se duermen. El cliente que ocupe el sillón <strong>de</strong>l barbero se encargará <strong>de</strong><br />

<strong>de</strong>spertarlo. Únicamente los clientes que estén sentados en las sillas podrán pasar a ocupar un<br />

sillón para que algún barbero les corte el pelo. De esta forma, cuando un cliente se levante <strong>de</strong><br />

su silla para ocupar un sillón, algún cliente <strong>de</strong> los que está <strong>de</strong> pie, ocupará su sitio en la silla<br />

libre. Cuando acaben <strong>de</strong> cortar el pelo, cada cliente pagará al barbero que le cortó el pelo una<br />

cantidad <strong>de</strong> dinero fija D, más una propia (aleatoria) entre 0 y P Euros. La barbería cuenta<br />

con una caja compartida para todos los barberos y clientes. El cliente <strong>de</strong>positará el dinero<br />

total en una caja, <strong>de</strong> la que el barbero extraerá únicamente la propina, <strong>de</strong>jando la cantidad fija<br />

D como beneficio <strong>de</strong> la barbería.<br />

El alumno <strong>de</strong>be plantear y realizar una solución correcta, con el mayor grado posible <strong>de</strong><br />

paralelismo, que coordine los barberos y sus clientes <strong>de</strong> forma a<strong>de</strong>cuada utilizando semáforos<br />

y memoria compartida. Se <strong>de</strong>be <strong>de</strong>finir el código <strong>de</strong> programa que <strong>de</strong>be ejecutar cada proceso<br />

cliente y los procesos barbero, <strong>de</strong> forma que puedan evolucionar, sin ningún tipo <strong>de</strong><br />

interbloqueo.<br />

Implementar una simulación <strong>de</strong>l problema planteado mediante el uso <strong>de</strong> las primitivas<br />

que ofrece el IPC <strong>de</strong> POSIX y con los siguientes requerimientos específicos e imprescindibles:<br />

1) La simulación <strong>de</strong>be coordinar a los clientes y a los barberos correctamente.<br />

2) Cada cliente será un proceso Unix (generado a partir <strong>de</strong> un único programa).<br />

3) Cada barbero será otro proceso Unix.<br />

4) Se hará la siguiente distinción en el tiempo que emplea cada barbero en cortar el pelo<br />

(se simulará con un simple sleep). El primer barbero tardará S segundos, el segundo<br />

2S segundos y el tercero 3S segundos.<br />

- Página 2 -


PCTR - Práctica 2 (11/12)<br />

Semáforos y Memoria Compartida<br />

5) Debe haber un proceso que realice las inicializaciones necesarias y lance los procesos<br />

que intervienen en la resolución <strong>de</strong>l problema. Éste se encargará <strong>de</strong> lanzar inicialmente<br />

los barberos y posteriormente, en tiempos aleatorios, a los clientes.<br />

6) El proceso que se encarga <strong>de</strong> las inicializaciones <strong>de</strong>berá pasar todas las constantes<br />

necesarias para la simulación por línea <strong>de</strong> ór<strong>de</strong>nes a los procesos barbero y cliente, <strong>de</strong><br />

forma que no será necesario su recompilación si se cambiara el nombre <strong>de</strong> algún<br />

recurso compartido o constante.<br />

7) Cuando finalice la ejecución (porque han finalizado todos los clientes o se ha forzado<br />

la finalización mediante Control+C) el proceso principal <strong>de</strong>berá liberar todos aquellos<br />

recursos inicialmente creados.<br />

8) Tras lanzar los procesos necesarios, se ha <strong>de</strong> mostrar información sobre qué está<br />

haciendo cada uno <strong>de</strong> ellos y sobre su estado. Se podrá visualizar cualquier otra<br />

información que se consi<strong>de</strong>re interesante con la a<strong>de</strong>cuada justificación.<br />

9) Al finalizar la simulación se <strong>de</strong>berá mostrar el dinero total recaudado por la barbería.<br />

Sugerencias<br />

Utilice la biblioteca proporcionada para abstraer el uso <strong>de</strong> los IPC <strong>de</strong> POSIX y que<br />

permita utilizar las operaciones wait y signal directamente, así como, articular mecanismos <strong>de</strong><br />

alto nivel para gestionar los segmentos <strong>de</strong> memoria compartida.<br />

Bibliografía básica<br />

• [KERN91] Kernighan B. W., Ritchie D. M. - El lenguaje <strong>de</strong> programación C - Ed. Prentice Hall<br />

1991.<br />

• [ROCK04] Rochkind, M.J. - Advanced Unix Programming (2 nd Edition) - Ed. Addison-Wesley 2004.<br />

• [ROBB97] Robbins, K.A., Robbins, S – UNIX Programación Práctica – Ed. Prentice Hall 1997.<br />

• [UNIX] Páginas <strong>de</strong>l manual electrónico <strong>de</strong> UNIX.<br />

Plazos <strong>de</strong> entrega<br />

Esta práctica <strong>de</strong>berá entregarse como máximo el día 30 <strong>de</strong> Marzo. No se tendrán en<br />

cuenta las prácticas entregadas fuera <strong>de</strong> plazo. No se admitirán prácticas entregadas por email.<br />

La entrega <strong>de</strong> la práctica tendrá que realizarse en formato electrónico.<br />

●<br />

La entrega será mediante una tarea en el espacio virtual <strong>de</strong> la asignatura en Campus<br />

Virtual. Si algún alumno no está registrado en dicha plataforma, <strong>de</strong>berá informar al<br />

profesor <strong>de</strong> prácticas correspondiente para que le añada al curso. El fichero comprimido<br />

subido al sistema <strong>de</strong>berá cumplir la especificación que se indica en la sección Normas <strong>de</strong><br />

Presentación.<br />

- Página 3 -


PCTR - Práctica 2 (11/12)<br />

Semáforos y Memoria Compartida<br />

Normas <strong>de</strong> presentación<br />

El seguimiento <strong>de</strong> las normas <strong>de</strong> presentación <strong>de</strong> la práctica es obligatorio,<br />

especialmente la parte relativa a la compilación automática mediante make <strong>de</strong> todos los<br />

ejecutables necesarios para la resolución <strong>de</strong> la misma. Obviamente, las rutas <strong>de</strong>l fichero<br />

makefile <strong>de</strong>berán ser relativas para permitir su compilación en diferentes computadores sin<br />

necesidad <strong>de</strong> realizar ningún cambio. En este curso únicamente será posible entregar la<br />

práctica mediante Campus Virtual, es <strong>de</strong>cir, no hay que realizar ninguna impresión <strong>de</strong> la<br />

misma.<br />

Presentación onLine<br />

Únicamente se subirá un fichero comprimido con tar y gzip cuyo nombre coincidirá<br />

con el dni <strong>de</strong>l estudiante (ejemplo: 5987654.tar.gz). Al <strong>de</strong>scomprimir el fichero, se <strong>de</strong>berá<br />

obtener la siguiente estructura <strong>de</strong> directorios:<br />

/inclu<strong>de</strong>Contendrá los ficheros <strong>de</strong> cabecera .h<br />

/src Contendrá los ficheros fuente .c<br />

/obj Contendrá los ficheros objeto (se <strong>de</strong>berán crear mediante make).<br />

/exec Contendrá los ejectuables (se <strong>de</strong>berán crear mediante make).<br />

/data Contendrá los ficheros para ejecutar las pruebas.<br />

/doc Contendrá un fichero .pdf con la memoria <strong>de</strong> la práctica.<br />

/ El directorio raiz contendrá únicamente dos ficheros; un archivo<br />

makefile que <strong>de</strong>berá permitir compilar todos los programas<br />

relacionados con la práctica mediante la llamada directa a make y<br />

un fichero ascii (author.txt) que contendrá nombre y apellidos <strong>de</strong>l<br />

autor.<br />

La memoria <strong>de</strong> la práctica ha <strong>de</strong> incluir una discusión <strong>de</strong> la solución planteada,<br />

haciendo especial hincapié en aquellas partes <strong>de</strong>l código fuente que consi<strong>de</strong>re más relevante.<br />

Así mismo, la memoria ha <strong>de</strong> incluir todo el código fuente y una sección en la que se indique<br />

brevemente cómo compilar y ejecutar.<br />

- Página 4 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!