Francisco Olivares 201473575-8
francisco.olivars.14@sansano.usm.cl
- Entre en la carpeta del proyecto y ejecute el siguiente comando
rmiregistry 8080 &
- Escriba make, para que así se compilen las clases
make
- Ejecute una instancia del servidor rmi con el comando
make app
- Abra los clientes que estime necesarios con el comando
make proceso id=<id del proceso> n=<numero total de procesos> delay=<retardo en ms del proceso> bearer=<true/false>
Ejemplo
make proceso id=0 n=3 delay=5000 bearer=false
- Todos los procesos están online cuando inicia el algoritmo, por esto se añadió un delay de 10 segundos, para que así se abran todas las intancias de procesos y después de eso empieza a operar el proceso
- Se modificó la firma original de la función
waitToken()
awaitToken(int id)
, esto se hizo con la finalidad de que el proceso que ejecutewaitToken()
se quede esperando (el token) y abra un socket Unicast en la dirección 5000 + id desde el lado del rmi - Dentro del proyecto hay una carpeta llamada logs, en esta se guardan los logs de la ejecución de los procesos de la forma
logP<id>
, se recomienda entre una ejecución y otra borrar los logs para tener una mejor noción de la ejecución actual.
- El arreglo RN es una lista que vive en los procesos
- El arreglo LN y la Cola viven en el Token.
- Los métodos
request()
,waitToken
,takeToken
yKill
fueron implementados en el objeto rmi app. - Existe un único Token, este parte inicialmente en el proceso con el flag
bearer=true
, una vez este termine su zona crítica, hará todo el procedimiento de añadir nuevos procesos a la cola y esperará hasta que haya alguíen a quíen pasarle el token (alguien en la cola) y ejecutará el métodotakeToken
. - Cada proceso tiene un Thread destinado a escuchar y procesar las request provenientes de los otros procesos, se aceptan o se rechazan según la regla del algoritmo.
Para más detalle se recomienda leer los comentarios del código.