-
Notifications
You must be signed in to change notification settings - Fork 0
[Requerimientos] Dudas generales integrales del proyecto
MEJORAS DEL DOCUMENTO: separar segun corresponda (BROKER, TEAM, GAMEBOY, etc)
- Tanto Broker, GameCard y Team van a ser servidores. Esto es correcto ¿Por qué? el proceso game boy en su archivo configuración tiene el puerto y ip del team y game card para conectarse , entonces estos 2 son servidores . Estos se pueden comunicar sin el broker. También estos 2 procesos se tienen que conectar al broker por lo cual , el broker es servidor y los otros son clientes. Mas info: Procesos individuales y servidores
- [Pagina 9] “Al estar este proceso conectado al Broker y asociarse a una cola de mensajes específica nos permite generar redundancia de Game Card y poder replicar con distintas demoras o distintos file system los mismos archivos.”
Cada gamecard es un filesystem. La redundancia de GameCard hace referencia a tener distintas instancias de GameCard para evitar bloqueos con otros procesos. Por ejemplo: Si un proceso Team quiere consultar un pokemon especifico al mismo tiempo que otro, que el segundo pueda consulta el pokemon necesario a otra instancia de GameCard.
Todos los accesos a memoria (filesystem) son mejor a disco. Broker va a estar en memoria.
- [Pagina 11] Cuando se explica el aspecto técnico: Mantenibilidad menciona que los mensajes que fueron enviados a sus suscriptores se borraran, pero ¿no era que esos mensajes se guardaban (en una memoria cache) para que nuevos suscriptores les llegara todos los mensajes de la cola cuando se suscriban a la misma?
Cada vez que llega un mensaje debe estar en la memoria cache (se guardar apenas llegue el mensaje a la cola) y una vez que todos los suscriptores hayan confirmado la recepcion, el mensaje se borrará.
- [Pagina 11] En la siguiente frase “..un mensaje llegará con el destino a dicha cola de mensajes y el Broker distribuirá dicho mensaje a los suscriptores” ¿Los suscriptores solamente estarán suscriptos a la cola de respuestas no? ¿O también a la cola donde deja el mensaje? En caso de ser esto último lo correcto, el mensaje que un suscriptor envié a la cola, será recibido por todos los suscriptores de esa cola de mensajes ¿Es correcto esto?
Si, solamente estaran suscriptos a la cola de respuesta. Cuando un Team envia un mensaje a la cola especifica, este mensaje sera recibido y atendido por sus suscriptores (proceso GameCard). Una vez que estos respondan, mandaran esa respuesta a la cola de respuesta a la cual estan suscriptos los procesos Teams.
- [Pagina 12] En la siguiente frase “Solo se deberá guardar en la porción de datos el contenido del mensaje dejando el tipo, identificador y demás flags del mismo en estructuras auxiliares.” ¿a qué se refiere con estructuras auxiliares? ¿Otra parte de la memoria?
Se guardara una estructura auxiliar (struct) que contiene los siguientes datos:
- Identificador único del mensaje dentro del sistema.
- El tipo de mensaje (a que cola de mensajes pertenece).
- Los suscriptores a los cuales ya se envió el mensaje.
- Los suscriptores que retornaron el ACK del mismo.
- offset (desde que posicion se debe empezar a leer)
- bytes a leer de dicha memoria.
Y la memoria cache en si, que tendra el contenido del mensaje (para esta memoria se hace un mallo al principio).
Los Teams necesitan tener un trackeo de los mensajes anteriores, le permite saber de antemano informacion que les puede ser util. Por ejemplo: posicion de un pokemon que necesiten para su objetivo (de forma que no mandarian un mensaje).
- [Pagina 18] Al explicar la metadata.bin de los Files (Pokemon), los Blocks serian posiciones dentro del archivo Bitmap.bin?
Bitmap tiene posiciones que nos permite saber si un bloque esta ocupado o no. Para la administracion de disco se usa asignacion en bloques (dividis el disco en bloques). Cada pokemon puede usar uno o mas bloques.
- [Pagina 18]** Debe haber tantos archivos bloques (1.bin, 2.bin, etc) como se hayan definido en el Metadata.bin? que datos contiene estos archivos?**
En el metadata.bin de cada pokemon se guardara los numeros de bloques asociados a ese pokemon. En cada bloque se guardara (en binario) la posicion (x,y) donde se encuentre el pokemon correspondiente y la cantidad de pokemon de esa especie que hay en esa posicion.
- [Pagina 19] Al explicar los archivos Pokemon, las posiciones del pokemon en el ejemplo serian coordenas (x,y)? y el resultado del ejemplo, serian la cantidad de pokemons de ese tipo en esa posición o la cantidad de pokemons total pero de tipos diferentes? Además esas posiciones se guardan en el Metadata.bin o en un archivo a parte dentro del directorio de cada pokemon?
Por ejemplo:
1-1=10 // Se guarda en el bloque 40 1-5=1 // Se guarda en el bloque 21 3-1=2 // Se guarda en el bloque 82 7-6=1000 // Se guarda en el bloque 3
La idea es que cada pokemon no tenga bloques vacios. Tambien puede pasar el caso de:
1-1=1 // Se guarda en el bloque 40 0 // Se guarda en el bloque 21 1-5=1 // Se guarda en el bloque 21
entonces ahi para saber la cantidad de pokemon en la posicios (1,1) tenes que leer dos archivos bloques para saberlo (esto puede pasar si el tamaño del bloque es menor a la linea que queres guardar).
- [Pagina 19] a que se refiere con “La inclusión de una nueva línea o eliminación depende de la recepción de los distintos mensajes desde el Broker.”?
Ejemplo: 1-5=1 alguien pide un pickachu en esa posicion, tenes que descontar en 1 la cantidad luego de atraparlo. Si queda en 0, eliminas esa linea y si te queda un bloque vacio, lo sacas del array de metadata.bin y lo pones como disponible en el bitmap.bin. Si ocurre que al agregar un nuevo pokemon para esa especie no alcanza los bloques existentes (porque estan llenos), se busca un nuevo bloque, te fijas en el Bitmap uno desocupado, luego lo asignas al array del metadata.bin y agregas la linea con la posicion y la cantidad.
- [Pagina 23] cuando menciona una de las formas de comunicación “A través de un socket de escucha en el cual podrá recibir mensajes de apariciones de Pokémon.” Ese mensaje por quien sería enviado? Por la Game boy o esa funciones default que mencionan?
Es por la Gameboy, la cual es un cliente porque envia mensajes (su servidor seria el Team, el GameCard y el Broker).
- [Pagina 25] a que se refiere al momento de que el Team debe informar “Cantidad de cambios de contexto realizados.”? A los cambios de estado que hubo en el equipo en en total?
Cambios de contexto: por ejemplo, en los algoritmos de planificacion Round Robin si ejecutas el proceso, y se queda sin quantum, se cambia un proceso al siguiente (con desalojo). FIFO (sin desalojo) tambien se contabiliza esa cantidad de cambio de contexto al finalizar la ejecucion total del proceso actual. (En el libro de Silver esta la implementacion (una parte) y buscando en internet tambien hay)
- [Pagina 27] cuando menciona “…cada proceso Team deberá tener su propio archivo de Log.” Se refiere a que por cada vez que corremos el proceso Team se deberá crear un archivo log diferente?
Si, y existe una Syscall llamada getpid() para obtener el id del proceso y asi crear el log por cada uno.
- [Pagina 32] Entre las acciones que menciona a loguear está la siguiente:** “Envío de un mensaje a un suscriptor específico.” ¿a quién se refiere como suscriptor? Al proceso Team o Game Card? Es decir que si le llega un mensaje a ellos, debemos loguearlo? **
GameCard y Team serian los suscriptores.
- [Pagina 35] Se menciona que “El proceso Game Boy tambien podra enviar el mensaje de CATCH_POKEMON y CAUGHT_POKEMON al Broker.” Sin embargo, en la imagen solamente muestra que el proceso Game Boy puede enviar el mensaje CAUGHT_POKEMON al Broker ¿esto último es un error no?
Esta bien el texto del parrafo.