Laboratorio 4

Problemas de concurrencia y sincronización en jBACI

Un poco de historia

Hace unos 20 años Modechai (Moti) Ben-Ari desarrollo un simulador para la enseñanza de la programación concurrente. El simulador estuvo basado en el interprete Pascal-P de Niklaus Wirth y fue luego publicada en el libro de Ben-Ari Principios de Programación Concurrente (Prentice-Hall International, 1982). Después Ben-Ari hizo algunas modificaciones al simulador, en particular desarrolló un ambiente de entorno integrado, basado en la interface de usuario que tenía Turbo Pascal. Es fácil comprender que en la actualidad su mantenimiento es casi nulo y la interface de caracter no es agradable para el estudiante.

Con el devenir de los años otros educadores han desarrollado simuladores concurrentes de su propiedad. El más completo y ampliamente usado es BACI. Este simulador a diferencia del que creo Ben-Ari está basado en un subconjunto de C. Curiosamente el nombre está dedicado al que posiblemente los inspiró: Ben-Ari Concurrency Interpreter (BACI) cuyos autores son: Bill Bynum y Tracy Camp. Existen muchas versiones de BACI para distintos sistemas, una interface gráfica de usuario existe solo para sistemas Unix. Sin embargo, recientemente, hace algunos años David Strite desarrollo un nuevo interprete para el código virtual de BACI incluyendo un GUI. El interprete se llama jBACI  está escrito en JAVA y es portable a todas las plataformas.

jBACI es una integración del compilador original de BACI y el interprete de Strite en una IDE que contiene un editor, junto con extensiones para la GUI que simplifican su uso para novatos. Adicionalmente Ben-Ari ha modificado el compilador y el interprete para incluir comandos para dibujo graficos en un lienzo; esto posibilita a los estudiantes escribir programas concurrentes que son más divertidos que los programas basados en caracteres.

Archivos a necesarios

jBACI interpreta tanto el pascal concurrente como el subconjunto de C/C++. La interface reconoce el archivo por la extensión .pm para archivos de Pascal y .cm para los archivos de C.

En el siguiente archivo comprimido jbaci1-4-5.zip se encuentra: un archivo de configuración, dos archivos batch para invocar la aplicación JAVA (ya sea PAscal o C--), un directorio conteniendo los compiladores y otro directorio conteniendo abundantes ejemplos en Pascal y C--. 

El archivo de configuración es el siguiente: config.cfg

#jBACI configuration file
#Mon Mar 08 07:08:24 GMT 2004
SHOW_HISTORY_SOURCE=true
SUBWINDOW_Y=300
SUBWINDOW_X=300
INITIAL_CONSOLE=true
INITIAL_LINDA=true
G_YPOS=100
SOURCE_DIRECTORY=c\:\\p2\\programs\\pascal
G_WIDTH=600
GLOBALS_Y=350
GLOBALS_X=300
PASCAL_COMPILER=c\:\\jbaci\\bin\\bapas.exe
SHOW_ACTIVE_DEFAULT=true
OPEN_MAIN_BY_DEFAULT=true
FRAME_Y=600
PTAB_Y=300
FRAME_X=800
G_HEIGHT=450
CONSOLE_Y=350
PTAB_X=150
CONSOLE_X=0
C_COMPILER=c\:\\jbaci\\bin\\bapas.exe
STOP_ON_SWAP_DEFAULT=false
SOURCE_FONT_SIZE=14
TUPLE_SPACE=5
PCODE_FONT_SIZE=12
HISTORY_Y=350
HISTORY_X=600
INPUT_Y=0
INPUT_X=0
INITIAL_GLOBALS=true
G_XPOS=200
PROCESS_Y=350
PROCESS_X=300
INITIAL_HISTORY=false
TABLE_FONT_SIZE=12
WRITE_HISTORY_FILE=false
LINDA_Y=350
LINDA_X=600

Usted deberá modificar lo que está en negrita de acuerdo a donde haya desempaquetado su archivo zip. Es decir si el contenido del archivo zip se extrajeron en

     j:\Instaladores\jbaci\bin\bacc.exe 

entonces la ruta que debería ir en la variable C_COMPILER es

          C_COMPILER=j\:\\Instaladores\\jbaci\\bin\\bacc.exe.

De igual forma si usted desea que su directoro origen  sea alguno en particular, deberá modificar la variable SOURCE_DIRECTORY

El siguiente archivo jbaci1-4-5docs.zip contiene la guia del usuario del compilador BACI. Es necesario que los lea para saber con qué instrucciones puede contar para programar en C--.

También puede serles util los siguientes enlaces: 

        http://www.mines.edu/fs_home/tcamp/baci/

       http://stwww.weizmann.ac.il/g-cs/benari/jbaci/

TAREA

1. Implemente alguna solución a problemas de concurrencia en jBACI

2. Lea algunos códigos de ejemplos y modifique las opciones del entorno de modo que pueda hacer todas las variantes posibles. Deberá leer la guia del usuario del simulador jBACI.

3. A continuación el laboratorio del semestre pasado: Lab4 2006-1.pdf. Resuelvalo.