in this program you will be modeling a memory manager in it's task of assigning processes to free spaces in the ram and reclaiming space from programs that have completed. the layout of the memory is to be maintained in a doubly linked list which will represent the ram. each node or cell in the list record information about a process or a hole. it will contain the following information, a). representation of memory layout for either a hole or process node there are 3 fields in each cell of the linked list- id, size, and base address for a process the id is its unique identifier. it is an integer greater than or equal to 0. for a hole the id is -1 for either a process or hole: the size is the amount of ram that a process or hole uses. it is an integer greater than 1. the base address is the location in the ram where a process or hole starts. it is an integer greater than or equal to 0. in addition, while any number of processes can be next to each other in the list, there can only be one hole in between two processes. what this means is that if you had the list: process#1holeprocess#2process#3 and were told to delete process #2, the list should look like this after the deletion: process#1holeprocess#3 so holes must be resized to maintain this requirement.