Espero me puedan ayudar con este codigo.
Estoy tratando de implementar un administrador de bloques de memoria para un proyecto. La idea es la siguiente.
Tengo un área de memoria de tamaño T. Y tengo 2 comportamientos(funciones). Pedir bloque y liberar bloque.
Pedir bloque aparta un bloque de la memoria de tamaño B y me regresa un objeto con la direccion de este nuevo bloque.
Ahora, el problema está cuando tengo mi memoria con varios bloques libres y otros usados. Mi idea, es que al pedir un nuevo bloque, se use la dirección mínima que tenga suficiente espacio para el bloque.
Para esto implementé una clase en python. Hasta ahora para regresentar mis bloques uso un diccionario:
Código:
Poniendo un ejemplo de como puede quedar:bloques = {0:T}
(0:1), (4:5), (10: 100)
Esto significa: en la direccion 0, tengo un bloque libre, en la direccion 4 tengo 5 bloques y asi sucesivamente.
No encuentro una solución elegante que me permita calcular la dirección mínima que pueda contener el número de bloques que necesito.
Hasta ahora lo que tengo es lo siguiente:
Código:
Esta solucion funciona, pero me parece muy ineficiente tener que pasar un diccionario a una secuencia y luego a una lista para luego tener que ordenarla y finalmente recorrerla .mylist = list(bloques.keys()).sort() for k in mylist: if bloques[k] > tamañoBloque: return k
Me gustaría saber si alguien tiene alguna sugerencia para implementar este algorithmo.
Saludos