In this project you will implement a memory management library called smemlib.a.
Processes will use your library to allocate memory space dynamically, instead of using the
well-known malloc function. A shared memory object, i.e., a shared memory segment,
needs to be created first. Your library will manage that memory segment. Memory space
allocations will be made from that segment to the requesting processes. Your library will
implement the necessary initialization, allocation and deallocation routines. Your library will
keep track of the allocated and free spaces in the memory segment. For that it can use the
hole-list approach together with the first-fit, best-fit, or worst-fit strategy.