The following is to be programmed in the C programming language:
The possible memory management schemes that can be simulated are fixed partitions, variable partitions, a type of paged virtual system or a segmentation system. Depending on the memory management scheme used, the program will have to do various types of initialization of main memory.
The details of each job are the input to the program. These details can be read in from a data file or generated randomly within the program. In either case, the simulation of the jobs arriving MUST include a time aspect. In other words, as the program executes time will increase within the program. The job details must include as a minimum, a job identification, amount of memory required, arrival time and execution time.
The program will need to simulate the arrival of jobs to one or more queues for the memory management scheme to allocate into main memory. The method of simulation needs to be designed. The information kept about each job must be considered, as the management scheme is not necessarily first in first out. In particular, the amount of memory the job will use, will need to be considered.
The output from the program will be screen based and will show the contents of the queues at any given time and a main memory map of all jobs currently allocated to main memory. As new jobs arrive, the queue will be updated and redisplayed. When a job is allocated memory space the queue and the memory map should be redisplayed.
Remember that this is a simulation only. Therefore the jobs themselves do not exist, only the fictitious details of these jobs. The program does not have to execute the jobs, but it must display a map of main memory showing all jobs at any particular time.
With the exception of (perhaps) a few initial settings by the user, there is to be no keyboard input and no menus of any kind are to be used. When the program executes, it should be just a matter of simply watching the screen display change as time increases. The screen display will need to be designed in such a way that the user can determine what is happening and no interaction should be necessary. The one exception is that it is permissible to press at the end of each unit of time.