Short-term roadmap adjustments
The prioritized items for the prototype are as follows:
- remove internal dependency on system malloc()/free()
bmalloc()/bfree() will be built using request_chunk() and merge_nibbles() and glue code.
Compacting requires the four operations bmalloc(), block(), bunlock(), bfree(). handle_t to be introduced.
Internal dependency is for the structures used for the data storage. Supervisor pointed out those are non-important for the prototype and should therefore be left out.
No code will be stored so the actual solutions can be ugly/inefficient, as long as the key concepts are there. Which, in the case of the prototype buddy allocator, is the case.
There are different ways of measuring the efficiency of the allocator and there are many definitions of efficiency (with t=time, n=number of alloc/free so far):
- fragmentation over n
- n before OOM
- n/t, i.e. how long time memory operations take
It's interesting to plot these in the same graph such that design choices that giving trade-offs in time can be compared to e.g. n before OOM, if that is a sought goal.