Enunciado - Escuela Superior de Informática (UCLM) - Universidad ...
Enunciado - Escuela Superior de Informática (UCLM) - Universidad ...
Enunciado - Escuela Superior de Informática (UCLM) - Universidad ...
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 -