CS/COE 1550 – Introduction to Operating Systems  
1  
Project 3: Virtual Memory Simulator1  
Due: Monday, April 6th, 2020 @11:59 pm  
Late: Wednesday, April 8st, 2020 @11:59 pm with 10% reduction per late day  
Table of Contents  
PROJECT OVERVIEW .............................................................................................................................................. 2  
PROJECT DETAILS ................................................................................................................................................... 2  
IMPLEMENTATION .......................................................................................................................................................... 3  
IMPORTANT NOTES ........................................................................................................................................................ 3  
WRITE UP .................................................................................................................................................................... 3  
FILE BACKUPS ............................................................................................................................................................... 4  
REQUIREMENTS AND SUBMISSION ........................................................................................................................ 4  
GRADING SHEET/RUBRIC ....................................................................................................................................... 4  
1 Based upon Project 3 of Dr. Misurda's CS 1550 course.  
CS/COE 1550 – Introduction to Operating Systems  
2  
Project Overview  
In class, we have been discussing various page replacement algorithms that an Operating System  
implementer may choose to use. In this project, you will compare the results of three different  
algorithms on traces of memory references. While simulating an algorithm, you will collect statistics  
about its performance, such as the number of page faults that occur and the number of dirty frames  
that had to be written back to disk. When you are done with your program, you will write up your  
results and provide a graph that compares the performance of the various algorithms.  
The three algorithms for this project are:  
OPT – Simulate what the optimal page replacement algorithm would choose if it had perfect  
knowledge  
Least Recently Used (LRU)– Simulate least recently used, whereby you will track when pages  
were last accessed and evict the least recently used page.   
Second Chance Algorithm – Candidate pages are considered for removal in a round robin  
manner, and a page that has been accessed between consecutive page faults will not be evicted.  
The page will be replaced if it has not been accessed since its last consideration. That is, each  
page gets a “second chance” before it is replaced. In the worst case, if the second chance bit is  
set for all pages, the bit is cleared and second chance algorithm degenerates to FIFO.   
You may write your program in C/C++, Java, Perl, or Python as long as it runs on thoth.cs.pitt.edu.  
Implement a page table for a 32-bit address space. All pages will be 4KB in size. The number of frames  
will be a parameter to the execution of your program.  
Project Details  
You will write a program called vmsim that takes the following command line arguments:  
./vmsim –n  -a