Memory manager now keeps track of available blocks and allocate process accordingly
Fix a bug where if you do run 1 run 2 run 3, cpu scheduler would not schedule the next two processes until 1 finishes