hi ,Operating System C++ virtual memory simulatIoN project and i attached the instruction for this project and the previous source code with the inputfile and makefile.
if you need the instruction for project 3 i can send itto youplease let me know ASAP
Operating Systems
Project 4: RUIN– the RU virtual memory simulatIoN
************ comment each line
Description
For this project, you will build upon your job simulator from project 3 to create an executable called RUIN. You will add the ability for the simulator to use virtual memory. Virtual memory is unlimited in this project. A page table will not be used for this project. A job is either in memory or it is not. The Most Recently Used algorithm will be used to determine which job will be switched into virtual memory if the system memory is full when a job is started or when the running job needs memory. The aspect measured by MRU will be the job that has been waiting the shortest amount of time to run. If there is a tie, choose the job that is farther away from the CPU from running. The running job can never be swapped to disk.
When a job is added to the system it is allocated memory. This means that VM may be allocated before the first time unit has been executed in the simulation.
When a job’s memory is stored on disk, it is required to fetch its contents in 2 time units before it can execute. This time is subtracted from the burst size which is guaranteed to be at least 2 in this project. Note: this may cause another job to swap its memory to disk.
A program must fit in memory to run, if it uses more memory than the system has available it cannot be added to the run queue.
Output for the RUIN shell commands
The major commands for output are step and run from the previous project. You should add whether or not a job is in memory to your output.
Sample usage scenario (on an empty binary file called sample.bin)
./RUIN sample.bin
EnterCommand>setMemory 2
EnterCommand>addProgram first 3 1
EnterCommand>addProgram second 3 1
EnterCommand>addProgram third 3 1
EnterCommand>start first
EnterCommand>start second
EnterCommand>start third
EnterCommand>setBurst 3
EnterCommand>run
Advancing the system until all jobs finished
Current time
Running job first has 3 time left and is using 1 memory resources.
The queue is:
Position 1: job second has 3 units left and is using 1 resource on disk.
Position 2: job third has 3 units left and is using 1 memory resources.
Current time
Running job second has 3 time left and is using 1 resource on disk.
The queue is:
Position 1: job third has 3 units left and is using 1 memory resources.
Finished jobs are:
first 3 3
Current time
Running job third has 3 time left and is using 1 memory resources.
The queue is:
Position 1: job second has 2 units left and is using 1 memory resources.
Finished jobs are:
first 3 3
Current time
Running job second has 2 time left and is using 1 memory resources. The queue is: empty Finished jobs are:
first 3 3 third 3 9
Current time
Running job is empty
The queue is: empty Finished jobs are:
first 3 3
third 3 9 second 3 11
Note: your code must account for extraneous spaces or newlines. If it does not handle these input cases, a grade deduction will be made. Your program will be tested by inputting the commands listed earlier into a file, then redirected into your program via ./NAME <> If your program does not work in this manner, you will not receive a passing grade on the project.
Submission requirements:
Include all of your files in a directory named project4 along with a Makefile that can build your program and produce the RUIN executable.
I use auto-grading on these assignments. If your assignment does not follow them you will receive 0 on the assignment.
Rubric
.
Runtime:
To get a C on your submission it must take the input from the specification and produce the output from the specification (albeit it cannot be hardcoded).
To get a B on your submission it must produce correct output for at least ½ of the additional test cases I will use on your program.
To get an A on your submission it must produce correct output for all of the additional test cases I will use on your program.
Design:
Can lower your grade by one letter. Deductions are made for choices such as all of your code in one function. Use what you have learned from previous courses and you should have no issues with this deduction.
Comments:
Can lower your grade by one letter if your submission doesn’t contain
comments on:
Variables – purpose, type, scope
Function headers (purpose, parameters, return type, called by / calls)
Explanation for blocks of code (inline comments)
Readme file for program containing name, what it is, how to use it.
Header for every source file containing purpose and functions / classes contained / where to start looking.
“