Description
Amend your operating system to do contiguous memory allocation. As usual, there are two phases of operation for the program, SysGen and Running. During the SysGen, in addition to all the other information requested, (that is number of printers, CD-RWs and disk units, the history parameter α, etc., the installer (me) should be prompted to specify the total size of memory. All memory sizes are in number of words hence you needn’t worry if we are using an 8 bit word or a 64 bit word. While “running” the Long Term Scheduler (me) signals the arrival of a process by typing an “A” on the keyboard. As before, the program should assign a process id. The OS should prompt the LTS (me) for the size of the process (in words). If the process is larger than the total memory in the system, the OS should reject the process with an appropriate error message. If there is enough total memory, but not enough free memory, the OS should hold the process in a job pool. Processes should be dispatched from this pool on a “largest that will fit” basis. If or when there is enough usable memory for the process the OS should assign it that memory and load the process. All the previous commands should do what they’ve done in the last two HWs. When a “t” signals completion of a job, in addition to sending all the “right” information to the accounting module, the OS should free up the memory used by that job. If there are processes in the job pool that will fit into memory they should be loaded as described above. If there are no processes in the job pool that can fit into an existing hole, but there is a process that would fit if the holes were contiguous, then (and only then) memory should compactified (compacted) and that job loaded. There should never be processes in the job pool if there is sufficient memory to run them. An “S” should display all the information in earlier programs as well as the base and limit values for each process it displays. Remember not to let things scroll off the screen! A new “S” option, “m” should display system memory information, i.e. a list of base and limit values for every process and every hole. When a device request is made, the “starting location in memory” should be read in as an integer representing the logical address. The corresponding physical address should be displayed. Invalid references should be trapped. Email source code and whatever instructions I might need to compile your code. You know what I need and how to package it by now.