CC41B - SISTEMAS OPERATIVOS

**Implementaciones nPipe para Tarea 3**

A continuacion hay varias implementaciones corectas e incorrectas de nPipe, basandose en mensajes, monitores y semaforos.
Se listan a continuacion el nombre del archivo y el resultado que se espera entrege la tarea 3.

| NOMBRE              | RESULTADO
----------------------------------------------------------------------
|nPipe-mensajes       | Test aprobado
|nPipe-mensajes-mal1  | Cuando el buffer est vaco nGetPipe no se bloquea a la espera de recibir datos.
|nPipe-mensajes-mal2  | Cuando el buffer est lleno nPutPipe no se bloquea a la espera de un espacio disponible.
----------------------------------------------------------------------

En el primero no espera la llegada de datos para que nGetPipe retorne un caracter.
El segundo no bloquea un nPutPipe cuando el buffer ha llegado al limite dado en nMakePipe.

| NOMBRE              | RESULTADO
----------------------------------------------------------------------
|nPipe-monitor        | Test aprobado
|nPipe-monitor-mal1   | El nPipe retorna caracteres inconsistentes con los ingresados.
|nPipe-monitor-mal2   | El nPipe retorna caracteres inconsistentes con los ingresados.
----------------------------------------------------------------------

Ambos tienen un problema que aparece al ser testeado con multiples threads haciendo get y put a la vez (ver el codigo fuente para mas detalles).
Hay que probar diferentes configuraciones de productores y consumidores en paralelo!

| NOMBRE              | RESULTADO
----------------------------------------------------------------------
|nPipe-semaforos      | Test aprobado
|nPipe-semaforos-mal1 | El test ha tomado ms tiempo del esperado.
|nPipe-semaforos-mal2 | El nPipe retorna caracteres inconsistentes con los ingresados.
----------------------------------------------------------------------

El primero se bloquea indefinidamente y el segundo modifica los datos que ingresan.

Para probar la tarea con cada una de estas implementaciones hacer:
  make NPIPE=<nombre>

Notar que nClosePipe siempre estara bien implementado (no hay que probarlo), por tanto cuando un test sobrepase un cierto tiempo limite maximo (a criterio de cada uno) nClosePipe liberara todos los threads bloqueados en el pipe para poder finalizar el programa normalmente.

Las dudas sobre detalles de implementacion pueden ser por correo a juan.barrios@gmail.com o al newsgroup uch.ing.cursos.cc41b o en persona si estoy en el dcc.



suerte!
Juan Manuel Barrios N.
