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 otroGC
, se implementa el conteo de referencias, cada vez que se cree o se instancie un dato, se llama alGC
y este aumenta el conteo de referencias de este, en el caso contrario, también se llama alGC
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, elGarbage 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 archivoJSON
. 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 funcionesgetters
ysetters
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.