Implementación - SergioRiosC/Proyecto-I-SergioRiosC-Proyecto-1-VSCode-Memory-Manager GitHub Wiki

Descripción de las estructuras de datos desarrolladas

Lista enlazada

Estructura de datos que permite almacenar nodos, los cuales tendrán referencia a los nodos siguiente y anterior, además posee nodos que hacen referencia al primer nodo de la lista(head) y el ultimo nodo de la lista(tail). Esta lista almacena la información de las variables VSPtr.

Nodo

Estructura de datos que puede almacenar datos como, espacio de memoria, id, cantidad referencias. Además de tener referencias al nodo anterior y siguiente.

VSPtr

Estructura de datos que almacena un dato y su id. Esta es utilizada para gestionar la memoria mediante un garbage collector.

Descripción de algoritmos desarrollados

Garbage Collector

En el Garbage Collector(GC), como en cualquier otro GC, se implementa el conteo de referencias, cada vez que se cree o se instancie un dato, se llama al GC y este aumenta el conteo de referencias de este, en el caso contrario, también se llama al GC pero esta vez para restarle a la lista de referencias del dato. En caso de que las referencias de un dato sean -1, es decir, que ya un dato no se esté usando, el Garbage Collector libera el espacio que ocupaba el dato y lo deja disponible al usuario. Este proceso se ejecuta como un thread cada segundo.

Se utilizaron listas enlazadas para almacenar los datos tipo VSPtr y de estas listas facilitar el paso al archivo JSON. cada tipo de dato (int,float,long,char,str) tiene su propia lista enlazada. En la lista, cada nodo guarda un dato, con información del tipo y el id del dato, para que sea más sencillo obtener información de los nodos, están las funciones gettersy setters

Servidor

Para este algoritmo, se utilizaron Sockets, donde la biblioteca actúa como Cliente y el Servidor, contiene todas las funcionalidades requeridas, como remote memory y garbage collector.