Proyecto Sistemas Operativos

5
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

Transcript of Proyecto Sistemas Operativos

Page 1: Proyecto Sistemas Operativos

Universidad Nacional Experimental de GuayanaProyecto 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.

Page 2: Proyecto Sistemas Operativos

Universidad Nacional Experimental de GuayanaProyecto Ingeniería en Informática

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

El teléfono de salida es seleccionado al comienzo del entrenamiento y no varía, este debe ser escogido de manera aleatoria.

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.txt6666888844422

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

P10

P9

P8

P7

P11

P6

P12

P5P4

P P0 P1

P2

P3

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.

Page 3: Proyecto Sistemas Operativos

Universidad Nacional Experimental de GuayanaProyecto 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