Sie sind auf Seite 1von 3

Universidad Nacional Experimental de Guayana

Proyecto Ingeniería en Informática


Ing. Ronald Pérez / Julio Canelón
Asignatura: Sistemas de Operación

TRABAJO PRÁCTICO I

La guerra entre las maquinas y Zion ha terminado. Sin embargo, el capitán Morpheus, piensa
seguir liberando mentes de la Matrix. Para ello ha pensado en un nuevo programa de
entrenamiento, que permita a las personas liberadas volver a la Matrix y salir con vida. La
información que ha proporcionado Morpheus sobre la arquitectura de la Matrix, es la siguiente:
• La Matrix es un programa, que crea, controla, y destruye todos los programas
que están en ella, entre estos programas se encuentran los agentes.
• Todos los programas de la Matrix tienen un propósito, sin embargo un programa
puede ser absorbido por un agente al detectarse una ‘anomalía’.
• Al mutar un programa a un agente, este avisa a la Matrix, la cual replica la
detección de la anomalía a todos los programas cercanos para que se conviertan en
agentes, y la eliminen.
• Una anomalía, es cualquier programa que este en la Matrix, y no haya sido
creado por ella, o aquel del que no se tenga conocimiento de su ubicación.
• Para que una anomalía pueda salir de la Matrix debe encontrar un teléfono
alámbrico, y esperar a que el operador realice una llamada a este teléfono.

El objetivo del programa de entrenamiento es crear una simulación del comportamiento de la


Matrix, los programas que en ella residen y evitar que el usuario sea capturado y eliminado por
los agentes.

Las características del programa son las siguientes:


• En un tablero bidimensional, de 100x100 celdas, existen varios tipos de objetos:
programas, paredes y teléfonos.
• Un programa posee un comportamiento establecido que debe ser cargado de un archivo de
texto, y en cada paso que dé el programa, debe revisar si en su línea visual existe una
anomalía, comparando contra la información almacenada en la Matrix. La línea visual se
define como la dirección del último paso dado, es decir, si el programa se acaba de mover
hacia arriba la línea visual está hacia arriba.
• Si un programa detecta una anomalía, este debe mutar y avisar a la Matrix de la detección,
luego la Matrix convertirá TODOS los programas del tablero en agentes.
• Un agente no posee un comportamiento establecido, y realiza movimientos inteligentes
(usando heurísticas de distancia) para acorralar a la anomalía. Como heurística se puede
considerar la dirección en la cual se deban dar menos pasos hacia la anomalía, y moverse
un paso en este sentido.
• Si la anomalía logra alcanzar el teléfono, en el cual el operador está llamando este se salva
y termina el entrenamiento. Se elimina si éste no puede realizar movimiento alguno.
• La anomalía se mueve una celda en cada medio segundo, igual todos los agentes, mientras
que los programas se mueven 1 celda cada segundo.
• Los posibles movimientos son arriba, abajo, derecha, izquierda, siempre y cuando no
exista una pared, un teléfono, un programa (o agente). En el caso de los programas con
comportamiento fijo, si un paso no puede ser dado, por colisionar con algo, entonces este
paso es omitido y en el próximo segundo se intentará con el siguiente del comportamiento.
• El teléfono de salida es seleccionado al comienzo del entrenamiento y no varía, este debe
ser escogido de manera aleatoria.
Universidad Nacional Experimental de Guayana
Proyecto Ingeniería en Informática
Ing. Ronald Pérez / Julio Canelón
Asignatura: Sistemas de Operación

Formatos

El formato del tablero que será cargado desde un archivo de texto, consta de 100 líneas de 100
caracteres cada una, donde un espacio representa una celda blanca, un # representa una pared,
una T un teléfono, un 0..9 representa un programa identificado con el comportamiento
indicado por el numero, y una A representa la anomalía.
Después de las 100 líneas vienen los nombres de los archivos de comportamiento. Puede haber
en el mismo tablero varios programas con el mismo comportamiento. El número de programas
por tablero es ilimitado.
En los contornos del tablero solo puede haber paredes.

El formato de comportamiento es un String de caracteres, donde cada carácter representa un


movimiento en el tablero, los movimientos son 8 arriba, 2 abajo, 4 izquierda y 6 derecha.

Ejemplos de un archivo de comportamiento.


Ciclico.txt
6666888844422

Esto mostraría un programa moviéndose así:

P1 P P P
0 9 8 7
P1 P
1 6
P1 P
2 5
P
4
P P0 P P P
1 2 3

El comportamiento del programa se sigue ejecutando de manera indefinida hasta que la Matrix,
avise que se encontró una anomalía o hasta que él mismo la encuentre.
La anomalía es movida por el usuario utilizando las teclas 8, 2, 4 y 6, con el mismo significado
de los programas.
Universidad Nacional Experimental de Guayana
Proyecto Ingeniería en Informática
Ing. Ronald Pérez / Julio Canelón
Asignatura: Sistemas de Operación

La solución debe ser implementada en C++ o Java, utilizando imágenes para diferenciar las
celdas libres, de las paredes, los teléfonos (debe distinguirse del teléfono de salida de los
demás), los programas, los agentes y la anomalía. Se debe proveer de algún mecanismo para
poder cargar un tablero específico, como también para reiniciar el entrenamiento.

Se debe realizar un informe en el cual se especifique, el(los) recurso(s) critico(s), el(los)


proceso(s) involucrado(s), condiciones de sincronización, políticas de sincronización aplicadas,
así como también una breve descripción del enfoque utilizado para atacar el problema.

Observaciones:

• Los formatos son invariantes. NO se pueden modificar a conveniencia.


• Como máximo habrá en un tablero 10 comportamientos distintos, esto no implica que solo
habrá 10 programas.
• Todos los programas se deben mover al mismo tiempo y sin intervención externa.
• Los proyectos deben ser elaborados en grupos de máximo 3 personas.
• No se aceptarán proyectos vía e-mail. De ser entregado por correo se considerará no
entregado.
• Se considera PROYECTO ENTREGADO: al código que resuelva el problema más el
informe. La falta de alguna de estas partes resultará en que el proyecto se considere no
entregado.
• No habrá prórroga.
• Deberá utilizar Procesos Concurrentes y Memoria Compartida
• Si va a implementar con Java No utilizar el synchronize.
• En el informe deberá explicar los algoritmos utilizados para gestionar los recursos
compartidos
• 25% proyecto – 5% informe.
• El día de la entrega de proyecto será planteado más adelante y publicado en el blog
http://juliocanelon.blog.spot.com

Das könnte Ihnen auch gefallen