Consider a system with fragmented memory. So when the user invokes a malloc(N) there may be a possibility that N consecutive locations can't be allocated. But chunks of memory that adds to N can be allocated. Design a data structure to store this information and write routines for allocating memory given the size, read , write given number of bytes to read etc.